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

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

时间:2022-10-04 10:37:37浏览次数:49  
标签:步骤 数据库 MySQL 二十一 查询 SQL 服务器 性能参数


文章目录

1. 简介

上一篇文章我们介绍了哪些情况下适合创建索引,哪些情况下不适合创建索引,下面就介绍一下数据库优化步骤 ​​【MySQL从入门到精通】【高级篇】(二十)适合创建索引的11种情况&不适合创建索引的7种情况,万字长文​​ 在数据库调优中,我们的目标就是响应时间更快,吞吐量更大。利用宏观的监控工具和微观的日志分析可以帮我们快速找到调优的思路和方式。

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

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

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

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

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

接下来进入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

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

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:删除操作的次数。
  1. 若查询MySQL服务器的连接次数,则可以执行如下语句:
SHOW STATUS LIKE 'connections%';

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

总结

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


标签:步骤,数据库,MySQL,二十一,查询,SQL,服务器,性能参数
From: https://blog.51cto.com/u_15365215/5731047

相关文章

  • MySQL主从同步
    MySQL主从同步1.主从同步的定义主从同步使得数据可以从一个数据库服务器复制到其他服务器上,在复制数据时,一个服务器充当主服务器(master),其余的服务器充当从服务器(slave)。......
  • .NET Core 6+EntityFrameworkCore+MySQL生成迁移失败_EF Core数据迁移操作步骤
    在开发中,使用EFcodefirst方式开发,那么如果涉及到数据表的变更,该如何做呢?当然如果是新项目,删除数据库,然后重新生成就行了,那么如果是线上的项目,数据库中已经有数据了,那么删......
  • MySQL数据库入门
    ​​初识数据库​​​​MySQL操作表和表记录​​​​单表查询进阶与多表查询​​​​Python操作MySQL以及数据库索引​​​​MySQL补充和备份​​......
  • day04-MySQL常用函数01
    5.MySQL常用函数5.1合计/统计函数5.1.1合计函数-countcount返回行的总数Selectcount(*)|count(列名)fromtable_name [WHEREwhere_definition]练习--统计......
  • 我操作MySQL的惊险一幕
    背景前几天因工作需要,组长给我安排了一个数据清洗的任务。任务:把A表的数据洗到B表。我的第一反应,什么是「洗」?洗数据是什么?洗钱我倒是知道。不过我不能慌啊,于是......
  • centos7中配置java + mysql +jdk +使用jar部署项目
    centos7中配置java +mysql+jdk +使用jar部署项目思维导图     1. 配置JDK環境1.1下载jdk安装包 JavaDownloads|Oracle1.2将下载jdk安装包放置c......
  • Mysql-进阶篇
    存储引擎MySQL体系结构:存储引擎就是存储数据、建立索引、更新/查询数据等技术的实现方式。存储引擎是基于表而不是基于库的,所以存储引擎也可以被称为表引擎。默认存储......
  • Loading class `com.mysql.jdbc.Driver`. This is deprecated.
    Driver包名变动报错信息:Loadingclasscom.mysql.jdbc.Driver.Thisisdeprecated.Thenewdriverclassiscom.mysql.cj.jdbc.Driver.Thedriverisautomaticallyr......
  • 【MySQL系列】- MySQL执行计划
    什么是执行计划根据表、列、索引和WHERE子句中的条件的详细信息,MySQL优化器考虑了许多技术来有效地执行SQL查询中涉及的查找。对一个巨大表的查询可以在不读取所有行的情况......
  • 15 【Gin+Mysql】连接Mysql、Mysql数据库表的增、删、改、查
    链接数据库:mysql-uroot-p显示当前存在的数据库showdatabases;选择你所需要操作的数据库:usebeegodb;查看当前数据的表:showtables;查看users表内的数据:select*fr......