一次MySQL性能優化實戰
一次MySQL性能優化實戰 MySQL數據庫 關鍵字:MySQL 性能優化 【IT168 技術文檔】過年這段時間由于線上數據庫經常壓力過大導致響應非常緩慢甚至死機,咬咬牙下大決心來解決效率不高的問題! 首先是由于公司秉承快速 開發 原則,頻繁上線,導致每次忽視了性能問
一次MySQL性能優化實戰 MySQL數據庫
關鍵字:MySQL 性能優化
【IT168 技術文檔】過年這段時間由于線上數據庫經常壓力過大導致響應非常緩慢甚至死機,咬咬牙下大決心來解決效率不高的問題!
首先是由于公司秉承快速開發原則,頻繁上線,導致每次忽視了性能問題!日積月累,所以導致系統越來越慢,所以如果你的系統查詢語句本來就優化的很好了可能參考意義不大!
提取慢查詢日志文件,應該在你的DataDir目錄下面
通過程序處理慢查詢文件,將文件格式的慢查詢導入到數據庫中:
1 my
sql> desc slow_query;
2 +---------------+-------------+------+-----+---------+-------+
3 | Field | Type | Null | Key | Default | Extra |
4 +---------------+-------------+------+-----+---------+-------+
5 | Date | varchar(32) | NO | | | | 查詢發生的時間
6 | user | varchar(64) | NO | | | |
7 | host | varchar(64) | NO | | | |
8 | content | text | NO | | | | 將Statement進行Mask后的語句,便于Group By
9 | query_time | int(11) | NO | | | | 查詢所用時間,直接
性能指標10 | lock_time | int(11) | YES | | 0 | | 等待鎖定的時間
11 | rows_sent | int(11) | YES | | 0 | | 返回的結果行數
12 | rows_examined | int(11) | YES | | 0 | | 掃描行數(很重要,上萬以后就要重點注意了
13 | statement | text | YES | | NULL | | 實際查詢語句
14 +---------------+-------------+------+-----+---------+-------+
然后發揮您的想象力在這個表中盡力捕捉你想捕捉的,那類型語句壓力最大、掃描行數最多、等鎖最久……
比如:
優化后:
1 mysql> select sum(query_time)/count(*),count
2 (*),sum(query_time),min(Date),Max(Date) from slow where Date>'2008-02-20 22:50:52' and Date<'2008-02-21 17:34:35';
3 +--------------------------+----------+-----------------+---------------------+---------------------+
4 | sum(query_time)/count(*) | count(*) | sum(query_time) | min(Date) | Max(Date) |
5 +--------------------------+----------+-----------------+---------------------+---------------------+
6 | 5.7233 | 2197 | 12574 | 2008-02-20 22:51:16 | 2008-02-21 17:34:10 |
7 +--------------------------+----------+-----------------+---------------------+---------------------+
8 1 row in set (0.09 sec)
優化前:
1 mysql> select sum(query_time)/count(*),count(*),sum(query_time),min(Date),Max(Date) from slow where Date>'2008-02-17 22:50:52' and Date<'2008-02-18 17:34:35';
2 +--------------------------+----------+-----------------+---------------------+---------------------+
3 | sum(query_time)/count(*) | count(*) | sum(query_time) | min(Date) | Max(Date) |
4 +--------------------------+----------+-----------------+---------------------+---------------------+
5 | 2.5983 | 16091 | 41810 | 2008-02-17 22:50:58 | 2008-02-18 17:34:34 |
6 +--------------------------+----------+-----------------+---------------------+---------------------+
7 1 row in set (0.15 sec)
原文轉自:http://www.anti-gravitydesign.com