每日一參數--innodb_old_blocks_pct、innodb_old_blocks_time理解

innodb緩存池有2個區域一個是sublist of old blocks存放不經常被訪問到的數據,另外一個是sublist of new blocks存放經常被訪問到的數據

innodb_old_blocks_pct參數是控制進入到sublist of old blocks區域的數量,初始化默認是37.

innodb_old_blocks_time參數是在訪問到sublist of old blocks裏面數據的時候控制數據不立即轉移到sublist of new blocks區域,而是在多少微秒之後纔會真正進入到new區域,這也是防止new區域裏面的數據不會立即被踢出。


所以就有2種情況:

1、如果在業務中做了大量的全表掃描,那麼你就可以將innodb_old_blocks_pct設置減小,增到innodb_old_blocks_time的時間,不讓這些無用的查詢數據進入old區域,儘量不讓緩存再new區域的有用的數據被立即刷掉。(這也是治標的方法,大量全表掃描就要優化sql和表索引結構了)

2、如果在業務中沒有做大量的全表掃描,那麼你就可以將innodb_old_blocks_pct增大,減小innodb_old_blocks_time的時間,讓有用的查詢緩存數據儘量緩存在innodb_buffer_pool_size中,減小磁盤io,提高性能。

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