問題現象
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的時候都會將結果集放在這個空間中,因此說如果這個參數很小的話,就會出現上面的問題了~~