开发者社区> 技术小美> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

高性能的MySQL(2)慢查询

简介:
+关注继续查看

一、剖析MySQL查询

1、首先从慢查询开始,慢查询是开销最低,精度最高的测量查询时间的工具。

a、开始mysql的慢查询,修改my.conf

1
2
3
4
5
6
7
8
9
10
11
[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、查看当前信息

155531979.png

c、写存储过程,生成一个500W记录的表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#生成随机字符串函数,在存储过程中调用
delimiter $$
create function rand_string(n intreturns varchar(255)
begin
declare chars_str varchar(100) default 'abcdefghigklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
declare return_str varchar(255) default '';
declare 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 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 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、查看表数据

162428446.png

e、生成一条慢查询

163504167.png

f、查看日志,会有一条这样的记录

1
2
3
4
5
# 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;






















本文转自shayang8851CTO博客,原文链接:http://blog.51cto.com/janephp/1306928,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
慢查询与MySQL语句优化(下)
如果我们了解了Mysql中的索引原理之后,(详见探秘数据库 —— 事务 + InnoDB存储引擎),如何利用索引并对一些执行较慢的sql进行优化也是必要的,所以我们可以结合索引的原理来探究一下慢查询与优化的知识。
29 0
慢查询与MySQL语句优化(上)
如果我们了解了Mysql中的索引原理之后,(详见探秘数据库 —— 事务 + InnoDB存储引擎),如何利用索引并对一些执行较慢的sql进行优化也是必要的,所以我们可以结合索引的原理来探究一下慢查询与优化的知识。
47 0
win2003下全自动快速安装php+mysql套件
导读:Windows 2003下一键快速安装PHP和MySql的安装包 场景:wind2003 32位 php5.2 1、下载php+mysql套件  地址1 http://pan.baidu.com/s/1gd7rCqR 地址2 http://www.
1061 0
MySQL自动化安装脚本
注:因官方MySQL下载较慢,请先自行上传mysql安装包至/usr/local/src目录 #!/bin/bash #This shell script can be used to install mysql instances automatically #Written by LiHui #Version 1.
811 0
linux ubuntu系统下MySQL的安装及设置
debian下安装MySQL:1、构建源或使用光盘镜像,当然你插入光盘也没问题2、有源时本地文件的源配置:修改/etc/apt/sources.list文件, 示例:deb http://192.168.10.73/ sid main 以上设置如果待安装的电脑可以接入Internet,均可省略。
1079 0
linux下安装mysql手记
安装mysql 下载mysql-standard-4.1.8-pc-linux-i686.tar.gz文件到目录/usr/local/下 # groupadd mysql   //添加mysql用户组 # useradd -g mysql mysql  //在mysql用户到mysql用户组 # tar –zxvf mysql-standard-4.
662 0
centos7上安装mysql
在centos的库中mysql已经被mariadb数据库替代,如果想继续在centos上安装mysql就需要自己下载安装包# wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm # rpm -ivh mysql-community-release-el7-5.noarch.rpm # yum in
2375 0
aix Mysql安装 Oracle官方教程
http://dev.mysql.com/doc/refman/5.1/en/aix-installation.html   (aix Mysql安装 Oracle官方教程)
589 0
aix 在线软件包安装 字符集 mysql安装
http://www.oss4aix.org/download/rpmdb/deplists/ Aix6.1 安装mysql别的我就不扯了,自从Oracle收购sun后 Mysql在Aix Parch上直接挂了,你懂的,商业利益!scripts.
656 0
2.安装号mysql后当重启Linux服务器之后发现进入不了的解决方案
 1 以root身份登录redhat操作系统 2 查看mysql的相关进程 ps –u mysql 3 杀死mysql的进程6195 Kill -9 6195 4 启动mysql服务 service mysql start(这一步也可以不要,但是要看是否自动启动了mysql服务) 5 登录mysql
1202 0
+关注
6819
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载