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

歡迎訪問 生活随笔!

生活随笔

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

数据库

mysql 5.5 查询_mysql5.5数据库优化--定位慢查询

發布時間:2024/8/23 数据库 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql 5.5 查询_mysql5.5数据库优化--定位慢查询 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

什么是慢查詢

mysql記錄下查詢超過指定時間的語句,被稱為“慢查詢”;

啟動慢查詢日志

1.查詢是否把索引的SQL記錄到慢查詢日志中

SHOW VARIABLES LIKE 'log_queries_%'

2.將查詢到的值若為OFF,表示沒有記錄,就開啟記錄

SET GLOBAL log_queries_not_using_indexes=ON;

3.查看慢查詢時間long_query_time,

SHOW VARIABLES LIKE 'long_query_time';

默認慢查詢的時間就是10s

4.將慢查詢時間修改成0.9

SET GLOBAL long_query_time=0.9;

5.查看是否開啟慢查詢日志

SHOW VARIABLES LIKE 'slow_query_log';

6.如果值為OFF,表示沒有開啟,就將其設置為ON啟動

SET GLOBAL slow_query_log=ON;

7.查看慢查詢日志記錄的位置

SHOW VARIABLES LIKE 'slow_query_log_file';

8.如果想修改慢查詢日志記錄的位置,如下

SET GLOBAL slow_query_log_file='E:\\mysqlerror.log'

模擬慢查詢

1.創建表

/*部門表*/

CREATE TABLE dept(

deptno MEDIUMINT UNSIGNED NOT NULL DEFAULT 0, /*編號*/

dname VARCHAR(20) NOT NULL DEFAULT "", /*名稱*/

loc VARCHAR(13) NOT NULL DEFAULT "" /*地點*/

) ENGINE=MYISAM DEFAULT CHARSET=utf8 ;

/*員工表*/

CREATE TABLE emp

(empno MEDIUMINT UNSIGNED NOT NULL DEFAULT 0, /*編號*/

ename VARCHAR(20) NOT NULL DEFAULT "", /*名字*/

job VARCHAR(9) NOT NULL DEFAULT "",/*工作*/

mgr MEDIUMINT UNSIGNED NOT NULL DEFAULT 0,/*上級編號*/

hiredate DATE NOT NULL,/*入職時間*/

sal DECIMAL(7,2) NOT NULL,/*薪水*/

comm DECIMAL(7,2) NOT NULL,/*紅利*/

deptno MEDIUMINT UNSIGNED NOT NULL DEFAULT 0 /*部門編號*/

)ENGINE=MYISAM DEFAULT CHARSET=utf8 ;

/*薪水*/

CREATE TABLE salgrade

(

grade MEDIUMINT UNSIGNED NOT NULL DEFAULT 0,

losal DECIMAL(17,2) NOT NULL,

hisal DECIMAL(17,2) NOT NULL

)ENGINE=MYISAM DEFAULT CHARSET=utf8;

#測試數據leveof

INSERT INTO salgrade VALUES (1,700,1200);

INSERT INTO salgrade VALUES (2,1201,1400);

INSERT INTO salgrade VALUES (3,1401,2000);

INSERT INTO salgrade VALUES (4,2001,3000);

INSERT INTO salgrade VALUES (5,3001,9999);

創建函數

DELIMITER $$

CREATE FUNCTION rand_string(n INT)

RETURNS VARCHAR(255) #該函數會返回一個字符串

BEGIN

#chars_str定義一個變量 chars_str,類型是 varchar(100),默認值'abcdefghijklmnopqrstuvwxyzABCDEFJHIJKLMNOPQRSTUVWXYZ';

DECLARE chars_str VARCHAR(100) DEFAULT

'abcdefghijklmnopqrstuvwxyzABCDEFJHIJKLMNOPQRSTUVWXYZ';

DECLARE return_str VARCHAR(255) DEFAULT '';

DECLARE i INT DEFAULT 0;

WHILE i < n DO

SET return_str =CONCAT(return_str,SUBSTRING(chars_str,FLOOR(1+RAND()*52),1));

SET i = i + 1;

END WHILE;

RETURN return_str;

END $$

DELIMITER $$

CREATE FUNCTION rand_num()

RETURNS INT(5)

BEGIN

DECLARE i INT DEFAULT 0;

SET i =FLOOR(10+RAND()*500);

RETURN i;

END $$

創建存儲過程

DELIMITER $$

CREATE PROCEDURE insert_emp(IN START INT(10),IN max_num INT(10))

BEGIN

DECLARE i INT DEFAULT 0;

#set autocommit =0 把autocommit設置成0

SET autocommit = 0;

REPEAT

SET i = i + 1;

INSERT INTO emp VALUES ((START+i) ,rand_string(6),'SALESMAN',0001,CURDATE(),2000,400,rand_num());

UNTIL i = max_num

END REPEAT;

COMMIT;

END $$

執行存儲過程

CALL insert_emp (100001,40000000);

執行慢查詢

SELECT * FROM emp WHERE empno=100003

使用sql查詢數據,只要查詢出數據的時間超過0.9s,就代表是慢查詢,日志文件中會有該條慢查詢的內容

查詢慢查詢日志文件

好文要頂 已關注 收藏該文

總結

以上是生活随笔為你收集整理的mysql 5.5 查询_mysql5.5数据库优化--定位慢查询的全部內容,希望文章能夠幫你解決所遇到的問題。

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