本文將介紹MySQL參數(shù)的五大類設置荚孵,平時我們一般都很少碰它們,在進行MySQL性能調優(yōu)和故障診斷時這些參數(shù)還是非常有用的。
(一)連接
連接通常來自Web服務器桩蓉,下面列出了一些與連接有關的參數(shù),以及該如何設置它們抒蚜。
1掘鄙、max_connections
這是Web服務器允許的最大連接數(shù),記住每個連接都要使用會話內存(關于會話內存嗡髓,文章后面有涉及)操漠。
2、max_packet_allowed
最大數(shù)據包大小饿这,通常等于你需要在一個大塊中返回的最大數(shù)據集的大小浊伙,如果你在使用遠程mysqldump,那它的值需要更大长捧。
3嚣鄙、aborted_connects
檢查系統(tǒng)狀態(tài)的計數(shù)器,確定其沒有增長串结,如果數(shù)量增長說明客戶端連接時遇到了錯誤哑子。
4舅列、thread_cache_size
入站連接會在MySQL中創(chuàng)建一個新的線程,因為MySQL中打開和關閉連接都很廉價卧蜓,速度也快帐要,它就沒有象其它數(shù)據庫赡矢,
如Oracle那么多持續(xù)連接了窗声,但線程預先創(chuàng)建并不會節(jié)約時間,這就是為什么要MySQL線程緩存的原因了憾赁。
如果在增長請密切注意創(chuàng)建的線程盛霎,讓你的線程緩存更大赠橙,對于2550或100的thread_cache_size,內存占用也不多摩渺。
(二)查詢緩存
(三)臨時表
內存速度是相當快的简烤,因此我們希望所有的排序操作都在內存中進行,我們可以通過調整查詢讓結果集更小以實現(xiàn)內存排序摇幻,或將變量設置得更大横侦。
tmp_table_size
max_heap_table_size
無論何時在MySQL中創(chuàng)建臨時表,它都會使用這兩個變量的最小值作為臨界值绰姻,除了在磁盤上構建臨時表外枉侧,還會創(chuàng)建許多會話,這些會話會搶占有 限制的資源狂芋,
因此最好是調整查詢而不是將這些參數(shù)設置得更高榨馁,同時,需要注意的是有BLOB或TEXT字段類型的表將直接寫入磁盤帜矾。
(四)會話內存
MySQL中每個會話都有其自己的內存翼虫,這個內存就是分配給SQL查詢的內存,因此你想讓它變得盡可能大以滿足需要屡萤。但你不得不平衡同一時間數(shù)據庫內一致性會話的數(shù)量珍剑。
這里顯得有點黑色藝術的是MySQL是按需分配緩存的,因此死陆,你不能只添加它們并乘以會話的數(shù)量招拙,這樣估算下來比MySQL典型 的使用要大得多。
非常好的一個做法是啟動MySQL措译,連接所有會話别凤,然后繼續(xù)關注頂級會話的VIRT列,mysqld行的數(shù)目通常保持相對穩(wěn)定领虹,這就是實際的內存 總用量规哪,
減去所有的靜態(tài)MySQL內存區(qū)域,就得到了實際的所有會話內存掠械,然后除以會話的數(shù)量就得到平均值由缆。
1注祖、read_buffer_size
緩存連續(xù)掃描的塊,這個緩存是跨存儲引擎的均唉,不只是MyISAM表是晨。
2、sort_buffer_size
執(zhí)行排序緩存區(qū)的大小舔箭,最好將其設置為1M-2M罩缴,然后在會話中設置,為一個特定的查詢設置更高的值层扶。
3箫章、join_buffer_size
執(zhí)行聯(lián)合查詢分配的緩存區(qū)大小,將其設置為1M-2M大小镜会,然后在每個會話中再單獨按需設置檬寂。
4、read_rnd_buffer_size
用于排序和order by操作戳表,最好將其設置為1M桶至,然后在會話中可以將其作為一個會話變量設置為更大的值。
(五)慢查詢日志
慢速查詢日志是MySQL很有用的一個特性匾旭。
1镣屹、log_slow_queries
MySQL參數(shù)中l(wèi)og_slow_queries參數(shù)在my.cnf文件中設置它,將其設置為on价涝,默認情況下女蜈,MySQL會將文件放到數(shù)據目錄,文件以“主機名-slow.log”的形式命名色瘩,但你在設置這個選項的時候也可以為其指定一個名字伪窖。
2、long_query_time
默認值是10秒居兆,你可以動態(tài)設置它惰许,值從1到將其設置為on,如果數(shù)據庫啟動了史辙,默認情況下,日志將關閉佩伤。
截至5.1.21和安裝了 Google補丁的版本聊倔,這個選項可以以微秒設置,這是一個了不起的功能生巡,因為一旦你消除了所有查詢時間超過1秒的查詢耙蔑,說明調整非常成功,這樣可以幫助 你在問題變大之前消除問題SQL孤荣。
3甸陌、log_queries_not_using_indexes
開啟這個選項是個不錯的主意须揣,它真實地記錄了返回所有行的查詢。