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

歡迎訪問 生活随笔!

生活随笔

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

数据库

高性能的MySQL(2)慢查询

發布時間:2023/12/10 数据库 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 高性能的MySQL(2)慢查询 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、剖析MySQL查詢

1、首先從慢查詢開始,慢查詢是開銷最低,精度最高的測量查詢時間的工具。

a、開始mysql的慢查詢,修改my.conf

[mysqld] #開啟慢查詢 log_slow_queries = ON #指定日志文件存放位置,可以為空,系統會給一個缺省的文件host_name-slow.log log-slow-queries = /usr/local/mysq/var/slowquery.log #記錄超過的時間,默認為10s long_query_time = 1 #log下來沒有使用索引的query,可以根據情況決定是否開啟 log-queries-not-using-indexes #執行速度較慢的管理命令(比如OPTIMEZE TABLE)也會被記錄 log-slow-admin-statements

b、查看當前信息

c、寫存儲過程,生成一個500W記錄的表

#生成隨機字符串函數,在存儲過程中調用 delimiter $$ create function rand_string(n int) returns varchar(255) begin declare chars_str varchar(100) default 'abcdefghigklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; 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 ; #生成隨機數字,在存儲過程中調用 delimiter $$ create function rand_num() returns int(5) begin declare i int default 0; set i = floor(10+rand()*500); return i; end $$ delimiter ; #定義存儲過程 delimiter $$ create procedure insert_emp(start int(10),max_num int(10)) begin declare i int default 0; set autocommit = 0; repeat set i = i+1; insert into emp values((start+i),rand_string(6),'SALESMAN',0001,2000,400,rand_num(),curdate()); until i = max_num end repeat; end $$

d、查看表數據

e、生成一條慢查詢

f、查看日志,會有一條這樣的記錄

# Time: 131010 16:31:11 # User@Host: root[root] @ localhost [] # Query_time: 1.045439 Lock_time: 0.000057 Rows_sent: 1 Rows_examined: 5000000 SET timestamp=1381393871; select * from emp where id=1000000;




總結

以上是生活随笔為你收集整理的高性能的MySQL(2)慢查询的全部內容,希望文章能夠幫你解決所遇到的問題。

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