标签:inf class 直接 比较 对比 建立 处理 去重 item
一、概述
数据库优化主要有两个方向:即安全与性能
explain(分析查询计划),show index from table(分析索引)
通过执行计划判断,索引问题(有没有、合不合理)或者语句本身问题
SESSION_ID; # 杀掉有问题的session
按照一定优先级,进行一个一个的排查所有慢语句。
分析top sql,进行explain调试,查看语句执行时间。
调整索引或语句本身。
② 服务器检查查询缓存,如果找到了,就从缓存中返回结果,否则进行下一步。
③ 服务器解析,预处理。
④ 查询优化器优化查询
⑤ 生成执行计划,执行引擎调用存储引擎API执行查询
⑥服务器将结果发送回客户端。
查询缓存 在解析一个查询语句之前,如果查询缓存是打开的,那么MySQL会优先检查这个查询是否命中查询缓存中的数据,如果命中缓存直接从缓存中拿到结果并返回给客户端。这种情况下,查询不会被解析,不用生成执行计划,不会被执行。
语法解析和预处理器 MySQL通过关键字将SQL语句进行解析,并生成一棵对应的“解析树”。MySQL解析器将使用MySQL语法规则验证和解析查询。
查询优化器 语法书被校验合法后由优化器转成查询计划,一条语句可以有很多种执行方式,最后返回相同的结果。优化器的作用就是找到这其中最好的执行计划。
查询执行引擎 在解析和优化阶段,MySQL将生成查询对应的执行计划,MySQL的查询执行引擎则根据这个执行计划来完成整个查询。最常使用的也是比较最多的引擎是MyISAM引擎和InnoDB引擎。mysql5.5开始的默认存储引擎已经变更为innodb了。
log-slow-queries=/data/mysqldata/slow-query.log
long_query_time=3
如果慢查询日志中记录内容很多,可以使用mysqldumpslow工具(MySQL客户端安装自带)来对慢查询日志进行分类汇总。mysqldumpslow对日志文件进行了分类汇总,显示汇总后摘要结果。
可以对多条log日志,分类汇总,比如得到。
得到返回记录集最多的10个查询。
得到按照时间排序的前10条里面含有左连接的查询语句。
EXPLAIN SELECT * FROM products
结果的列的说明如下
通过上面的对比测试可以看出,索引是快速搜索的关键。MySQL索引的建立对于MySQL的高效运行是很重要的。对于少量的数据,没有合适的索引影响不是很大,但是,当随着数据量的增加,性能会急剧下降。
索引的目的在于提高查询效率,大家可以回忆之前学习的全文检索技术。类似使用字典,如果没有目录(索引),那么我们要从字典的第一个字开始查询到最后一个字才能有结果,可能要把字典中所有的字看一遍才能找到要结果,而目录(索引)则能够让我们快速的定位到这个字的位置,从而找到我们要的结果。
in天然具备去重功能
标签:inf class 直接 比较 对比 建立 处理 去重 item
原文地址:https://www.cnblogs.com/gushiye/p/13998482.html