mysql调优
2021/9/25 2:12:53
本文主要是介绍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调优的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-04部署MySQL集群项目实战:新手入门教程
- 2024-11-04如何部署MySQL集群资料:新手入门指南
- 2024-11-02MySQL集群项目实战:新手入门指南
- 2024-11-02初学者指南:部署MySQL集群资料
- 2024-11-01部署MySQL集群教程:新手入门指南
- 2024-11-01如何部署MySQL集群:新手入门教程
- 2024-11-01部署MySQL集群学习:新手入门教程
- 2024-11-01部署MySQL集群入门:新手必读指南
- 2024-10-23BinLog入门:新手必读的MySQL二进制日志指南
- 2024-10-23Binlog入门:MySQL数据库的日志管理指南