MYSQL基礎 引數調優 4 常見的快取調優引數

2021-09-13 00:01:36 字數 3207 閱讀 6650

這篇文章整理一下快取相關常用的調優引數,並給出建議。

此引數一起設定了臨時表的最大值。臨時表是mysql用於儲存中間結果,很多操作比如union/子查詢/join/not in/exist以及複雜的group by和order by都可能會使用到臨時表。僅在當前連線可見,當連線關閉時會自動釋放,另外在使用的時候也是按需進行分配。而臨時表的儲存也可以通過internal_tmp_disk_storage_engine來進行控制,在5.7.6之後預設使用innodb作為儲存引擎,之前為myisam。臨時表可能會儲存在記憶體或者磁碟上,自然,根據其所使用的是磁碟還是記憶體會有不同的效能。當max_heap_table_size超過tmp_table_size時,超過的部分可能會轉化為基於磁碟的儲存方式。

設定方式與優化準則

可根據如下引數的現狀進行判斷是否需要優化:

created_tmp_disk_tables表示使用到的磁碟臨時表的數量。所以可根據created_tmp_disk_tables/created_tmp_tables的比例進行判斷:

建議設定:

thumb rule:預設此兩項值被設定為16m,稍小。建議調節為:

tmp_table_size:512m

max_heap_table_size:256m

key_buffer_size是乙個重要的引數,是使用myisam儲存引擎的關鍵引數之一,用於設定索引快取的大小,為所有執行緒共享。

設定方式與優化準則

可根據如下引數的現狀進行判斷是否需要優化:

設定方式與優化準則

thumb rule:預設設定為8m過小,可根據資源狀況設定為512m或者1g

此引數用於控制當連線數達到max_connections時,有多少連線可以暫時放在堆疊之中,等待當前連線的資源釋放。

設定方式與優化準則

可根據如下引數的現狀進行判斷是否需要優化:

設定方式與優化準則

/proc/sys/net/ipv4/tcp_max_syn_backlog: 預設是1024

[root@liumiaocn tmp]

# cat /proc/sys/net/ipv4/tcp_max_syn_backlog

1024

[root@liumiaocn tmp]

#

首先,借用一張網路的整理來表現一下快取的設定。可以看到,read_buffer_size屬於連線級別的快取設定。

read_buffer_size是讀入緩衝區的大小,根據percona以前的實驗結果,read_buffer_size的設定並不會引起效能的較大差別,差別都在10%之內。

設定方式與優化準則

thumb rule:預設值1/8m,建議稍微調大,由於是connection級別的調整,不要過大。建議1m

read_buffer_size是隨機緩衝區的大小,在排序查詢時mysql首先確認的部分。

設定方式與優化準則

thumb rule:預設值1/4m,建議稍微調大,由於是connection級別的調整,不要過大。建議1m

thread_cache_size表示客戶斷開連線後所放置的執行緒緩衝。此引數對於效能調優效果也不是很明顯。

thumb rule:預設值為9。建議稍微調大,經驗值可設定為64

mysql將查詢結果放到查詢快取中,如果碰到同樣的查詢語句,將直接從快取中獲取,query_cache_size就是做此項設定的引數。

設定方式

查詢快取預設是關閉的狀態,對查詢快取的控制可以通過使用query_cache_type來確認。通過改值來設定on/off。

mysql>

show variables like

'query_cache_type';+

------------------+-------+

| variable_name |

value|+

------------------+-------+

| query_cache_type |

off|

+------------------+-------+

1row

inset

(0.00 sec)

mysql>

設定方式與優化準則

可根據如下引數的現狀進行判斷和優化:

binlog的快取大小,binlog一般結合每日備份可進行實時恢復。

wait_timeout表示請求的最大連線時間。它的作用是非互動方式的連線如果超過這個時間,如果狀態是sleep的連線,mysql會主動進行切斷。

設定方式與優化準則

預設值為28800,可根據經驗或需求進行設定,比如設定為30秒或者120秒

注:與此值類似的是interactive_timeout,表述的是互動式的超時,預設也是28800的8個小時,可根據需要進行調整和設定

join_buffer_size是使用到join的情況下的連線優化引數。

設定方式與優化準則

thumb rule:預設值1/8m,建議稍微調大,由於是connection級別的調整,不要過大。建議1m

sort_buffer_size用於設定mysql執行排序鎖使用的緩衝大小。

設定方式與優化準則

thumb rule:預設值1/8m,建議稍微調大,由於是connection級別的調整,不要過大。建議1m

MySQL引數調優

l 通用類 key buffer size 含義 用於索引塊的緩衝區大小,增加它可得到更好處理的索引 對所有讀和多重寫 影響 對於myisam 表的影響不是很大,myisam 會使用系統的快取來儲存資料,所以大量使用 myisam 表的機器記憶體很快就會耗盡。但是,如果你將該值設得過大 例如,大於總...

mysql引數調優

l max connect errors max connect errors預設值為10,也即mysqld執行緒沒重新啟動過,一台物理伺服器只要連線 異常中斷累計超過10次,就再也無法連線上mysqld服務,為此建議大家設定此值至少大於等於10w 若異常中斷累計超過引數設定的值,有二種解決辦法,執...

mysql引數調優

優化之前我們需要知道什麼 業務相關的情況 mysql相關的配置 伺服器上需要關注那些 作業系統版本 是否為穩定版 cpu 網絡卡節電模式 建議資料庫應用的伺服器,關閉節電模式 伺服器numa設定 raid卡快取 磁碟排程策略 write back 回寫 宕機的話cache中資料,如果沒有刷入磁碟,可...