【MySQL从入门到精通】【高级篇】(二十一)数据库优化步骤_查看系统性能参数

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 上一篇文章我们介绍了哪些情况下适合创建索引,哪些情况下不适合创建索引,下面就介绍一下数据库优化步骤 【MySQL从入门到精通】【高级篇】(二十)适合创建索引的11种情况&不适合创建索引的7种情况,万字长文

1. 简介

上一篇文章我们介绍了哪些情况下适合创建索引,哪些情况下不适合创建索引,下面就介绍一下数据库优化步骤 【MySQL从入门到精通】【高级篇】(二十)适合创建索引的11种情况&不适合创建索引的7种情况,万字长文

在数据库调优中,我们的目标就是响应时间更快,吞吐量更大。利用宏观的监控工具和微观的日志分析可以帮我们快速找到调优的思路和方式。

2. 数据库服务器的优化步骤

当我们遇到数据库调优问题的时候,该如何思考呢?

整个流程划分成了观察(Show status)行动(Action) 两个部分。字母S的部分代表观察(会使用)

首先观察服务器状态是否存在周期性波动,如果缓存策略没有解决,或者不是周期性波动的原因,我们就需要进一步分析查询延迟和卡顿的原因。


接下来进入S2这一步,我们需要开启慢查询。慢查询可以帮我们定义执行慢的SQL语句。我们可以通过设置long_query_time 参数定义"慢"的阈值,如果SQL执行时间超过了 long_query_time,则会认为是慢查询,当手机上来这些慢查询之后,我们就可以通过分析工具对慢查询日志进行分析。


在S3这一步骤中,我们就知道了执行慢的SQL,这样就可以针对性地用EXPLAIN查看对应SQL语句的执行计划,或者使用** show profile** 查看SQL中每一个步骤的时间成本,这样我们就可以了解SQL查询慢是因为执行时间长,还是等待时间长。


如果是SQL等待时间长,我们进入A2步骤。这一步骤中,我们可以调优服务器参数。比如适当增加数据库缓冲池等。如果SQL执行时间长,就进入A3步骤,这一步中我们需要考虑是索引设计的问题?还是查询关联的数据表过多?还是因为数据表的字段设计问题导致了这一现象。然后在这些维度上进行对应的调整。


如果A2和A3都不能解决问题,我们需要考虑数据库自身的SQL查询性能是否达到了瓶颈,如果确认没有达到性能瓶颈,就需要重新检查,重复以上的步骤,如果已经达到了性能瓶颈,进入A3阶段,需要考虑增加服务器,采用读写分离的架构,或者考虑对数据库进行分库分表,比如垂直分库,垂直分表和水平分表等。


以上就是数据库调优的流程思路。如果我们发现执行SQL时存在不规则延迟或卡顿的时候,就可以采用分析工具帮我们定位有问题的SQL,这三种分析工具你可以理解是SQL调优的三个步骤:慢查询,EXPLAIN和SHOW PROFILING。

3. 查看系统性能参数

在MySQL中,可以使用SHOW STATUS 语句查询一些MySQL数据库服务器的性能参数、执行频率

SHOW STATUS语句语法如下:

SHOW [GLOBAL|SESSION] STATUS LIKE '参数';

一些常用的性能参数如下:


Connections: 连接MySQL服务器的次数。

Uptime: MySQL服务器的上线时间。

Slow_queries: 慢查询的次数。

Innodb_rows_read: Select查询返回的行数

Innodb_rows_inserted: 执行INSERT操作插入的行数

Innodb_rows_updated: 执行UPDATE操作更新的行数

Innodb_rows_deleted:执行DELETE操作删除的行数

Com_select:查询操作的次数

Com_insert:插入操作的次数。对于批量插入的INSERT操作,只累加一次。

Com_update:更新操作的次数。

Com_delete:删除操作的次数。

若查询MySQL服务器的连接次数,则可以执行如下语句:

SHOW STATUS LIKE 'connections%';

总结

本文展示了数据库优化的步骤以及查询性能参数的方式,总体来说,数据优化的步骤主要的思路是:先观察,后处理,观察服务器状态,观察慢查询,进行SQL优化,调优服务器参数。最后才是加硬件,进行分库分表等操作。

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
4天前
|
SQL 关系型数据库 MySQL
深入解析MySQL的EXPLAIN:指标详解与索引优化
MySQL 中的 `EXPLAIN` 语句用于分析和优化 SQL 查询,帮助你了解查询优化器的执行计划。本文详细介绍了 `EXPLAIN` 输出的各项指标,如 `id`、`select_type`、`table`、`type`、`key` 等,并提供了如何利用这些指标优化索引结构和 SQL 语句的具体方法。通过实战案例,展示了如何通过创建合适索引和调整查询语句来提升查询性能。
39 9
|
26天前
|
Java 数据库连接 测试技术
SpringBoot入门 - 添加内存数据库H2
SpringBoot入门 - 添加内存数据库H2
38 3
SpringBoot入门 - 添加内存数据库H2
|
8天前
|
缓存 关系型数据库 MySQL
MySQL 索引优化以及慢查询优化
通过本文的介绍,希望您能够深入理解MySQL索引优化和慢查询优化的方法,并在实际应用中灵活运用这些技术,提升数据库的整体性能。
49 18
|
7天前
|
缓存 关系型数据库 MySQL
MySQL 索引优化以及慢查询优化
通过本文的介绍,希望您能够深入理解MySQL索引优化和慢查询优化的方法,并在实际应用中灵活运用这些技术,提升数据库的整体性能。
17 7
|
6天前
|
缓存 关系型数据库 MySQL
MySQL 索引优化与慢查询优化:原理与实践
通过本文的介绍,希望您能够深入理解MySQL索引优化与慢查询优化的原理和实践方法,并在实际项目中灵活运用这些技术,提升数据库的整体性能。
27 5
|
18天前
|
SQL 存储 关系型数据库
MySQL进阶突击系列(01)一条简单SQL搞懂MySQL架构原理 | 含实用命令参数集
本文从MySQL的架构原理出发,详细介绍其SQL查询的全过程,涵盖客户端发起SQL查询、服务端SQL接口、解析器、优化器、存储引擎及日志数据等内容。同时提供了MySQL常用的管理命令参数集,帮助读者深入了解MySQL的技术细节和优化方法。
|
29天前
|
关系型数据库 MySQL 数据库
【赵渝强老师】MySQL的参数文件
MySQL启动时会读取配置文件my.cnf来确定数据库文件位置及初始化参数。该文件分为Server和Client两部分,包含动态与静态参数。动态参数可在运行中通过命令修改,而静态参数需修改my.cnf并重启服务生效。文中还提供了相关代码示例和视频教程。
|
26天前
|
关系型数据库 MySQL Java
MySQL索引优化与Java应用实践
【11月更文挑战第25天】在大数据量和高并发的业务场景下,MySQL数据库的索引优化是提升查询性能的关键。本文将深入探讨MySQL索引的多种类型、优化策略及其在Java应用中的实践,通过历史背景、业务场景、底层原理的介绍,并结合Java示例代码,帮助Java架构师更好地理解并应用这些技术。
26 2
|
11天前
|
关系型数据库 MySQL 数据库
Python处理数据库:MySQL与SQLite详解 | python小知识
本文详细介绍了如何使用Python操作MySQL和SQLite数据库,包括安装必要的库、连接数据库、执行增删改查等基本操作,适合初学者快速上手。
81 15
|
5天前
|
SQL 关系型数据库 MySQL
数据库数据恢复—Mysql数据库表记录丢失的数据恢复方案
Mysql数据库故障: Mysql数据库表记录丢失。 Mysql数据库故障表现: 1、Mysql数据库表中无任何数据或只有部分数据。 2、客户端无法查询到完整的信息。
下一篇
DataWorks