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 查询是一个动态的过程,从页加载的角度来看,我们可以得到以下两点结论:
位置决定效率
。如果页就在数据库缓冲池
中,那么效率是最高的,否则还需要从内存
或者磁盘
中进行读取,当然针对单个页的读取来说,如果页存在于内存中,会比在磁盘中读取效率高很多。批量决定效率
。如果我们从磁盘中对单一页进行随机读,那么效率是很低的(差不多10ms),而采用顺序读取的方式,批量对页进行读取,平均一页的读取效率就会提升很多,甚至要快于单个页面在内存中的随机读取。所以说,遇到I/O并不用担心,方法找对了,效率还是很高的。我们首先要考虑数据存放的位置,如果是经常使用的数据就要尽量放到
缓冲池
中,其次我们可以充分利用磁盘的吞吐能力,一次性批量读取数据,这样单个页的读取效率也就得到了提升。