全部產品
Search
文件中心

ApsaraDB RDS:調整執行個體Buffer Pool大小

更新時間:May 28, 2025

innodb_buffer_pool_size用於設定InnoDB緩衝池的大小。您可以根據業務需求調整RDS MySQL執行個體的innodb_buffer_pool_size,以提升執行個體效能。

前提條件

執行個體系列如下:

  • RDS MySQL高可用系列

  • RDS MySQL基礎系列

  • RDS MySQL叢集系列

應用限制

  • RDS MySQL Serverless執行個體不支援手動修改innodb_buffer_pool_size參數,執行個體會根據規格變化自動調整InnoDB Buffer Pool的大小。

  • 若RDS MySQL執行個體的innodb_buffer_pool_size參數設定過大,可能導致記憶體溢出(OOM)並觸發主備切換,建議按本文推薦的最大Buffer Pool值進行配置。

應用情境

在日常使用中,除了記憶體有限的情況下,建議增大該參數,以最佳化資料庫效能。

  • 增大:在伺服器記憶體充足的情況下,增大innodb_buffer_pool_size可以有效減少磁碟I/O輸送量。如果查詢的資料能夠完全或大部分儲存在記憶體中,CPU便不需要頻繁等待磁碟I/O,從而有助於降低CPU的使用率。例如,對於頻繁執行的UPDATE類型語句,較大的緩衝池能夠減少對磁碟的依賴,減輕行鎖等待,進而提高MySQL處理資料更新的效率,尤其是在更新的記錄較多時。

  • 減小:在記憶體資源有限,或者有其他應用對記憶體需求較高的情況下,可以減小innodb_buffer_pool_size參數值。

InnoDB Buffer Pool大小

RDS執行個體可以通過參數innodb_buffer_pool_size來調整InnoDB Buffer Pool的大小,當前僅支援通過公式進行修改。公式如下:

{DBInstanceClassMemory*X/Y}
# 樣本:{DBInstanceClassMemory*7/10}
說明
  • DBInstanceClassMemory為RDS執行個體規格記憶體(系統變數),X/Y表示Buffer Pool大小占執行個體記憶體的比例。

  • 可調整範圍為:[128 MB, DBInstanceClassMemory * 9 / 10],即最小調整到128 MB,最大調整到RDS執行個體規格記憶體的90%。

InnoDB Buffer Pool大小預設值

高效能本地碟執行個體

以下規格Buffer Pool大小預設值為執行個體記憶體的80%~90%,其他規格預設值為執行個體記憶體的75%執行個體記憶體 * 3 / 4)。

規格類型系列

規格碼

CPU與記憶體

預設值(MB)及其占執行個體記憶體比例

通用型

rds.mysql.s3.large

4核 8GB

7372(90%)

rds.mysql.m1.medium

4核 16GB

14745(90%)

rds.mysql.c1.large

8核 16GB

13107(80%)

rds.mysql.c1.xlarge

8核 32GB

27852(85%)

rds.mysql.c2.xlarge

16核 64GB

52428(80%)

rds.mysql.c2.xlp2

16核 96GB

78643(80%)

獨享型

mysql.x4.large.2

4核 16GB

14745(90%)

mysql.x8.large.2

4核 32GB

29491(90%)

mysql.x4.xlarge.2

8核 32GB

27852(85%)

mysql.x8.xlarge.2

8核 64GB

55705(85%)

mysql.x4.2xlarge.2

16核 64GB

52428(80%)

mysql.x8.2xlarge.2

16核 128GB

104857(80%)

雲端硬碟執行個體

通用型規格

Buffer Pool大小預設值為執行個體記憶體的75%(執行個體記憶體 * 3 / 4)。

獨享型規格

  • Buffer Pool大小預設值:(執行個體記憶體 - 系統預留記憶體) * 3 / 4

  • 系統預留記憶體計算公式為:min{執行個體記憶體 / 2, 2048} + max{執行個體CPU * 64, 執行個體記憶體 / 64} + (執行個體記憶體 / 64) + 285,執行個體記憶體單位取MB

為方便您設定,下表提供了獨享型規格執行個體對應的預設Buffer Pool和推薦最大Buffer Pool

執行個體CPU核心數

執行個體記憶體(MB)

Buffer Pool大小

預設值(MB)

推薦值(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固定為32 MB,較早期建立的執行個體可能為128 MB。

  • 當使用者佈建的innodb_buffer_pool_size值不為倍數關係時,系統會自動向上取整到最近的整數倍值。

例如:當innodb_buffer_pool_chunk_size為1 GB且innodb_buffer_pool_instances為1時,若將innodb_buffer_pool_size設定為1.5 GB,實際會調整為2 GB。

調整單個執行個體的InnoDB Buffer Pool大小

  1. 訪問RDS執行個體列表,在上方選擇地區,然後單擊目標執行個體ID。

  2. 在左側導覽列單擊參數設定

  3. 找到參數innodb_buffer_pool_size,單擊右側修改進行修改,然後單擊確定

  4. 單擊提交參數,在彈出的提示框中單擊確定

    說明

    RDS MySQL 5.6的innodb_buffer_pool_size參數修改需要重啟,RDS MySQL5.7和8.0則不需要重啟。

使用模板調整InnoDB Buffer Pool大小

您可以建立參數模板修改innodb_buffer_pool_size,然後應用到需要修改的執行個體。如果已有模板,可以修改模板後應用到需要修改的執行個體。詳情請參見使用參數模板

參數模板修改

相關文檔

您也可以根據執行個體的監控資訊慢日誌分析,分析並處理RDS MySQL記憶體使用量問題