體系結構 MySQL日誌檔案

2021-12-30 10:54:26 字數 3282 閱讀 2517

【體系結構】mysql日誌檔案--慢查詢日誌

顧名思義,慢查詢日誌中記錄的是執行時間較長的 query

可以設乙個閥值、將執行時間超過該值的所有sql語句都記錄到慢查詢日誌檔案中

該閥值可以通過引數long_query_time來設定、預設是10秒

這裡需要一點、對於執行時間正好等於long_query_time的情況、並不會被記錄

因為、在源**裡是判斷大於long_query_time、而非大於等於

[plain] 

mysql> show variables like 'log_slow_queries';  

+------------------+-------+  

| variable_name    | value |  

+------------------+-------+  

| log_slow_queries | on    |  

+------------------+-------+  

1 row in set (0.00 sec)  

mysql> show variables like 'long_query_time';  

+-----------------+-----------+  

| variable_name   | value     |  

+-----------------+-----------+  

| long_query_time | 10.000000 |  

+-----------------+-----------+  

1 row in set (0.00 sec)  

另乙個和慢查詢日誌相關的引數是log_queries_not_using_indexes

如果執行的sql沒有使用索引、則mysql同樣會將這條語句記錄到慢查詢日誌檔案

[plain] 

mysql> show variables like 'log_queries_not_using_indexes';  

+-------------------------------+-------+  

| variable_name                 | value |  

+-------------------------------+-------+  

| log_queries_not_using_indexes | off   |  

+-------------------------------+-------+  

1 row in set (0.00 sec)    

在這裡、我沒有開啟、但有點需要提醒、如果**修改該引數、雖然沒有報錯、但是不會生效

mysql 還提供了專門用來分析滿查詢日誌的工具程式 mysqldumpslow、用來幫助mysql dba解決可能存在的效能問題

例子、獲得 top-5 sql語句:

[plain] 

[mysql@localhost bin]$ ./mysqldumpslow -s al -n 5 /home/mysql/mysql/log/slow.log  

reading mysql slow query log from /home/mysql/mysql/log/slow.log  

count: 1  time=0.00s (0s)  lock=0.00s (0s)  rows=0.0 (0), 0users@0hosts    

更多用法、請諮詢 ./mysqldumpslow --help

從5.1.6版本開始,慢查詢日誌即可以是個檔案,也可以儲存在資料庫中的指定表

引數log_output指定了慢查詢輸出的格式、預設為file、你也可以將它設為table

引數log_output是動態的、並且是全域性的、我們能夠**進行變更

[plain] 

mysql> show variables like 'log_output';  

+---------------+-------+  

| variable_name | value |  

+---------------+-------+  

| log_output    | file  |  

+---------------+-------+  

1 row in set (0.00 sec)  

mysql> set global log_output='table';  

query ok, 0 rows affected (0.00 sec)  

mysql> show variables like 'log_output';  

+---------------+-------+  

| variable_name | value |  

+---------------+-------+  

| log_output    | table |  

+---------------+-------+  

1 row in set (0.00 sec)  

mysql> select sleep(15);  

+-----------+  

| sleep(15) |  

+-----------+  

|         0 |  

+-----------+  

1 row in set (15.02 sec)  

mysql> select * from mysql.slow_log\g;  

*************************** 1. row ***************************  

start_time: 2013-04-14 01:22:29  

user_host: root[root] @ localhost  

query_time: 00:00:15  

lock_time: 00:00:00  

rows_sent: 1  

rows_examined: 0  

db: test  

last_insert_id: 0  

insert_id: 0  

server_id: 1  

sql_text: select sleep(15)  

1 row in set (0.00 sec)  

在這個例子裡、我設定了睡眠15秒、那麼這句sql就會被記錄到slow_log表

需要注意的是,慢查詢日誌中有可能記錄到與使用者許可權或密碼相關的語句,因此慢查詢日誌檔案的儲存也要注意安全

體系結構 MySQL日誌檔案

體系結構 mysql日誌檔案 二進位制日誌 binary log binary log index 先找到這兩個檔案 plain rocky localhost show variables like datadir variable name value datadir home mysql my...

mysql 體系結構 了解MySQL體系結構

mysql 資料庫體系結構圖 mysql 由以下幾部分組成 1 connectors 不同語言中與 sql 的互動 show variables like connection variable name value character set connection utf8 collation c...

簡述mysql體系結構 MySQL體系結構

一 mysql登入方式 一 tcp ip方式 遠端 本地 mysql uroot poldboy123 h 10.0.0.51 p3306 二 socket方式 mysql uroot poldboy123 s tmp mysql.sock 二 例項介紹 例項 mysqld後台守護程序 主線程 ma...