程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> 記一次mysql的調優

記一次mysql的調優

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

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved