1. 程式人生 > >【MySQL引數優化】根據架構優化

【MySQL引數優化】根據架構優化

根據MySQL的架構優化

引數調整的最終效果:

1)SQL執行速度足夠快

2)業務吞吐量足夠高:TPS,QPS

3)系統負載可控,合理:cpu,io負載

在調整引數的時候,應該熟悉mysql的體系架構,可以根據體系架構分快進行引數調整。

主要方面:記憶體,執行緒,磁碟檔案,各級快取

記憶體

一.通過配置緩衝池的各個方面來提高效能

buffer_pool配置

innodb_buffer_pool_size

  • 預設值:128M  ,一般調整為實體記憶體的50%-80%
  • 含義:innodb快取池大小

緩衝池調整進度監控

SHOW STATUS WHERE
Variable_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_sizeinnodb_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