MySQL查看系统性能参数、统计SQL的查询成本last_query_cost的使用

1、查看MySQL系统性能参数

在MySQL中,可以使用SHOW STATUS语句查询一些MySQL数据库服务器的性能参数、执行频率

语法如下:

SHOW  [ GLOBAL | SESSION]  STATUS  LIKE  '参数';

一些常用的性能参数如下:

  • Connections:连接MySQL服务器的次数
  • Uptime:MySQL服务器上线时间(启动时长,单位:秒)
  • Slow_queries:慢查询次数
  • Innodb_rows_read:select查询返回的行数
  • Innodb_rows_inserted:执行INSERT操作插入的行数
  • Innodb_rows_updated:执行UPDATE操作更新的行数
  • Innodb_rows_deleted:执行DELETE操作删除的行数
  • Innodb_rows_%:查看上述4种的汇总行数

如:

查看连接MySQL服务器次数:

SHOW status LIKE 'connections';

查看MySQL启动时长 :

--MySQL启动时长,单位:秒
SHOW status LIKE 'uptime';

 

查看MySQL慢查询的次数:

--MySQL慢查询的次数
SHOW status LIKE 'slow_queries';

查看select、insert、update、delete对应操作的行数

SHOW status LIKE 'innodb_rows_%';

2、统计SQL的查询成本

  • last_query_cost
  • 使用:SHOW  STATUS  LIKE  'last_query_cost';

一条SQL查询语句在执行前需要确定查询执行计划,如果存在多种执行计划的话,MySQL会计算每个执行计划所需要的成本,从中选择成本最小的一个座位最终的执行计划。

如果我们想要查看某条SQL语句的查询成本,可以在执行完这条SQL语句之后,通过查看当前回话中的last_query_cost变量值来得到当前查询的成本。它通常也是我们评价一个查询的执行效率的一个常用指标。这个查询成本对应的是SQL语句所需要读取的页的数量

例如:student_info表有100万条数据,我们查询

select * from student_info where id = 900001;

结果如下:当前SQL只需要查询1个数据页

select * from student_info where id > 199000;

结果如下:

 使用场景它对于比较开销是非常有用的,特别是我们有好几种查询方式可选的时候。

SQL 查询是一个动态的过程,从页加载的角度来看,我们可以得到以下两点结论:

  1. 位置决定效率。如果页就在数据库缓冲池中,那么效率是最高的,否则还需要从内存或者磁盘中进行读取,当然针对单个页的读取来说,如果页存在于内存中,会比在磁盘中读取效率高很多。
  2. 批量决定效率。如果我们从磁盘中对单一页进行随机读,那么效率是很低的(差不多10ms),而采用顺序读取的方式,批量对页进行读取,平均一页的读取效率就会提升很多,甚至要快于单个页面在内存中的随机读取。

所以说,遇到I/O并不用担心,方法找对了,效率还是很高的。我们首先要考虑数据存放的位置,如果是经常使用的数据就要尽量放到缓冲池中,其次我们可以充分利用磁盘的吞吐能力,一次性批量读取数据,这样单个页的读取效率也就得到了提升。

猜你喜欢

转载自blog.csdn.net/weixin_42675423/article/details/131755634