一路走来,所有遇到的人,帮助过我的、伤害过我的都是朋友,没有一个是敌人。如有侵权,请留言,我及时删除!
前言:
一个高性能,稳定的数据库集群并不是指的某一特性优化,就能保证系统的的稳定,需要从网络、硬件资源、操作系统、操作系统参数设置、数据库选型,执行SQL效率几个方面进行整体调优。
优化层级效果对比:
一、数据库服务器的优化步骤
1. 数据库服务器的优化步骤
2. 查看系统性能参数
2.1 SHOW STATUS LIKE '参数'
2.2 查看SQL的查询成本
3. 定位执行慢的 SQL:慢查询日志
3.0 介绍
3.1 开启慢查询日志参数
3.2 查看慢查询次数
3.5 慢查询日志分析工具:mysqldumpslow
3.6 关闭慢查询日志
3.7 删除慢查询日志
4. 定位慢查询语句、查看 SQL 执行成本:show profile
5. 执行计划表:EXPLAIN
5.1 简介
5.2 基本语法
5.3 执行计划表介绍
5.4 EXPLAIN四种输出格式
5.5 SHOW WARNINGS的使用
6. 分析优化器执行计划:trace
7. MySQL监控分析视图-sys schema
二、数据库调优问题的思考
1、在数据库调优中,我们的目标就是响应时间更快,吞吐量更大。利用宏观的监控工具和微观的 日志分析可以帮我们快速找到调优的思路和方式。
调优流程:
- SHOW STATUS观察服务器状态,是否存在周期性波动;如果存在的话就缓存优化;
- 如果还存在不规则延迟或卡顿的话,就开启慢查询、explan分析查询语句;
- 如果发现sql等待时间长,就调优服务器参数;如果发现sql执行时间长,就索引优化、表优化;
- 如果还存在不规则延迟或卡顿的话,就观察sql查询是否到瓶颈了;是的话就读写分离、分库分表
2、三种分析工具(SQL调优三步骤):慢查询、EXPLAN、SHOW PROFLING
整个流程划分成了观察(Show status) 和行动(Action) 两个部分。字母 S 的部分代表观察(会使用相应的分析工具),字母 A 代表的部分是行动(对应分析可以采取的行动)。
三、MySQL数据库优化入门
1、SQL优化内容包括sql语句的优化、参数调优、慢查询日志、EXPLAIN 执行计划分析等。
2、 查看系统性能参数
2.1 SHOW STATUS LIKE '参数'
在MySQL中,可以使用SHOW STATUS 语句查询一些MySQL数据库服务器的性能参数、执行频率。
SHOW STATUS语句语法如下:
SHOW [GLOBAL|SESSION] STATUS LIKE '参数';
示例,查看数据库连运行时长(单位秒)和连接次数
大佬文档推荐
MySQL运行状态show status中文详解-CSDN博客
2.2 查看SQL的查询成本
SQL查询是一个动态的过程,从页加载的角度来看:
SHOW STATUS LIKE 'last_query_cost';
SQL的执行效率对比:缓存 ---> 内存--->磁盘。如果页就在数据库缓冲池中,那么效率是最高的,否则还需要从内存或者磁盘中进行读取,当然针对单个页的读取来说,如果页存在于内存中,会比在磁盘中读取效率高很多.
批量顺序查询平均下来每页查询更高
如果我们从磁盘中对单一页进行随机读,那么效率是很低的(差不多10ms),而采用顺序读取的方式,批量对页进行读取,平均一页的读取效率就会提升很多,甚至要快于单个页面在内存中的随机读取。
所以说,遇到IO并不用担心,方法找对了,效率还是很高的。我们首先要考虑数据存放的位置,如果是经常使用的数据就要尽量放到缓冲池中,其次我们可以充分利用磁盘的吞吐能力,一次性批量读取数据,这样单个页的读取效率也就得到了提升。
生成1000万+的测试数据
mysql 生成 测试数据 mysql生成大量测试数据_karen的技术博客_51CTO博客
查看777002的数据