玩转Mysql 八 (MySQ优化入门篇)

2024-01-15 05:44

本文主要是介绍玩转Mysql 八 (MySQ优化入门篇),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一路走来,所有遇到的人,帮助过我的、伤害过我的都是朋友,没有一个是敌人。如有侵权,请留言,我及时删除!

前言:

一个高性能,稳定的数据库集群并不是指的某一特性优化,就能保证系统的的稳定,需要从网络、硬件资源、操作系统、操作系统参数设置、数据库选型,执行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、在数据库调优中,我们的目标就是响应时间更快,吞吐量更大。利用宏观的监控工具和微观的   日志分析可以帮我们快速找到调优的思路和方式。 

调优流程:

  1. SHOW STATUS观察服务器状态,是否存在周期性波动;如果存在的话就缓存优化
  2. 如果还存在不规则延迟或卡顿的话,就开启慢查询、explan分析查询语句
  3. 如果发现sql等待时间长,就调优服务器参数;如果发现sql执行时间长,就索引优化、表优化;
  4. 如果还存在不规则延迟或卡顿的话,就观察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的数据

这篇关于玩转Mysql 八 (MySQ优化入门篇)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/607842

相关文章

SQL Server 中的表进行行转列场景示例

《SQLServer中的表进行行转列场景示例》本文详细介绍了SQLServer行转列(Pivot)的三种常用写法,包括固定列名、条件聚合和动态列名,文章还提供了实际示例、动态列数处理、性能优化建议... 目录一、常见场景示例二、写法 1:PIVOT(固定列名)三、写法 2:条件聚合(CASE WHEN)四、

Mybatis对MySQL if 函数的不支持问题解读

《Mybatis对MySQLif函数的不支持问题解读》接手项目后,为了实现多租户功能,引入了Mybatis-plus,发现之前运行正常的SQL语句报错,原因是Mybatis不支持MySQL的if函... 目录MyBATis对mysql if 函数的不支持问题描述经过查询网上搜索资料找到原因解决方案总结Myb

MySQL 筛选条件放 ON后 vs 放 WHERE 后的区别解析

《MySQL筛选条件放ON后vs放WHERE后的区别解析》文章解释了在MySQL中,将筛选条件放在ON和WHERE中的区别,文章通过几个场景说明了ON和WHERE的区别,并总结了ON用于关... 今天我们来讲讲数据库筛选条件放 ON 后和放 WHERE 后的区别。ON 决定如何 "连接" 表,WHERE

mysql_mcp_server部署及应用实践案例

《mysql_mcp_server部署及应用实践案例》文章介绍了在CentOS7.5环境下部署MySQL_mcp_server的步骤,包括服务安装、配置和启动,还提供了一个基于Dify工作流的应用案例... 目录mysql_mcp_server部署及应用案例1. 服务安装1.1. 下载源码1.2. 创建独立

Mysql中RelayLog中继日志的使用

《Mysql中RelayLog中继日志的使用》MySQLRelayLog中继日志是主从复制架构中的核心组件,负责将从主库获取的Binlog事件暂存并应用到从库,本文就来详细的介绍一下RelayLog中... 目录一、什么是 Relay Log(中继日志)二、Relay Log 的工作流程三、Relay Lo

MySQL日志UndoLog的作用

《MySQL日志UndoLog的作用》UndoLog是InnoDB用于事务回滚和MVCC的重要机制,本文主要介绍了MySQL日志UndoLog的作用,文中介绍的非常详细,对大家的学习或者工作具有一定的... 目录一、Undo Log 的作用二、Undo Log 的分类三、Undo Log 的存储四、Undo

MySQL游标和触发器的操作流程

《MySQL游标和触发器的操作流程》本文介绍了MySQL中的游标和触发器的使用方法,游标可以对查询结果集进行逐行处理,而触发器则可以在数据表发生更改时自动执行预定义的操作,感兴趣的朋友跟随小编一起看看... 目录游标游标的操作流程1. 定义游标2.打开游标3.利用游标检索数据4.关闭游标例题触发器触发器的基

MySQL查看表的历史SQL的几种实现方法

《MySQL查看表的历史SQL的几种实现方法》:本文主要介绍多种查看MySQL表历史SQL的方法,包括通用查询日志、慢查询日志、performance_schema、binlog、第三方工具等,并... 目录mysql 查看某张表的历史SQL1.查看MySQL通用查询日志(需提前开启)2.查看慢查询日志3.

MySQL底层文件的查看和修改方法

《MySQL底层文件的查看和修改方法》MySQL底层文件分为文本类(可安全查看/修改)和二进制类(禁止手动操作),以下按「查看方法、修改方法、风险管控三部分详细说明,所有操作均以Linux环境为例,需... 目录引言一、mysql 底层文件的查看方法1. 先定位核心文件路径(基础前提)2. 文本类文件(可直

MySQL数据目录迁移的完整过程

《MySQL数据目录迁移的完整过程》文章详细介绍了将MySQL数据目录迁移到新硬盘的整个过程,包括新硬盘挂载、创建新的数据目录、迁移数据(推荐使用两遍rsync方案)、修改MySQL配置文件和重启验证... 目录1,新硬盘挂载(如果有的话)2,创建新的 mysql 数据目录3,迁移 MySQL 数据(推荐两