1、数据库存储引擎:使用不同的数据库存储引擎,查询速度会不一样
2、mysql调优,宏观角度主要从两个方向:
3、硬件方向
需要考虑的地方及瓶颈所在:
4、数据库方向
表结构是否合理
索引的设计是否合理
对于不同的情况选择不同的存储引擎
每张表是否具有适当的行格式
应用程序是否使用适当的锁策略
所有缓存区域使用的大小是否正确
5、优化顺序
首选优化SQL语句及索引
6、常见检查问题方式
explain
获取查询语句的执行计划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脚本,具体示例,后续补充…)