日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

MYSQL慢日志探索

發布時間:2024/8/26 数据库 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MYSQL慢日志探索 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Table of Contents?[hide]

  • 1. 出現場景
  • 2. 什么樣的慢查詢會記錄到slow log日志
    • 2.1 慢日志查詢和鎖定時間介紹
    • 2.2 何時記錄慢日志
      • 2.2.1 設置開啟MySQL慢日志相關參數
      • 2.2.2 準備測試數據
      • 2.2.3 ?測試場景介紹
      • 2.2.3 ?測試結果展示
  • 3. 結論

1. 出現場景

?今天審計SQL慢查詢,發現一個很簡單的SQL語句出現在了滿日志里面,并且相應時間還很長,拿出去直接去查看執行計劃,并沒有發現什么問題。突然感覺為什么會記錄在慢日志中感覺很模糊。親自動手找一下原因吧
問題語句:select userid from tbl_name where mobile =?

2. 什么樣的慢查詢會記錄到slow log日志

2.1 慢日志查詢和鎖定時間介紹

在Slog慢日志中,會有類似這樣的數據,體現了2個參數,查詢時間和所等待時間
# Query_time: 27.620161 Lock_time: 25.615839 Rows_sent: 1 Rows_examined: 1

2.2 何時記錄慢日志

記錄到慢日志的SQL與Query_time,Lock_time,long_query_time有什么關系呢?為了解決這個問題,我特意做了一個下面的實驗,廢話不在多說,準備測試數據

2.2.1 設置開啟MySQL慢日志相關參數

我的設置如下:
slow_query_log=1
long_query_time=1
slow_query_log_file=/home/db/Main.Slow.log

2.2.2 準備測試數據

[localhost](dog) 11:17:45>CREATE TABLE Gbk_Null (
id int(11) NOT NULL AUTO_INCREMENT,
name char(10) DEFAULT NULL,
PRIMARY KEY (id),
KEY name(name)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=gbk;
[localhost](dog) 12:17:02>select * from Gbk_Null;
+—-+——-+
| id | name |
+—-+——-+
| 1 | aaa |
| 2 | bbbb |
| 3 | cccc |
| 4 | ddd |
| 5 | eeee |
| 6 | fffff |
+—-+——-+
6 rows in set (0.00 sec)

2.2.3 ?測試場景介紹

場景1:
session A:
begin;
select * from Gbk_Null where id =1 for update;

Session B;
begin:
select *,sleep(2) from Gbk_Null where id =1 for update;

然后去場景中commit事務,觀察是否有滿日志記錄到滿日志文件中

場景2:
session A:
begin;
select * from Gbk_Null where id =1 for update;

Session B;
begin:
select * from Gbk_Null where id =1 for update;

然后去場景中commit事務,觀察是否有滿日志記錄到滿日志文件中

場景3:
session A:
begin;
select * from Gbk_Null where id =1 for update;

Session B;
begin:
select *,sleep(0.5) from Gbk_Null where id =1 for update;

2.2.3 ?測試結果展示

通過上面場景的測試,發現了場景1的Session B中SQL被記錄到了滿日志中,而場景2,場景3 沒有任何的滿日志記錄信息,慢日志內容如下

# Time: 150227 11:12:52
#?User@Host: root[root] @ localhost [127.0.0.1] Id: 9
# Query_time: 9.623483 Lock_time: 7.623200 Rows_sent: 1 Rows_examined: 1
use dog;
SET timestamp=1425006772;
select *,sleep(2) from Gbk_Null where id =1 for update;

?

3. 結論

1)Query_time – Lock_time > long_query_time <==> 記錄

1)Query_time – Lock_time < long_query_time <==> 不記錄


總結

以上是生活随笔為你收集整理的MYSQL慢日志探索的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。