sql 优化(一):通过show status命令了解各种SQL的执行频率和windows 慢查询日志的查看

通过show status命令了解各种SQL的执行频率

show status like ‘uptime’;

可以查询mysql 执行了多长时间

show  stauts like ‘com_select’ 执行查询的次数(在前面加一个com) 

show stauts like ‘com_insert’ 执行插入的次数 ..类推 update  delete

可以知道当前已经执行了多少次的查询,插入,删除,更新等等操作;就可以判断出来哪一种语句用的比较多,就可以判断出来用哪一种存储引擎比较好

Show [session ]or [global]  status like ‘xxx’

在status 前面可以添加两种参数session表示的当前查询窗口的状态的统计,global 是全体窗口的状态的统计

show status like 'connections';

/可以查出来有多少个连接在连我的电脑的mysql 如果想看是到底是谁连接我的mysql 的话,可以在cmd 中 netstat-n 外部地址代表的是访问我数据库的端口不一定是3306 有可能是apache 或者是其他的服务

show status like 'slow_queries';

扫描二维码关注公众号,回复: 2904362 查看本文章

显示慢查询的操作次数

默认情况下,mysql认为10秒才是一个慢查询(通常情况下只有在数据超过4000万的时候才有可能查询超过10s,所以只能是通过修改慢查询的条件,当超过1s 就算是慢查询了)

show variables like 'long_query_time' ;

可以显示当前慢查询时间

set long_query_time=0.5 ;

可以修改慢查询时间 只要是时间超过0.5秒就算是慢查询

造400万的数据

#这里我们又自定了一个函数
create function rand_num( )
returns int(5)
begin
 declare i int default 0;
 set i = floor(10+rand()*500);
return i;
  end $$
#随即添加雇员[光标]  400w
#start 表示雇员的编号从哪里开始
#max_num 表示一共增加多少雇员
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;  //设置为0 就是不提交,最后一起提交
 repeat
 set i = i + 1;
 insert into emp values ((start+i) ,rand_string(6),'SALESMAN',0001, CURRENT_DATE(),2000,400,rand_num());
  until i = max_num
 end repeat;
   commit;//最后一起提交
 end $$
call insert_emp(100001,4000000) 这样的话数据量就会达到400万了
//可以试着查询一次看看时间的长短

select * from emp where empno = 789632

//查看慢查询的次数

show status like 'slow_queries';

可以知道慢查询时间上超过0.5秒的为3次
启动慢查询日志
1)慢查询日志放的地方在

 

create function rand_num( )
returns int(5)
begin
 declare i int default 0;
 set i = floor(10+rand()*500);
return i;
  end 
#随即添加雇员[光标]  400w
#start 表示雇员的编号从哪里开始
#max_num 表示一共增加多少雇员
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;  #设置为0 就是不提交,最后一起提交
 repeat
 set i = i + 1;
 insert into emp values ((start+i) ,rand_string(6),'SALESMAN',0001, CURRENT_DATE(),2000,400,rand_num());
  until i = max_num
 end repeat;
   commit;#最后一起提交
 end 

call insert_emp(100001,4000000) 这样的话数据量就会达到400万了
//可以试着查询一次看看时间的长短
select * from emp where empno = 789632

//查看慢查询的次数
show status like 'slow_queries';

可以知道慢查询时间上超过0.5秒的为3次
启动慢查询日志
1)慢查询日志放的地方在

就在这个路径下放着

2)启动慢查询日志
先把mysql 的服务关闭

关闭掉以后

查看慢查询日志的目录

C:/ProgramData/MySQL/MySQL Server 5.5/Data/


这个时候进入到mysql 的安装路径的bin 目录下启动mysqld.exe,开始的时候一定要保证mysql 服务是停止的
mysqld.exe --safe-mode  --slow-query-log [mysql5.5 可以在my.ini指定]

在慢查询日志的目录下会生成

如果不小心把PC-20180227CJKB.pid 文件删除了,就

就到进程管理器中把这个删除了就可以了,然后再重新启动mysqld.exe --safe-mode  --slow-query-log就可以了
这个时候启动mysql 服务器
所有的慢查询日志的设置恢复到原来,所以要重新设置
set long_query_time=0.5;
select * from emp where empno = 789632
show status like 'slow_queries';查询了以后可以在C:/ProgramData/MySQL/MySQL Server 5.5/Data/路径下
查看慢查询日志情况

猜你喜欢

转载自blog.csdn.net/qq_20610631/article/details/82056747