問題現象
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的時候都會將結果集放在這個空間中,因此說如果這個引數很小的話,就會出現上面的問題了~~頂踩
分享到:
2010-03-11 15:41
瀏覽 1079
分類:資料庫
記一次MySQL資料庫crash事件
mysql8.0資料庫最近一次不知道怎麼回事,突然啟動不了,如下提示 mysql daemon failed to start 日誌如下 網上也找了很多資料,但都處理不了 因為本人安裝資料庫習慣將安裝好的資料庫移到移到其他目錄,所以做了乙個操作,用原來的覆蓋現有的檔案 左邊是原始資料庫檔案,右邊是移...
記一次mysql資料庫失而復得過程
由於是自己買的vps搭建的部落格,用的是軍哥的一鍵lnmp原始碼編譯安裝的,文章也就幾篇,對備份並不太重視,想著等伺服器快到期的時候備份一下不就行了。後來在該伺服器上測試lnmp分別編譯編譯安裝和使用yum各自安裝,及nginx與php關聯,寫了乙個用yum安裝lnmp的指令碼,想著把該指令碼用sc...
資料庫優化 記一次Mysql的優化經歷
1.建立乙個課程表 create table course c id int primary key,name varchar 10 2.建立乙個學生表create table student s id int primary key,name varchar 10 3.建立乙個課程學生表creat...