Mysql--慢查詢日誌之一,Mysql--慢日誌之一

來源:互聯網
上載者:User

Mysql--慢查詢日誌之一,Mysql--慢日誌之一
慢查詢日誌
1.當查詢超過一定時間沒有返回結果的時候,才會記錄進慢查詢日誌。
2.慢查詢日誌可以協助DBA找出執行效率緩慢的SQL語句,為資料庫最佳化工作提供協助。
3.慢查詢日誌預設是不開啟的,也沒必要一直開啟。(如果開啟必定會消耗系統的效能)
4.當需要進行採樣分析時手工開啟。
慢查詢日誌相關參數
mysql.cnf中修改以下配置後,需要重新啟動資料庫服務使之生效。
slow_query_log=on|off---是否開啟慢查詢日誌 
slow_query_log_file=filename---指定慢查詢日誌儲存路徑及檔案名稱。不設定則使用預設值。預設存放位置為資料庫檔案所在目錄下,名稱為hostname-slow.log
long_query_time=2---指定多少秒未返回結果的查詢語句屬於慢查詢。 
long-queries-not-using-indexes---記錄所有沒有使用到索引的查詢語句。
min_examined_row_limit=1000---記錄那些由於尋找了多餘1000次而引發的慢查詢。
log-slow-admin-statements---記錄那些慢的OPTIMIZE TABLE, ANALYZE TABLE和ALTER TABLE語句。
log-slow-slave-statements---記錄由slave所產生的慢查詢。
不重啟修改慢查詢配置
SET @@global.slow_query_log=1  ---1開啟 0關閉
SET @@global.long_query_time=3
或者
SET global slow_query_log=1
SET global long_query_time=3
    其他參數可通過以下命令查閱:
show variables like '%slow%';
Model開啟慢查詢日誌:
mysql> set global slow_query_log=1;
Query OK, 0 rows affected (0.22 sec)

mysql> set global long_query_time=2;
Query OK, 0 rows affected (0.04 sec)

[root@gusha ~]# cd /var/lib/mysql/
[root@gusha mysql]# pwd
/var/lib/mysql
[root@gusha mysql]# ls ---目錄下會多出一個主機名稱-slow.log的檔案
auto.cnf        gusha.wyzc.com.err  ib_logfile1         RPM_UPGRADE_HISTORY
gusha           gusha.wyzc.com.pid  mysql               RPM_UPGRADE_MARKER-LAST
gusha.log       ibdata1             mysql.sock          t1.ibd
gusha-slow.log  ib_logfile0         performance_schema  worldb
mysql> select sleep(3);
+----------+
| sleep(3) |
+----------+
|        0 |
+----------+
1 row in set (3.05 sec)


mysql> select variables like 'long%';
ERROR 1054 (42S22): Unknown column 'variables' in 'field list'
mysql> show variables like 'long%';
+-----------------+----------+
| Variable_name   | Value    |
+-----------------+----------+
| long_query_time | 2.000000 |
+-----------------+----------+
1 row in set (0.25 sec)
[root@gusha mysql]# tail -f gusha-slow.log ---查看日記記錄的相關資訊
/usr/sbin/mysqld, Version: 5.6.16 (MySQL Community Server (GPL)). started with:
Tcp port: 3306  Unix socket: /var/lib/mysql/mysql.sock
Time                 Id Command    Argument
# Time: 150204  3:13:06
# User@Host: root[root] @ localhost []  Id:    23
# Query_time: 3.022983  Lock_time: 0.000000 Rows_sent: 1  Rows_examined: 0
SET timestamp=1422990786;
select sleep(3);
常見的慢查詢分析工具
1.mysqldumpslow---mysql內建的工具,展示效果不友好
2.mysqlsla
hackmysql.com出品的一款分析工具。可以在其網站下載到,或者在系統提示符下輸入以下命令下載:
#wget http://hackmysql.com/scripts/mysqlsla
3.percona-toolkit中的pt-query-digest---安裝時需要注意依賴包
A-mysqldumpslow
[root@gusha mysql]# mysqldumpslow gusha-slow.log ---慢記錄檔名字

Reading mysql slow query log from gusha-slow.log
Count: 1  Time=3.02s (3s)  Lock=0.00s (0s)  Rows=1.0 (1), root[root]@localhost
  select sleep(N)
B-mysqlsla
[root@gusha ~]# cd /var/mysql-7/
[root@gusha mysql-7]# ls
MySQL-5.6.17-1.el6.src.rpm  mysqlsla-2.03
mysql-5.6.17.tar.gz         percona-toolkit-2.2.7-1.noarch.rpm
[root@gusha mysql-7]# chmod +x mysqlsla-2.03
[root@gusha mysql-7]# ./mysqlsla-2.03 /var/lib/mysql/gusha-slow.log 
Auto-detected logs as slow logs
Report for slow logs: /var/lib/mysql/gusha-slow.log
1 queries total, 1 unique
Sorted by 't_sum'
Grand Totals: Time 3 s, Lock 0 s, Rows sent 1, Rows Examined 0
______________________________________________________________________ 001 ___
Count         : 1  (100.00%)
Time          : 3.022983 s total, 3.022983 s avg, 3.022983 s to 3.022983 s max  (100.00%)
Lock Time (s) : 0 total, 0 avg, 0 to 0 max  (0.00%)
Rows sent     : 1 avg, 1 to 1 max  (100.00%)
Rows examined : 0 avg, 0 to 0 max  (0.00%)
Database      : 
Users         : 
root@localhost  : 100.00% (1) of query, 100.00% (1) of all users

Query abstract:
SET timestamp=N; SELECT sleep(N);

Query sample:
SET timestamp=1422990786;
select sleep(3);  
C-percona-toolkit
[root@gusha mysql-7]# yum install percona-toolkit-2.2.7-1.noarch.rpm 
.......
[root@gusha mysql-7]# pt-query-digest /var/lib/mysql/gusha-slow.log 

# 170ms user time, 20ms system time, 23.98M rss, 202.45M vsz
# Current date: Wed Feb  4 03:33:40 2015
# Hostname: gusha.wyzc.com
# Files: /var/lib/mysql/gusha-slow.log
# Overall: 1 total, 1 unique, 0 QPS, 0x concurrency ______________________
# Time range: all events occurred at 2015-02-04 03:13:06
# Attribute          total     min     max     avg     95%  stddev  median
# ============     ======= ======= ======= ======= ======= ======= =======
# Exec time             3s      3s      3s      3s      3s       0      3s
# Lock time              0       0       0       0       0       0       0
# Rows sent              1       1       1       1       1       0       1
# Rows examine           0       0       0       0       0       0       0
# Query size            15      15      15      15      15       0      15


# Profile
# Rank Query ID           Response time Calls R/Call V/M   Item
# ==== ================== ============= ===== ====== ===== ======
#    1 0xF9A57DD5A41825CA 3.0230 100.0%     1 3.0230  0.00 SELECT


# Query 1: 0 QPS, 0x concurrency, ID 0xF9A57DD5A41825CA at byte 0 ________
# This item is included in the report because it matches --limit.
# Scores: V/M = 0.00
# Time range: all events occurred at 2015-02-04 03:13:06
# Attribute    pct   total     min     max     avg     95%  stddev  median
# ============ === ======= ======= ======= ======= ======= ======= =======
# Count        100       1
# Exec time    100      3s      3s      3s      3s      3s       0      3s
# Lock time      0       0       0       0       0       0       0       0
# Rows sent    100       1       1       1       1       1       0       1
# Rows examine   0       0       0       0       0       0       0       0
# Query size   100      15      15      15      15      15       0      15
# String:
# Hosts        localhost
# Users        root
# Query_time distribution
#   1us
#  10us
# 100us
#   1ms
#  10ms
# 100ms
#    1s  ################################################################
#  10s+
# EXPLAIN /*!50100 PARTITIONS*/
select sleep(3)\G
刪除慢查詢日誌
       慢查詢日誌會不斷的増長。因此往往僅僅在做例如採樣分析這樣的特別工作時才開啟,其他的時候則關閉。無用的慢日誌要記得及時刪除。
       刪除慢查詢日誌有兩種方法:
      1.作業系統命令直接刪除。
      2.在MySQL提示符下使用flush logs命令;或在系統提示符下使用mysqladmin flush-logs命令。

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.