官方文檔位址:https://help.aliyun.com/product/26090.html?spm=5176.7920929.1290474.7.2c6f4f7bACaToi
官方文檔位址:https://files.cnblogs.com/files/sanduzxcvbnm/RDS_MySQL_資料庫_cn_zh-CN.pdf
記憶體的規格會決定該執行個體的性能。
您可以根據業務情況調整RDS MySQL執行個體的innodb_buffer_pool_size大小,以便提升執行個體性能。
背景資訊
RDS MySQL執行個體的記憶體主要用于以下幾個方面:
- mysqld服務。主要是緩存(InnoDB Buffer Pool)占用記憶體,InnoDB Buffer Pool大小由參數innodb_buffer_pool_size指定。
- RDS相關管理服務。
- 底層作業系統。
本地SSD盤
執行個體規格記憶體 = mysqld服務記憶體
對于RDS MySQL本地SSD盤執行個體,執行個體規格記憶體即為mysqld服務可占用記憶體,主要包括InnoDB Buffer Pool占用記憶體和MySQL其他服務占用記憶體(如會話連接配接占用記憶體)。本地SSD盤執行個體會在實體機内通過資源隔離實作多執行個體部署,故RDS相關管理服務和底層作業系統占用的記憶體沒有計算在RDS執行個體規格的記憶體中。
雲盤(SSD雲盤或ESSD雲盤)
執行個體規格記憶體 = mysqld服務記憶體 + RDS相關管理服務記憶體 + 底層作業系統記憶體
對于RDS MySQL雲盤執行個體,執行個體規格記憶體包含上述3個部分,因為雲盤執行個體是獨立部署于不同的ECS執行個體中,是以需要劃分對應的記憶體用于運作RDS相關管理服務和底層作業系統。
底層作業系統一般會占用500~700MB記憶體,RDS相關管理服務約占用500MB記憶體。
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 ],即最小調整到128MB,最大調整到RDS執行個體規格記憶體的80%。
RDS執行個體預設InnoDB Buffer Pool大小如下:
- 如果RDS雲盤執行個體規格記憶體<16GB,預設InnoDB Buffer Pool = (RDS執行個體規格記憶體 - RDS相關管理服務記憶體 - 底層作業系統記憶體)* 0.7。
- 如果RDS雲盤執行個體規格記憶體 ≥ 16GB,或RDS執行個體為本地SSD盤,預設InnoDB Buffer Pool = RDS執行個體規格記憶體 * 0.7。
為了保障執行個體穩定性,對于1核1GB、1核2GB等小規格執行個體,innodb_buffer_pool_size預設設定為256MB。
InnoDB Buffer Pool大小始終為
innodb_buffer_pool_chunk_size * innodb_buffer_pool_instances
的倍數,如果不為倍數關系時,會自動修改為倍數關系。例如
innodb_buffer_pool_chunk_size * innodb_buffer_pool_instances
=1GB,如果将innodb_buffer_pool_size設定為1.5GB,系統會自動修改innodb_buffer_pool_size為2GB。
警告 修改 innodb_buffer_pool_size會重新開機執行個體,請謹慎操作。