局部性原理

2020-02-13  本文已影响0人  摸摸脸上的胡渣

本篇文章并非简单的介绍OS中的局部性原理,而是还要结合数据库和 OS cache架构谈谈局部性原理,对这两个架构概念的积极影响,如果已经猜到我要讲的内容,可以帮我看下是否有缺漏,希望在评论区见到不同的声音。

局部性原理

CPU在处理数据的过程中, 常见情况下是会进行连续数据的处理。
比如处理了0x00001到0x0000F数据,那么接下来大概率要处理以0x0000F作为起始地址的数据。

局部性原理对数据库架构的影响

传统关系型数据库的数据,一般存储在硬盘中,需要进行随机IO寻址,比较耗费时间。所以在从硬盘中获取数据时,一般会以page为单位进行数据的获取,一次获取,就可以满足数据库引擎的多次处理,减少了多次硬盘级别IO的处理,提升了处理的效率。
这也是为什么MySQL InnoDB引擎底层索引选择B+,而不是红黑树。B+会把叶子节点的大小设置为一个page大小,这样子就会一次性读出很多数据供server处理。而红黑树不仅初度小,层级深,更要命的是逻辑上临近的数据,在存储时可能相离很远,局部性原理排不上用场,所以被pass。

局部性原理对OS缓存架构的影响

不同材料的存储介质,价钱相差很多,虽然我们要在2020年实现小康梦,但也不能把所有存储介质都换成寄存器,可以实现但没必要。
因为局部性原理的存在,可以让不同level的缓存进行数据的预读,尽可能的去压榨cpu的算力。

上一篇下一篇

猜你喜欢

热点阅读