MySql优化之前期探索

10 篇文章 0 订阅

一个系统中数据库往往会成为性能瓶颈,在开发阶段更多考虑的可能是功能的完成,随着系统的投入使用,数据量越来越大,sql语句查询速度慢的问题就会被凸显出来。

对于一个有sql语句性能为题的系统,如何找出问题,解决问题,就是下面要探讨的内容:

  1. 查看sql执行频率:

Mysql客户端连接成功以后,通过show [session|global] status命令可以提供服务器状态信息,show session status显示当前连接的统计结果,show global status显示自数据库上次启动至今的统计结果,如果不写默认参数是session.

我们关心的信息可以通过下面这个语句获取到

Show status like ‘com_______’;(com后面是六个下划线作为占位符)

它可以查询出com开头的信息。这查询的是当前连接的统计结果,如果想查全局可以使用:

Show global status like ‘com______’;

Com_**指的是相应语句执行的次数,它会对所有存储引擎的表操作进行统计,有几个数据比较重要:

Com_select 执行查询的次数,每次查询累加1

Com_insert 执行插入操作的次数,没插入一条数据累加1,批量插入也累加1

Com_update 执行更新操作的次数

Com_delete 执行删除操作的次数

 

show status like ‘Innodb_rows_%’;

这个命令可以显示针对Innodb存储引擎的信息

 

 

 

Innodb_rows_read:select查询返回的行数,

Innodb_rows_inserted 插入的条数

Innodb_rows_updated 更新的条数

Innodb_rows_deleted删除的条数

Connections:试图连接MySql服务器的次数

Uptime:服务器工作时间

Show_queries:慢查询的次数

 

通过这两个命令我们可以看到当前系统是查询占主要地位还是插入占主要地位,为我们的后续优化提供一个方向

 

 

  1. 定位低效率的sql:

可以通过两种方法来定位低效率的sql

  1. 慢查询日志,可以通过慢查询日志来定位到那些执行速度慢的sql语句,但是慢查询日志是在查询结束之后再记录,并不能实时反映sql语句执行的状态。
  2. show processlist:通过这个命令可以实时的看到当前mysql在执行的线程,包括线程的执行状态,可以看到sql语句执行的状态

 

Id:用户登录时系统分配的连接id

User:显示当前登录用户,这个命令只显示当前登录用户权限范围内的sql语句

Host:  显示这个sql语句是由哪个ip的哪个端口发出的。

Db:显示这个进程连接的是哪个数据库

Command:显示当前连接执行的是什么命令,一般有休眠(Sleep),查询(Query),连接(Connection)等

Time:显示这个状态持续的时间,单位是秒

State:显示当前sql语句执行状态,比如查询语句可能经过如下状态:copying to tmp table、sorting result、sending data

Info:显示这个sql语句,通过它可以判断问题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiaxiaomao1981

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值