天天看点

MySQL的优化--------慢查询(1)

第一:sql本身的优化

问题是:如何从一个大项目中,迅速的定位执行速度慢的语句(定位慢查询)?

1.  首先了解Mysql数据库的一些运行状态如何查询?

A. Mysql的整体状态:

     show status

B. Mysql运行了多长时间:

     Show status like ‘uptime’
MySQL的优化--------慢查询(1)

C. Mysql执行了多少次insert/select/delete/update/...

     Show status like’com_insert
MySQL的优化--------慢查询(1)
     Show status like’com_select’
MySQL的优化--------慢查询(1)
     Show status like’com_delete’
     Show status like’com_update’

正常请况下show 后面是默认的session这个参数,指的是当前会话,如果想运行的是从Mysql启动后的查询,则是用的另一个参数:global 比如:

show global status like 'com_insert'
MySQL的优化--------慢查询(1)

而我们上面得到的是0.

D. 试图连接Mysql数据库的次数

SHOW STATUS LIKE 'connections'
MySQL的优化--------慢查询(1)

E. 显示慢查询次数(次数越少越好)

SHOW STATUS LIKE 'slow_queries'
MySQL的优化--------慢查询(1)

2. 如何定位慢查询

当然,定位慢查询首先要项目中出现慢查询。问题来了:多长时间才算慢查询?

在Mysql中默认:查询10秒中才算是慢查询

A. 显示当前慢查询时间语句:

SHOW VARIABLES LIKE 'long_query_time'
MySQL的优化--------慢查询(1)

在一个项目中如果要出现慢查询,一般数据量会很大,起码也是千万或是亿万级别的数据量

B. 修改慢查询时间语句:

SET long_query_time=1
MySQL的优化--------慢查询(1)

再查询 一次当前慢查询时间,结果为:

MySQL的优化--------慢查询(1)