【操作系统】聊聊局部性原理是如何提升性能的

对于目前数据主导的系统,大多数都是Java/Go 技术栈+MySQL,但是随着时间的推移,数据库数据的数据量过多,并且会频繁访问热点数据,为了提升系统的性能,一般都是加入缓存中间件、Redis。
【操作系统】聊聊局部性原理是如何提升性能的_第1张图片

局部性原理

【操作系统】聊聊局部性原理是如何提升性能的_第2张图片
我们知道在CPU中为了提升CPU执行速度,避免从内存获取数据过慢,所以就会引入一二三级缓存,三级缓存对于所有核是共享,一二级是独享的。

【操作系统】聊聊局部性原理是如何提升性能的_第3张图片
而从途中可以看到,从l1 Cache到Disk 价格是越来越便宜,但是存储空间越来越大,但是访问速度越来越慢。
那么可不可以找到一种方案就是用更便宜的存储器来提升速度。业界就是采用局部性原理。
局部性原理分为两个,一个是时间局部性,另一个是空间局部性。

  • 时间局部性:同一份数据在短时间内回被访问多次。
  • 空间局部性:相邻的数据会被连续访问。

这样就可以将频繁访问的数据放入速度更快的cache中,而剩余数据存储在廉价的磁盘中。
这样就没有问题了嘛,其实缓存的引入虽然可以提升系统读性能。但是也引入以下几个问题

  • 数据淘汰策略 -> LRU
  • 缓存命中率
  • 缓存失效、缓存更新,数据一致性问题等。

所以本质上,通过引入缓存是通过牺牲数据强一致性来提升性能的。

小结

本篇主要简单介绍来以下时间局部性,为了在成本和性能之间权衡,引入时间局部性原理,将热点数据存储在速度更快的存储设备中,提升整体的性能。但是缓存的引入需要考虑几点,缓存的高可用性(副本、分片机制),缓存命中率、缓存淘汰算法、缓存更新、缓存失效。

你可能感兴趣的:(#,操作系统,#,性能调优,#,高性能架构,操作系统)