索引优化之Explain 及慢查询日志

索引:本质是数据结构,简单理解为:排好序的快速查找数据结构,以索引文件的形式存储在磁盘中。
目的:提高数据查询的效率,优化查询性能,就像书的目录一样。
优势:提高检索效率,降低IO成本;排好序的表,降低CPU的消耗
劣势:索引实际也是一张表,该表保存了主键与索引字段,并指向实体表的记录,占用空间;降低更新表的速度(改数据表本身,也需要修改索引);花时间研究建立最优秀的索引。

 索引优化分析主要包括几个部分,其中对Explain关键字进行详细了解。

Explain关键字:使用Explain 关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理你的SQL语句的,分析你的查询语句或是表结构的性能瓶颈。

Explain能干嘛:表的读取顺序、数据读取操作的操作类型、哪些索引可以使用、哪些索引被实际使用、表之间的引用、每张表有多少行被优化器查询。

Explain +SQL语句计划执行包含的信息:id |select_type |table |patitions |type |possible_keys |key |key_len |ref |rows |filtered |extra|

 

 二、查询截取分析主要包括5个部分:查询优化、慢日志查询、批量数据脚本、show profile、全局查询日志等信息,这里主要了解了2部分。

1、查询优化:永远小表驱动大表;Order by ;Group by

2、慢日志查询

图表里面主要包括是什么、怎么玩、日志分析工具,从左往右进行查看。

 

慢查询日志:Mysql提供的一种日志记录,运行时间超过long_querry_time值得SQL,会被记录到慢查询日志中。long_querry_time默认等于10s.

慢日志具体操作代码如下:

慢日志查询
SHOW VARIABLES LIKE 'long_query_time%';#查看慢查询的时间阈值,默认显示为10S

SHOW VARIABLES LIKE '%slow_query_log%';#查看是否开启

set global slow_query_log=1; #设置为1,开启慢查询日志

set global long_query_time=0.001;#设置慢查询的时间为0.001,超过0.001就显示为慢查询

select * from sleep(1); #睡眠1s

show global status like '%Slow_queries';#查询慢查询的条数,需要优化的条数

mysqldumpslow -s r -t /var/lib/mysql/RMT01-slow.log;#路径就是查询是否开启中show_query_log_file的文件路径

 

猜你喜欢

转载自www.cnblogs.com/wendyw/p/11591983.html