Mysql

關於緩衝池實例的大小和數量是否有經驗法則?

  • April 3, 2014

我知道共識似乎是大約 75% 的 ram 應該專用於緩衝池。但是,我對緩衝池實例的最佳數量更感興趣。確定設置時需要考慮哪些事項?

例如,假設我有一個 75GB 的緩衝池。我是否應該只分配 75 個緩衝池實例,每個實例 1GB?15 個,每個 5GB?或者,10 個,每個 7.5GB?

我是否應該從單個緩衝池開始並根據我是否看到鎖定來增加?

最大實例數應該基於多少 - 可用核心?

謝謝 - 非常感謝您的回复。

緩衝池實例

我通常使用的經驗法則是基於Linux環境中的一個特殊程序

numactl --hardware

當我執行它時,我得到以下輸出

sh-4.1# numactl --hardware
available: 4 nodes (0-3)
node 0 cpus: 0 1 2 3
node 0 size: 49151 MB
node 0 free: 241 MB
node 1 cpus: 4 5 6 7
node 1 size: 32768 MB
node 1 free: 39 MB
node 2 cpus: 8 9 10 11
node 2 size: 49152 MB
node 2 free: 49 MB
node 3 cpus: 12 13 14 15
node 3 size: 32752 MB
node 3 free: 32 MB
node distances:
node   0   1   2   3
 0:  10  16  16  16
 1:  16  10  16  16
 2:  16  16  10  16
 3:  16  16  16  10

這很快告訴我我的數據庫伺服器上有多少 CPU 和核心。

一般來說,我將innodb_buffer_pool_instances設置為物理 CPU 的數量或核心的數量。特別是,我將innodb_buffer_pool_instances設置為 4 或 16。

緩衝池大小

如果您使 InnoDB 緩衝池大於已安裝 RAM 的 50%,則 mysqld 會導致作業系統開始交換……糟糕!!!!如果你需要一個那麼大的緩衝池,那麼調整innodb_buffer_pool_instances就變得更加關鍵。

結語

在第一次引入innodb_buffer_pool_instances後,我立即進行了實驗。我有一個客戶端,它有 192GB 數據庫伺服器,雙六核和 162GB 緩衝池。我只是將其設置為 2,一切正常。請參閱我在 2011 年 2 月 12 日發布的舊文章:如何調整 MySQL 以應對繁重的 InnoDB 工作負載?

試一試 !!!

引用自:https://dba.stackexchange.com/questions/62411