1、首先查看MySQL服務器狀態信息,包括當前MySQL啓動後的運行時間,當前MySQL的客戶端會話連
接數,當前MySQL服務器執行的慢查詢數,當前MySQL執行了多少SELECT語句、執行了多少
UPDATE/DELETE/INSERT語句等統計信息,便於咱們根據當前MySQL服務器的運行狀態進行對
應的調整或優化工做。
一、SHOW STATUS 指令語句來查看MySQL服務器的狀態信息
二、查看單個信息語法
SHOW [統計範圍] STATUS [LIKE '狀態項名稱']
--統計範圍關鍵字分爲GLOBAL和SESSION(或LOCAL)兩種。
例如:
--查看MySQL本次啓動後的運行時間(單位:秒)
show status like 'uptime';
--查看select語句的執行數
show [global] status like 'com_select';
--查看insert語句的執行數
show [global] status like 'com_insert';
--查看update語句的執行數
show [global] status like 'com_update';
--查看delete語句的執行數
show [global] status like 'com_delete';
--查看試圖鏈接到MySQL(無論是否鏈接成功)的鏈接數
show status like 'connections';
--查看線程緩存內的線程的數量。
show status like 'threads_cached';
--查看當前打開的鏈接的數量。
show status like 'threads_connected';
--查看當前打開的鏈接的數量。
show status like 'threads_connected';
--查看建立用來處理鏈接的線程數。若是Threads_created較大,你可能要增長
thread_cache_size值。
show status like 'threads_created';
--查看激活的(非睡眠狀態)線程數。
show status like 'threads_running';
--查看當即得到的表的鎖的次數。
show status like 'table_locks_immediate';
--查看不能當即得到的表的鎖的次數。若是該值較高,而且有性能問題,你應首先優化
查詢,而後拆分表或使用複製。
show status like 'table_locks_waited';
--查看建立時間超過slow_launch_time秒的線程數。
show status like 'slow_launch_threads';
--查看查詢時間超過long_query_time秒的查詢的個數。
show status like 'slow_queries';
修改 MySQL> set [字段] = 值;mysql
2、查看MySQL執行的歷史記錄及執行時間,分析出最爛SQL方便優化。
一、在my.cnf中的[mysqld](其餘地方可能無效)下插入log=/etc/tmp/mysql.log(日誌的地址能夠本身
定義,不過不要在home裏面,不然可能顯示不出來,主要要有寫的權限).而後要重啓數據庫,用
service mysqld restart 命令就能夠了.這個log會將全部的執行語句記錄下來,因此在數據庫很忙的
時候,這個日誌可能變得很大,不宜查看。
用tail -f /etc/tmp/mysql.log 命令能夠持續觀察執行語句,也能夠將該文件下載下來慢慢看.
二、另外還有一個慢查詢歷史記錄,也在my.cnf文件裏,配置語句爲
log-slow-queries=/var/lib/mysql/slowquery.log
long_query_time=5
log-queries-not-using-indexes=1
注: log-slow-queries 是慢查詢歷史記錄的地址,
long_query_time 限定超過X秒才能加入到歷史記錄裏面,
log-queries-not-using-indexes 限定沒有使用索引的查詢語句.
這個日誌因爲記錄語句很少,因此能夠長期開啓.
三、操做
(1) 查看慢SQL日誌是否啓用
mysql> show variables like 'log_slow_queries';
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| log_slow_queries | ON |
+------------------+-------+
1 row in set (0.00 sec)sql
(2) 查看執行慢於多少秒的SQL會記錄到日誌文件中
mysql> show variables like 'long_query_time';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| long_query_time | 1 |
+-----------------+-------+
1 row in set (0.00 sec)
這裏value=1, 表示1秒
(3)配置my.ini文件(inux下文件名爲my.cnf), 查找到[mysqld]區段,增長日誌的配置,以下示例:
[mysqld]
log="C:/temp/mysql.log"
log_slow_queries="C:/temp/mysql_slow.log"
long_query_time=1數據庫
log指示日誌文件存放目錄;
log_slow_queries指示記錄執行時間長的sql日誌目錄;
long_query_time指示多長時間算是執行時間長,單位s。緩存
Linux下這些配置項應該已經存在,只是被註釋掉了,能夠去掉註釋。但直接添加配置項也OK
服務器