2021-04-05閱讀小筆記:局部性原理

原文鏈接:2021-04-05閱讀小筆記:局部性原理

1 指導解決併發問題的兩大原理

有兩個理論可以指導我們處理高併發的問題:阿姆達爾定律和局部性定律。

1.1 阿姆達爾定律:

在並行計算中用多處理器的應用加速受限於程序所需的串行時間百分比

1.2 局部性原理:

局部性原理分爲時間局部性和空間局部性,所謂時間局部性指的是如果一個信息正在被訪問,那麼在短期內它有可能會被再次訪問;所謂空間局部性指的是如果一個信息正在被訪問,那麼與它存錯位置相近的信息也可能馬上會被訪問。

2 局部性原理的案例

2.1 時間局部性:

我們一般會利用本地緩存,例如EhCache、GuavaCache等、分佈式緩存,例如Redis、MemCache等將信息緩存起來;當下一次訪問,就可以直接存緩存中讀取,而不用走DB,從而提升了查詢的速度。但是這個等於用空間換時間,查詢時間快了,但是增加了存儲內存的使用。

2.2 空間局部性:

MySQL 爲了提高性能,提供了一個機制:預讀機制。
當你從磁盤上加載一個數據頁的時候,他可能會連帶着把這個數據頁相鄰的其他數據頁,也加載到緩存裏去。當我們查詢到其他數據頁的數據時,就可以直接從BufferPool裏面讀取,而不用到磁盤裏面讀取了,從而提升了查詢的速度,但是這個其實也是用空間換時間。

這個機制會帶來這麼一個問題:連帶的數據頁可能在後面的查詢或者修改中,並不會用到,但是它們卻在 lru 鏈表的頭部。InnoDB 存儲引擎就是利用冷熱數據分離方案來解決上面的問題:將 lru 鏈表分爲兩部分,一部分是熱數據區域鏈表,一部分是冷數據區域鏈表。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章