Mysql之我见六(查询截取分析)


(1)查询优化
1.优化原则:小表驱动大表,即小的数据集驱动大的数据集

2.Exists和In的区别
Exists语法:select * from table where exists(subquery)
将主查询的数据,放到子查询中做条件验证,根据条件的验证结果(true 或者 false)来决定查询的数据结果是否可以保留。
A: exists(subqury)只返回ture或者false,因此子查询中的select * 也可以select 1 或者其它,官方说法是实际执行时会忽略select清单,因此没有区别。
B: exists子查询的实际执行可能经过优化而不是我们理解生的逐条对比,如果担忧效率问题,可进行实际检验以确定是否效率有问题。
C:exists子查询往往也可以用条件表达式,其他子查询或者join来替代,何种最优需要具体问题具体发分析。
3.order by 优化(影响索引)



(2)慢查询日志
Mysql的慢查询日志是Mysql提供的一种日志记录,它用来记录在Mysql中响应时间超过阈值的语句,具体指运行时间超过long_query_time值的sql,则会被记录到慢查询日志中。
具体指运行时间超过long_query_time值的sql,则会被记录到慢查询日志中。long_query_time的默认值为10,意思是指运行超过10秒以上的语句。
由他来查看那些sql超出了omen的最大忍耐时间,比如 一条sql执行超过5秒,我们就算慢sql,希望能收集超过5秒的sql,结合explain进行全面分析。
默认情况下,Mysql数据库没有开启慢查询日志,需要我们手动设置这个参数。当然,如果不是调优需要的话,一般不建议启动该参数,因为开启该慢查询日志会或多或少带来一定的性能影响,慢查询日志支持将日志记录写入文件。
查看慢查询日志的命令:SHOW VARIABLES LIKE ‘%slow_query_log%’;
如果要永久生效,就必须修改配置文件my.cnf(其它系统变量也是如此) 修改my.cnf文件,[mysql]下增加或修改参数,slow_query_log和slow_query_log_file后,然后重启 Mysql服务器,也即将如下两行配置进my.cnf文件
slow_query_log=1
slow_query_log_file=/var/lib/mysql/atgui-slow.log
查看慢查询日志时间的命令:SHOW VARIABLES LIKE ‘%long_query_time%’;

在生产环境中,如果要手工分析日志,查找、分析sql,显然是个体力活,Mysql提供了 日志分析工具mysqldumpslow。
(3)Show Profile
mysql提供可以用来分析当前会话中语句执行的资源消耗情况,可以用于sql的调优。
在默认的情况下,参数处于关闭状态,并保存最近15次的运行结果。
Profile分析步骤:1.是否支持,看看当前的mysql版本是否支持
2.开启功能,默认是关闭,使用前需要开启
3.运行sql
4.查看结果:show profiles;
5.诊断sql、show profile cpu ,block io for query上一步前面的问题sql数字号码
6.日常开发需要注意的结论


(5)全局查询日志
在生产环境不建议开启全局日志。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值