加入收藏 | 设为首页 | 会员中心 | 我要投稿 济南站长网 (https://www.0531zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

高性能的MySQL(2)慢查询

发布时间:2016-08-06 14:52:51 所属栏目:MySql教程 来源:站长网
导读:一、剖析MySQL查询 1、首先从慢查询开始,慢查询是开销最低,精度最高的测量查询时间的工具。 a、开始mysql的慢查询,修改my.conf [mysqld]#开启慢查询log_slow
一、剖析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、查看当前信息

高性能的MySQL(2)慢查询

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
$$

查看本栏目更多精彩内容:http://www.bianceng.cn/database/MySQL/

(编辑:济南站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读