本文適合初步接觸者做一些參考,老手就不用這樣去操作了,希望有不對(duì)的多多指教。
重要強(qiáng)調(diào)!本人并不是專業(yè)DBA,難免有錯(cuò)誤或遺漏的地方,還請(qǐng)大家給予指正。操作前做好備份。
重要強(qiáng)調(diào)!本人并不是專業(yè)DBA,難免有錯(cuò)誤或遺漏的地方,還請(qǐng)大家給予指正。操作前做好備份。
重要強(qiáng)調(diào)!本人并不是專業(yè)DBA,難免有錯(cuò)誤或遺漏的地方,還請(qǐng)大家給予指正。操作前做好備份。
先說(shuō)一下,這里通過(guò)寶塔來(lái)操作的,開(kāi)始前先來(lái)兩張圖
圖一

圖二

1、活動(dòng)/峰值連接數(shù)
(圖1)中當(dāng)前活動(dòng)的連接為1個(gè),自MySQL服務(wù)啟動(dòng)以來(lái),最高連接數(shù)為54;當(dāng)最高連接數(shù)接近或等于(圖2)中的max_connections時(shí),應(yīng)適當(dāng)增加max_connections,需要注意的是,不要一下子增加過(guò)多,建議每次增加50,觀察一段時(shí)間,不夠再繼續(xù)增加。
2、線程緩存命中率
(圖1)中線程緩存命中率為99.78%,若這個(gè)值小于90%,建議適當(dāng)增加(圖2)中的thread_cache_size,建議每次增加8。
3、索引命中率
(圖1)中索引命中率為99.50%,若這個(gè)值小于95%,建議適當(dāng)增加(圖2)中的key_buffer_size,建議每次增加64,需要說(shuō)明的是,若您的數(shù)據(jù)庫(kù)使用的是Innodb引擎,可忽略這個(gè)選項(xiàng)
4、Innodb索引命中率
(圖1)中Innodb索引命中率為100%,若這個(gè)值小于95%,建議適當(dāng)增加(圖2)中的innodb_buffer_pool_size,建議每次增加64,需要說(shuō)明的是,若您的數(shù)據(jù)庫(kù)沒(méi)有使用Innodb引擎,可忽略這個(gè)選項(xiàng)
5、查詢緩存命中率
MySQL查詢緩存是個(gè)比較受爭(zhēng)議的功能,個(gè)人建議當(dāng)你有在使用redis、memcached等緩存軟件時(shí),在(圖2)中將query_cache_size設(shè)為0可以將其關(guān)閉,當(dāng)你沒(méi)有使用緩存軟件,有多余的內(nèi)存使用,且數(shù)據(jù)庫(kù)瓶頸明顯存在時(shí),可以嘗試開(kāi)啟查詢緩存,這是個(gè)非常依賴數(shù)據(jù)表結(jié)構(gòu)及SQL語(yǔ)句優(yōu)化的功能,若數(shù)據(jù)表結(jié)構(gòu)和SQL語(yǔ)句都針對(duì)查詢緩存進(jìn)行過(guò)優(yōu)化,它的效果還是很不錯(cuò)的。
6、創(chuàng)建臨時(shí)表到磁盤
(圖1)中創(chuàng)建臨時(shí)表到磁盤的比例是0.42%,這說(shuō)明大部分臨時(shí)表創(chuàng)建到內(nèi)存了,不會(huì)過(guò)多增加磁盤IO的開(kāi)銷,建議,當(dāng)比例大于2%時(shí)適當(dāng)增加(圖1)中的tmp_cache_size,建議每次增加32,當(dāng)比例大于60%時(shí),放棄吧,有些開(kāi)源程序并沒(méi)有專門優(yōu)化過(guò)SQL語(yǔ)句,所以在運(yùn)行過(guò)程中會(huì)開(kāi)啟大量臨時(shí)表,加多少緩存都是不夠用的。
7、已打開(kāi)的表
當(dāng)(圖1)中的已打開(kāi)的表接近或等于(圖2)中的table_open_cache時(shí),可以適當(dāng)增加table_open_cache,但若設(shè)置過(guò)大可能導(dǎo)致您的程序頻繁中斷MySQL連接,建議在1024以內(nèi),最大不要超過(guò)2048。
8、沒(méi)有使用索引的量、沒(méi)有使用索引的JOIN量
若不為0,就檢查下數(shù)據(jù)表索引吧,其實(shí)只要沒(méi)有瘋漲,比如一天增漲幾千,一般可以忽略,必竟優(yōu)化索引還是程序員或DBA去干比較合適。
9、排序后的合并次數(shù)
如果這個(gè)值在緩慢增張,建議適當(dāng)增加(圖2)中的sort_buffer_size,建議每次增加512,但最大不要超過(guò)8192,如果這個(gè)值一直在瘋漲,增加sort_buffer_size也沒(méi)用,就放棄這個(gè)選項(xiàng)吧,這個(gè)鍋還是給程序開(kāi)發(fā)者背。
10、鎖表次數(shù)
如果服務(wù)器CPU開(kāi)銷不大的情況下,瘋狂鎖表,建議你將所有數(shù)據(jù)表轉(zhuǎn)換成innodb,記得轉(zhuǎn)換前備份哦。
11、優(yōu)化方案
這個(gè)是我們根據(jù)內(nèi)存大小給的一個(gè)推薦優(yōu)化方案,僅是建議僅用于基礎(chǔ)參考值,還是要根據(jù)實(shí)據(jù)情況來(lái)調(diào)整每一個(gè)配置項(xiàng)。
希望大家通過(guò)自己的不斷觀察,不斷調(diào)整,找到最適合自己的,關(guān)于調(diào)優(yōu),沒(méi)有最好的參數(shù),只有最適合自己的。加油。