SQL排查 慢查詢日誌與分析資料庫海量資料

2021-09-01 06:06:40 字數 1989 閱讀 7145

用於記錄mysql種響應時間超過閾值

開啟慢日誌

show variables 『%slow_query-log%』

臨時開啟

set global slow_query_log = 1

關閉服務

永久開啟

/etc/my.cnf [mysqld]

修改日誌

慢查詢閾值 ,臨時設定和永久設定,改完之後重新登入後生效,不需要重啟服務

long_query_time = 3

select sleep(4)休眠4秒

show global status like 『%slow_queries%』

檢視慢查詢日誌檔案 cat …

自帶mysqldumpslow --help 篩選,查詢慢日誌檔案(返回資料最多,訪問次數最多,包含左外連線)

儲存過程(無return)、儲存函式(有return)

需求:

產生隨機數,隨機字串

randstring(6) ->adacva 模擬名稱 字串從1開始

儲存函式:

delimiter $   --防止語義報錯--結束符號

create function randstring(n int) returns varchar(255)

begin

declare all_str varchar(100) default 'adadsadwfwvvwfwafafaf'

declare return_str varchar(255) default '';

declare i int default 0;

while i開啟了慢查詢日誌編寫儲存過程或者儲存函式就會報這個錯誤。

臨時解決和永久解決(設定引數變數和修改配置檔案)

create functuin ran_num() returns int(5)

begin

declare i int default 0;

set i = floor (rand()*100)l

return i;

end$

–通過儲存過程插入海量資料

create procedure insert_emp(in eid_start int(10),int data_time int(10))

begin

declare i int default 0;

set autocommit = 0;

repeat

insert into emp values(eid_start +i,randstring(5),'other',rutn_num());

set i = i+1;

util i = data_times

end repeat;

end $

—呼叫儲存過程和函式實現模擬海量資料

call insert_num()
(1)show profiles;–預設關閉

會記錄profiling開啟後的語句全部sql執行時間 duration代表總共花費的時間

(2)–精確分析:sql診斷

show profile all for query 第幾條

all 可以替換為你希望看見的關鍵部分時間花費

例如:cpu,等

(3)全域性查詢日誌:記錄開啟之後的全部sql語句(只在調優的時候開啟)

set gloobal general_log =1

set global log_output = 『table』

會被記錄mysql.general_log表中

(分析) select * from mysql.general.log

mysql慢查詢日誌查詢與分析

mysql下執行show variables like slow query log 上圖我這是本地的mysql,慢查詢沒開。slow query log on和off分別表示慢查詢有沒有開。slow query log file 慢查詢日誌的路徑。開啟日誌 我們可以看到 time 180810 1...

Mysql 慢查詢和慢查詢日誌分析

眾所周知,大訪問量的情況下,可新增節點或改變架構可有效的緩解資料庫壓力,不過一切的原點,都是從單台mysql開始的。下面總結一些使用過或者研究過的經驗,從配置以及調節索引的方面入手,對mysql進行一些優化。第一步應該做的就是排查問題,找出瓶頸,所以,先從日誌入手 開啟慢查詢日誌 mysql sho...

Mysql 慢查詢和慢查詢日誌分析

眾所周知,大訪問量的情況下,可新增節點或改變架構可有效的緩解資料庫壓力,不過一切的原點,都是從單台mysql開始的。下面總結一些使用過或者研究過的經驗,從配置以及調節索引的方面入手,對mysql進行一些優化。第一步應該做的就是排查問題,找出瓶頸,所以,先從日誌入手 開啟慢查詢日誌 mysql sho...