對於SQL調優,其中關鍵的一點是開啓慢查詢日誌。MYSQL會記錄下查詢超過指定時間的語句,經過定位分析性能的瓶頸,mysql
才能更好的優化數據庫系統的性能。sql
MYSQL慢查詢日誌默認是關閉的。須要經過在 /etc/my.cnf 配置中添加以下參數:數據庫
#開啓慢查詢日誌 slow_query_log=ON #慢查詢的閾值,默認爲10秒,最小爲0,精度能夠到微妙 long_query_time=3 #日誌記錄文件若是沒有給出file_name值, 默認爲主機名,後綴爲-slow.log。若是給出了文件名,但不是絕對路徑名,文件則寫入數據目錄。 slow_query_log_file=slow_query.log
配置修改後,重啓數據庫性能
# service mysqld restart
驗證開啓慢日誌查詢:優化
第一種直接經過變量來確認是否開啓。3d
mysql> show variables like 'slow_query%'; +---------------------+----------------+ | Variable_name | Value | +---------------------+----------------+ | slow_query_log | ON | | slow_query_log_file | slow_query.log | +---------------------+----------------+ 2 rows in set (0.00 sec) mysql> show variables like 'slow_query_time%'; Empty set (0.00 sec) mysql> show variables like 'long_query_time%'; +-----------------+----------+ | Variable_name | Value | +-----------------+----------+ | long_query_time | 3.000000 | +-----------------+----------+ 1 row in set (0.00 sec)
第二種是直接經過查看慢日誌文件內容來確認:rest
執行超過3s的查詢語句。日誌
查看慢查詢日誌內容:blog
這樣咱們就能經過慢日誌拿到SQL,從而再對SQL進行索引排查,進行SQL優化。索引
二進制文件:記錄數據變化
binlog記錄了數據庫全部的ddl語句和dml語句,但不包括select語句內容,語句以事件的形式保存,描
述了數據的變動順序,binlog還包括了每一個更新語句的執行時間信息。若是是DDL語句,則直接記錄到
binlog日誌,而DML語句,必須經過事務提交才能記錄到binlog日誌中。 生產中才開啓二進制日誌。
主要做用:數據備份、恢復、主從
開啓二進制日誌:
在 /etc/my.cnf 配置中添加以下配置:
log-bin=mysql-bin
執行 service mysqld restart 重啓數據庫。查看數據庫目錄
出現了mysql-bin文件,後面的序號是備份次數,文件會在數據庫備份、重啓時,都會爲當前的數據進行備份。
好比我再執行多兩次重啓數據庫,會生成這樣的文件。