關于MySQL 優化的一些操作

1.緩存池

MySQL的設計是通過緩存池的方式的,也就是說將一部分的數據都儲存到內存中,當我們查找一個數據的時候,如果發現在緩存池中的時候,就能夠直接的
從緩存中獲取,如果不在的話,那么就去磁盤中加載.所以建議數據庫服務器采用64位的操作系統,這樣就能夠使用很大的內存。下面的一些參數是設置內存池
的:

SHOW?VARIABLES?LIKE?"innodb_buffer_pool_instances"

查看緩存池的個數,可以通過globle 或者直接在配置文件中進行設置。

show?VARIABLES?like?"innodb_buffer_pool_size"

查看每個緩存池的大小,配置文件出來的是字節。

需要注意,這個設置要考慮到自身服務器的能力.

為了驗證緩存的命中率,可以通過

SHOW?ENGINE?INNODB?STATUS

其中有一行輸出非常重要,可以看出命中率:

Buffer?pool?hit?rate?1000?/?1000

表示的就是緩存的命中率,一般不能低于95%

2.LRU 列表

數據中緩存中是通過LRU的方式儲存中,也就是說查詢的最新數據是放在最前面的,也就是說是熱點數據,但是這個LRU算法有一些變種,具體的就是每次

查詢出來的數據并不是插入到最前面的位置,而是插入到中間,這個位置成為midpoint,默認的位置是3/5的位置,這樣做的原因是防止一些掃表的操作將

數據全部給刷新出去,有幾個參數可以進行設置

SHOW?VARIABLES?LIKE?"innodb_old_blocks_pct"

表示的就是midpoint的位置,默認的是:

關于MySQL 優化的一些操作,大概就是3/5吧

還有一個參數是

SHOW?VARIABLES?LIKE?"innodb_old_blocks_time"

也就是數據插入到midpoint的時候,需要多久才起效。

如果在真實的環境中遇到熱點數據比較集中的情況下,可以通過設置LRU的參數來防止熱點數據被刷出

? 版權聲明
THE END
喜歡就支持一下吧
點贊5 分享