标签:语句 缓存 mysql 查询 索引 调优 SQL 执行
1、数据库存储引擎:使用不同的数据库存储引擎,查询速度会不一样
2、mysql调优,宏观角度主要从两个方向:
- 硬件方向
- 数据库方向
3、硬件方向
需要考虑的地方及瓶颈所在:
- 磁盘寻找
- 磁盘读写
- CPU
- 存储带宽
4、数据库方向
-
表结构是否合理
-
索引的设计是否合理
-
对于不同的情况选择不同的存储引擎
-
每张表是否具有适当的行格式
-
应用程序是否使用适当的锁策略
-
所有缓存区域使用的大小是否正确
5、优化顺序
- 优化成本:硬件>系统配置>数据库表结构>SQL语句及索引
- 优化效果:硬件<系统配置<数据库表结构<SQL语句及索引
首选优化SQL语句及索引
6、常见检查问题方式
- 用
explain
获取查询语句的执行计划 - slow-log,查看慢查询日志信息
7、SQL命令执行流程
mysql架构图
(1)客户端向服务端发送SQL命令
(2)服务端连接器连接并验证
(3)查询缓存,有结果直接返回,没有则继续向下执行
(4)解析器解析SQL为解析树
(5)预处理器对解析树继续处理,处理成新的解析树
(6)优化器自动选择最优执行计划,生成执行计划
(7)执行器执行执行计划,访问存储引擎接口
(8)存储引擎访问物理文件并返回结果
(9)如果开启了缓存,缓存管理器把结果放入查询缓存中
(10)返回结果给客户端
8、调优思路
(1)查看慢查询日志(slow-log),分析出查询慢的语句
(2)按照一定优先级,一个一个地排查所有慢语句
(3)explain获取sql语句的执行计划,并分析,主要关注执行计划中type(访问类型)、key(实际用到的索引)
(4)调整索引或者SQL语句本身
9、索引优化
(1)使用短索引(前缀索引):
create index index_name ON table_name(column(length))
---- 示例
create index address_index ON 'person_info'(address(9))
(2)避免使用索引失效的语句或者操作,如order by、like的正确使用
(3)不要在列上进行运算
(4)索引最多只能用于一个范围列,在where语句中,把最主要的查询条件放在第一个
10、sql语句优化
(按照常见的sql语句规范去写sql脚本,具体示例,后续补充…)
标签:语句,缓存,mysql,查询,索引,调优,SQL,执行 来源: https://blog.csdn.net/Crezfikbd/article/details/120438487
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。