記一次mysql的調優

問題現象

mysql CPU占用188%(多核)

解決方法

1.跟蹤慢查詢

vi /etc/my.cnf 在mysqld下增加如下內容
 

log-slow-queries = slow.log
long_query_time = 5

含義為記錄查詢時間超過5秒的SQL到slow.log
查找slow.log的內容,發現裡面有大量的SQL,下面有幾個SQL優化原則
a) 對where語句的字段進行建索引,假定如下SQL為slow.log的內容
select count(*) from table where table_column=‘test’

那麼就要對該table_column建立索引(這隻是一個普遍的規則,詳細規則請到網上查)

建立瞭索引以後,修改一下mysql的參數

 2.調整mysql參數

    vi /etc/my.cnf

    在[mysqld]下增加如下
    tmp_table_size=1024M

    增加完畢後重啟mysql,再進行觀察,如果還是負載很高,可以適當調高,我將這個參數調整到2048後負載就下來瞭

    這個參數值應該根據具體情況具體對待,沒有一個特定的值。

    那麼這個參數到底是幹什麼用的呢?為什麼如此神奇?哈哈,當執行一個查詢,如果SQL對查詢進行group by 或者orderby的時候都會將結果集放在這個空間中,因此說如果這個參數很小的話,就會出現上面的問題瞭~~

 

發佈留言