MySql教程

mysql调优

本文主要是介绍mysql调优,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

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调优的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!