【MySQL引數優化】根據架構優化
阿新 • • 發佈:2018-12-09
根據MySQL的架構優化
引數調整的最終效果:
1)SQL執行速度足夠快
2)業務吞吐量足夠高:TPS,QPS
3)系統負載可控,合理:cpu,io負載
在調整引數的時候,應該熟悉mysql的體系架構,可以根據體系架構分快進行引數調整。
主要方面:記憶體,執行緒,磁碟檔案,各級快取
記憶體
一.通過配置緩衝池的各個方面來提高效能
buffer_pool配置
innodb_buffer_pool_size
- 預設值:128M ,一般調整為實體記憶體的50%-80%
- 含義:innodb快取池大小
緩衝池調整進度監控
SHOW STATUS WHEREVariable_name='InnoDB_buffer_pool_resize_status';
或者通過錯誤日誌中也可以看到
innodb_buffer_pool_instances
劃分多個instance可以減少lru list,free list 和flush list 等的長度,減少快取的爭用,當較多資料載入到記憶體時, 使用多快取例項能減少快取爭用情況,innodb_buffer_pool_size 大於 1GB 時, innodb_buffer_pool_instances 預設為 8。如有更多buffer pool, 平均每個instances 至少1GB。
innodb_buffer_pool_chunk_size
- 預設值為
128M
- 含義:https://www.cnblogs.com/asea123/p/10089910.html
- 動態調整buffer_pool時的塊的大小。避免在調整大小操作期間複製所有緩衝池頁面,操作以“ 塊 ”執行 。預設情況下,
innodb_buffer_pool_chunk_size
為128MB(134217728位元組)。塊中包含的頁數取決於的值innodb_page_size
。innodb_buffer_pool_chunk_size
可以以1MB(1048576位元組)為單位增加或減少。
注意:塊數( innodb_buffer_pool_size
/ innodb_buffer_pool_chunk_size
)不應超過1000。更改時應小心 innodb_buffer_pool_chunk_size
,因為更改此值可以自動增加緩衝池的大小。在更改之前 innodb_buffer_pool_chunk_size
,請計算它將產生的影響, innodb_buffer_pool_size
以確保生成的緩衝池大小可以接受
innodb_flush_method
參考值:O_DIRECT
寫資料的時候繞過檔案系統快取,直接寫入資料檔案中
引數含義:https://www.cnblogs.com/asea123/p/10089763.html
innodb_read_ahead_threshold