分享

03.慢查询

 昵称36863495 2016-09-30
问题是:如何从一个大项目中,迅速的定位执行速度慢的查询语句?

1.首先我们了解mysql数据库的一些允许状况
show session | global  status like ‘uptime’ //运行的时间 session当前回话 global所有的
show status like ‘com_select’ //select命名使用的次数,update,delete,等一样
show status like connections //查询多少个链接
-----------------------------------
netstats -anb  //   查询链接的详细信息 ip,端口等 ;mysql服务端口为3306 客户端随机分配端口

------------------------------------

2.如何定位慢查询


步骤:
i:构建一个大表(400万以上数据)->用存储过程构建,要去数据贴近真实
创建表
 create table dept(/*部门表*/
deptno mediumint unsigned not null default 0,//编号 unsigned 无符号整数
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 unsigend not null default 0,//部门编号
)engine=myisam default charset=utf8;

------------------
create table salgrade(/*工资级别表*/
grade mediumint unsigend not null default 0,
losal decimal(17,2) not null,
hisal decimal(17,2) not null,
)engine=myisam default charset=utf8;

-----------------
创建函数.php
-----------------------------
举例:
<?php
$con=mysql_connect("localhost","root","root");
if(!$con){
die(“失败”
}
mysql_select_db('temp');
$sql="select rand_string(6) from dual";//dual 亚元表
>

---------------------------


ii:show variables like ‘long_query’ //显示慢查询的时间是多少
      set long_query_time=1 //修改慢查询时间为1s ;然后打开数据库运行一天,再查看慢查询
iii:show status like ‘slow_queries’ //显示慢查询次数
iiii:把慢查询的sql记录到日志中,默认不会打开。需要在启动mysql时候,指定慢查询记录


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多