mysql 查询当前时间到毫秒_MySQL索引优化案例

开发同学或多或少会遇到系统响应慢的问题,除了业务系统本身的问题外,常常会遇到SQL查询慢的问题,这篇文章结合实际案例分析MySQL InnoDB存储引擎的索引优化,这篇文章不会介绍B+树的知识点,如果需要了解聚集索引和辅助索引特点的同学可以参考这篇文章,这篇文章主要会介绍三星索引ICP优化.

如何分析SQL性能

首先是查看MySQL的状态,系统是否正常,常用的几个命令如下:

#显示状态信息(扩展show status like ‘XXX’)
Mysql> show status;
#显示系统变量(扩展show variables like ‘XXX’)
Mysql> show variablesG;
#显示InnoDB存储引擎的状态
Mysql> show engine innodb statusG;
#查看当前SQL执行,包括执行状态、是否锁表等
Mysql> show processlist ;

第二步是找出系统有哪些慢查询SQL,这个要通过slowLog来查询,首先开启慢查询日志,然后在对应日志路径找到mysql-slow.log,相关命令如下所示:

# 检查是否开启慢查询日志
show variables like '%slow%';
# 如果没有开启,也可以在运行时动态开启这个参数
set global slow_query_log=ON;
# 设置慢查询记录查询耗时多长的SQL,这里设置成100毫秒
set long_query_time = 0.1;
# 这里休眠500毫秒试一下慢查询日志是否会记录
select sleep(0.5)

找到了慢SQL后比较常见的做法就是用explain命令分析SQL执行计划,查看SQL语句是否命中了索引,explain的用法可以参考MySQL 性能优化神器 Explain 使用分析,在优化过程中我们可能需要看到优化前后的查询时间对比,这时候可以打开profiling开关,查看某条SQL语句的执行耗时情况,分析是哪个步骤耗时较长,相关设置如下:

# 查看是否开启profiling
select @@profiling;
# 开profiling,注意测试完关闭该特性,否则耗费资源
set profiling=1;
# 查看所有记录profile的SQL
show profiles;
# 查看指定ID的SQL的详情
show profile for query 1;
# 测试完,关闭该特性
set profiling=0;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值