您可以根據業務情況調整RDS MySQL執行個體的innodb_buffer_pool_size大小,以便提升執行個體效能。
前提條件
執行個體系列如下:
RDS MySQL高可用系列
RDS MySQL基礎系列
RDS MySQL叢集系列
應用限制
RDS MySQL Serverless執行個體不支援手動修改innodb_buffer_pool_size參數,執行個體會根據規格變化自動調整InnoDB Buffer Pool的大小。
InnoDB Buffer Pool大小
RDS執行個體可以通過參數innodb_buffer_pool_size來調整InnoDB Buffer Pool的大小,當前僅支援通過公式進行修改。公式如下:
{DBInstanceClassMemory*X/Y}
樣本
{DBInstanceClassMemory*7/10}
DBInstanceClassMemory為RDS執行個體規格記憶體系統變數。
X、Y為分子和分母。
可調整範圍為:[128MB, DBInstanceClassMemory * 8 / 10],即最小調整到128 MB,最大調整到RDS執行個體規格記憶體的80%。
RDS執行個體預設InnoDB Buffer Pool大小如下:
如果RDS執行個體為雲端硬碟版通用規格,或RDS執行個體為本地SSD盤,預設
InnoDB Buffer Pool = RDS執行個體規格記憶體 * 3 / 4
。如果RDS執行個體為雲端硬碟版獨享規格,預設
InnoDB Buffer Pool = (RDS執行個體規格記憶體 - RDS系統預留記憶體)* 3 / 4
。說明雲端硬碟版獨享規格中的RDS系統預留記憶體計算公式如下(單位為MB):
MIN(RDS執行個體規格記憶體 / 2, 2048) + MAX(RDS執行個體規格CPU * 64, RDS執行個體規格記憶體 / 64) + (RDS執行個體規格記憶體 / 64) + 285
Buffer Pool的預設值是128的整數倍,如果計算出的結果非128的整數倍,則取近似值。如:1024MB記憶體的預設Buffer Pool計算結果為268,其最接近128整數倍的值為256,則1024MB記憶體的預設Buffer Pool為256MB。
為方便您設定,下表中提供了雲端硬碟版獨享規格對應的預設Buffer Pool和推薦最大Buffer Pool。
執行個體CPU核心數 | 執行個體記憶體大小(單位:MB) | 預設Buffer Pool(單位:MB) | 推薦最大Buffer Pool(單位:MB) |
2 | 4096 | 1024 | 1024 |
2 | 8192 | 4096 | 4096 |
2 | 16384 | 9216 | 10240 |
4 | 8192 | 4096 | 4096 |
4 | 16384 | 9216 | 10240 |
4 | 32768 | 21504 | 22528 |
8 | 16384 | 9216 | 10240 |
8 | 32768 | 21504 | 22528 |
8 | 65536 | 45056 | 48128 |
12 | 24576 | 15360 | 16384 |
12 | 49152 | 33792 | 35840 |
12 | 98304 | 69632 | 73728 |
16 | 32768 | 21504 | 22528 |
16 | 65536 | 45056 | 48128 |
16 | 131072 | 93184 | 99328 |
24 | 49152 | 32768 | 34816 |
24 | 98304 | 69632 | 73728 |
24 | 196608 | 140288 | 149504 |
32 | 65536 | 45056 | 47104 |
32 | 131072 | 93184 | 99328 |
32 | 262144 | 188416 | 200704 |
52 | 98304 | 67584 | 72704 |
52 | 196608 | 140288 | 149504 |
52 | 393216 | 283648 | 302080 |
64 | 262144 | 188416 | 200704 |
64 | 524288 | 378880 | 403456 |
102 | 786432 | 569344 | 607232 |
104 | 196608 | 138240 | 147456 |
104 | 393216 | 282624 | 302080 |
InnoDB Buffer Pool大小始終為innodb_buffer_pool_chunk_size * innodb_buffer_pool_instances
的倍數,如果不為倍數關係時,會自動修改為倍數關係。例如innodb_buffer_pool_chunk_size * innodb_buffer_pool_instances
= 1 GB,如果將innodb_buffer_pool_size設定為1.5 GB,系統會自動修改innodb_buffer_pool_size為2 GB。
調整單個執行個體的InnoDB Buffer Pool大小
- 訪問RDS執行個體列表,在上方選擇地區,然後單擊目標執行個體ID。
在左側導覽列單擊參數設定。
找到參數innodb_buffer_pool_size,單擊右側進行修改,然後單擊確定。
單擊提交參數,在彈出的提示框中單擊確定。
說明RDS MySQL 5.6的innodb_buffer_pool_size參數修改需要重啟,RDS MySQL5.7和8.0則不需要重啟。
使用模板調整InnoDB Buffer Pool大小
您可以建立參數模板修改innodb_buffer_pool_size,然後應用到需要修改的執行個體。如果已有模板,可以修改模板後應用到需要修改的執行個體。詳情請參見使用參數模板。