MYSQL调优之思路----sql语句和索引调优

news2024/11/20 8:27:45

MySQL数据库性能优化包括综合多方面因素,应根据实际的业务情况制定科学、合理的调优方案进行测试调优

文章目录

  • MySQL性能优化
    • 1 优化介绍
      • 1.2 优化要考虑的问题
      • 2.1 优化可能带来的问题
      • 2.2 优化的需求
      • 2.3 优化由谁参与
      • 2.4 优化的方向
      • 2.5 优化的维度
    • 1.2数据库使用优化思路
      • 应急调优的思路:
      • 常规调优的思路:


MySQL性能优化

1 优化介绍

​在进行优化讲解之前,先请大家记住不要听信你看到的关于优化的“绝对真理”,而应该是在实际的业务场景下通过测试来验证你关于执行计划以及响应时间的假设。给大家提供一些优化方面的方向和思路,而具体业务场景的不同,使用的MySQL服务版本不同,都会使得优化方案的制定也不同。

1.2 优化要考虑的问题

注意:优化有风险,涉足需谨慎

2.1 优化可能带来的问题

1、优化不总是对一个单纯的环境进行,还很可能是一个复杂的已投产的系统!
2、优化手段有很大的风险一定要意识到和预见到!
3、任何的技术可以解决一个问题,但必然存在带来一个问题的风险!
4、对于优化来说调优而带来的问题,控制在可接受的范围内才是有成果
5、保持现状或出现更差的情况都是失败

2.2 优化的需求

1、稳定性和业务可持续性,通常性能更重要!
2、优化不可避免涉及到变更,变更就有风险!
3、优化使性能变好,维持和变差是等概率事件!
4、优化应该是各部门协同,共同参与的工作,任何单一部门都不能对数据库进行优化

2.3 优化由谁参与

​在进行数据库优化时,应由数据库管理员、业务部门代表、应用程序架构师、应用程序设计人员、应用程序开发人员、硬件及系统管理员、存储管理员等,业务相关人员共同参与

2.4 优化的方向

在数据库优化上有两个主要方向:即安全与性能。

安全 : 数据安全性
性能 : 数据的高性能访问

2.5 优化的维度

在这里插入图片描述
从上图中可以看出,我们把数据库优化分为四个纬度:硬件,系统配置,数据库表结构,SQL及索引

硬件 :CPU、内存、存储、网络设备等

系统配置: 服务器系统、数据库服务参数等

数据库表结构: 高可用、分库分表、读写分离、存储引擎、表设计等

Sql及索引: sql语句、索引使用等
**从优化成本进行考虑:硬件>系统配置>数据库表结构>SQL及索引
从优化效果进行考虑:硬件<系统配置<数据库表结构<SQL及索引**

1.2数据库使用优化思路

在多数时候,我们进行调优不需要进行这么全面、大范围的调优,一般情况下,我们进行数据库层面的优化就可以了,那我们该如何调优的呢?

应急调优的思路:

针对突然的业务办理卡顿,无法进行正常的业务处理!需要立马解决的场景!

1、show processlist(查看连接session状态)

mysql> show processlist;
+----+------+-----------+------+---------+------+----------+------------------+
| Id | User | Host      | db   | Command | Time | State    | Info             |
+----+------+-----------+------+---------+------+----------+------------------+
|  3 | root | localhost | NULL | Query   |    0 | starting | show processlist |
+----+------+-----------+------+---------+------+----------+------------------+

2、explain(分析查询计划),show index from tableName(分析索引)

explain select * from test;

mysql> explain select * from test;
+----+-------------+-------+------------+-------+---------------+---------+---------+------+------+----------+-------------+
| id | select_type | table | partitions | type  | possible_keys | key     | key_len | ref  | rows | filtered | Extra       |
+----+-------------+-------+------------+-------+---------------+---------+---------+------+------+----------+-------------+
|  1 | SIMPLE      | test  | NULL       | index | NULL          | PRIMARY | 4       | NULL |    1 |   100.00 | Using index |
+----+-------------+-------+------------+-------+---------------+---------+---------+------+------+----------+-------------+
1 row in set, 1 warning (0.00 sec)

show index from test;

mysql> show index from test;
+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| test  |          0 | PRIMARY  |            1 | id          | A         |           0 |     NULL | NULL   |      | BTREE      |         |               |
+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
1 row in set (0.00 sec)

查询执行计划和索引的使用情况从而进行参数的优化

Mysql—explain详解: Mysql—explain详解参考进行相关参数和状态的调优,

3、show status like ‘%lock%’; 查询锁状态

查询库是否有锁	

常规调优的思路:

针对业务周期性的卡顿,例如在每天10-11点业务特别慢,但是还能够使用,过了这段时间就好了。

1、开启慢查询日志,运行一天
2、查看slowlog,分析slowlog,分析出查询慢的语句。
3、按照一定优先级,进行一个一个的排查所有慢语句。
4、分析top sql,进行explain调试,查看语句执行时间。
5、调整索引或语句本身

MySQl相关日志的详解: MySQL物理文件----日志文件(错误日志、通用查询日志、二进制日志、慢查询日志)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/971443.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【SpringMVC】工作流程及入门案例

目录 前言 回顾MVC三层架构 1. SpringMVC简介 …

虹科资讯 | LyoPro 作为领先的冻干验证解决方案获得美国和欧洲两项官方专利!

获得美国和欧洲两项官方专利 我们非常高兴地宣布&#xff0c;虹科LyoPro冻干专用温度验证仪已在美国和欧洲获得两项官方专利&#xff0c;巩固了其作为市场上同类解决方案的唯一地位。有关LyoPro温度记录仪的专利分别是 US11340015B2 和 EP3742095B1&#xff0c;前者于2022年5月…

如何实现MongoDB数据的快速迁移?

作为一种Schema Free文档数据库&#xff0c;MongoDB因其灵活的数据模型&#xff0c;支撑业务快速迭代研发&#xff0c;广受开发者欢迎并被广泛使用。在企业使用MongoDB承载应用的过程中&#xff0c;会因为业务上云/跨云/下云/跨机房迁移/跨地域迁移、或数据库版本升级、数据库整…

【Apollo学习笔记】——规划模块TASK之PIECEWISE_JERK_SPEED_OPTIMIZER

文章目录 前言PIECEWISE_JERK_SPEED_OPTIMIZER功能简介PIECEWISE_JERK_SPEED_OPTIMIZER相关配置PIECEWISE_JERK_SPEED_OPTIMIZER流程QP问题的标准类型定义&#xff1a;优化变量设计目标函数约束条件相关矩阵二次项系数矩阵 H H H一次项系数向量 q q q设定OSQP求解参数 Process设…

第二张微服务的调用与注册

文章目录 工程导入利用RestTemplate调用服务需求创建RestTemplate的实例到Spring容器使用RestTemplate发送请求消费者和提供者 Eureka注册中心服务远程调用会出现的问题Eureka的结构和作用Eureka的配置过程搭建注册中心服务注册服务发现 Ribbon负载均衡负载均衡原理源码跟踪总结…

windows server 2019 一键安装sqlserver2012

准备安装包和脚本 脚本代码 install.bat REM 自动判断权限问题&#xff0c;主动获取管理员权限 >nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system" if %errorlevel% NEQ 0 ( goto UACPrompt ) else ( go…

PPT 架构师三板斧

PPT 架构师三板斧 目录概述需求&#xff1a; 设计思路实现思路分析1.多节点上PPT 架构师三板斧2.几张框框组合有组织3.专业词汇4.切记点要点 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your perfect code,full busy&#xff0c;ski…

使用Jekyll + GitHub Pages搭建个人博客

本文将介绍如何使用Jekyll搭建个人博客&#xff0c;并部署在GitHub Pages上。 1.简介 Jekyll是一个强大的静态网站生成器&#xff0c;可以将Markdown、HTML、Liquid模板等文件转换为静态网站。Jekyll支持模板引擎、主题、插件、集成GitHub Pages等特性&#xff0c;可以帮助用…

GeoServe Web管理界面远程访问GeoServe Web管理界面的最佳工具

文章目录 前言1.安装GeoServer2. windows 安装 cpolar3. 创建公网访问地址4. 公网访问Geo Servcer服务5. 固定公网HTTP地址 前言 GeoServer是OGC Web服务器规范的J2EE实现&#xff0c;利用GeoServer可以方便地发布地图数据&#xff0c;允许用户对要素数据进行更新、删除、插入…

网络编程 day 7

1、将.txt表数据导入数据库中 #include <myhead.h>#define ERR_MSG(msg) do{\fprintf(stderr,"__%d__:",__LINE__);\perror(msg);\ }while(0)int main(int argc, const char *argv[]) {//以只读的方式打开dict.txt文件FILE* fd;if((fdfopen("./dict.txt&q…

C++多态案例2----制作饮品

#include<iostream> using namespace std;//制作饮品的大致流程都为&#xff1a; //煮水-----冲泡-----倒入杯中----加入辅料//本案例利用多态技术&#xff0c;提供抽象类制作饮品基类&#xff0c;提供子类制作茶叶和咖啡class AbstractDrinking {public://煮水//冲水//倒…

springboot整合elasticsearch使用案例

引入依赖 <dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-high-level-client</artifactId> </dependency> 添加注入 import org.apache.http.HttpHost; import org.elasticsearch.client.Res…

关于右值引用与完美转发

关于右值引用与完美转发 今日的疑问: 在下面的代码中,forwardFunction(n); // 为什么这里调用的是process(int&),而不是process(int&&)?解答:想要使用右值的方法有很多,如下: 今日的疑问: 在下面的代码中,forwardFunction(n); // 为什么这里调用的是process(int&a…

sql:SQL优化知识点记录(十)

&#xff08;1&#xff09;慢查询日志 Group by的优化跟Order by趋同&#xff0c;只是多了一个having 开启慢查询日志&#xff1a; 演示一下慢sql&#xff1a;4秒之后才会出结果 查看一下&#xff1a;下方显示慢查询的sql &#xff08;2&#xff09;批量插入数据脚本 函数和存…

大模型 Dalle2 学习三部曲(一)Latent Diffusion Models学习

引言 Diffusion model大获成功&#xff0c;但是它的短板也很明显&#xff0c;需要大量的计算资源&#xff0c;并且推理速度比较慢。如何才能提升Diffusion model的计算效率。业界有各种各样的改进&#xff0c;无疑Latent Diffusion Models&#xff08;潜在扩散模型&#xff0c;…

SpringMVC入门详细介绍

一. SpringMVC简介 Spring MVC是一个基于Java的实现了MVC设计模式的请求驱动类型的轻量级Web框架&#xff0c;通过把Model&#xff0c;View&#xff0c;Controller分离&#xff0c;将web层进行职责解耦&#xff0c;把复杂的web应用分成逻辑清晰的几部分&#xff0c;简化开发&a…

Redis面试题(笔记)

目录 1.缓存穿透 2.缓存击穿 3.缓存雪崩 小结 4.缓存-双写一致性 5.缓存-持久性 6.缓存-数据过期策略 7.缓存-数据淘汰策略 数据淘汰策略-使用建议 数据淘汰策略总结 8.redis分布式锁 setnx redission 主从一致性 9.主从复制、主从同步 10.哨兵模式 服务状态监…

QT Day2!!1.登录跳转界面 2.枚举类型 3.左值与右值4.面试问题

1.作业登录跳转界面 //form.h #ifndef FORM_H #define FORM_H#include <QWidget>namespace Ui { class Form; }class Form : public QWidget {Q_OBJECTpublic:explicit Form(QWidget *parent nullptr);~Form();public slots:void jump_slot();private:Ui::Form *ui; };…

1999块的3D扫描仪CR-Scan Ferret效果如何?

CR-Scan Ferret 13年前&#xff0c;微软推出的消费级深度相机Kinect轰动全球&#xff0c;但是Kinect三维扫描的细节难以令人满意。 今年4月&#xff0c;创想三维和奥比中光合作开发的一款消费级、高精度的三维扫描仪CR-Scan Ferret&#xff0c;在某东价格只有1999。这款扫描仪…

企业如何防止数据外泄——【部署智能透明加密防泄密系统】

为防止公司文件泄密&#xff0c;可以采取以下措施&#xff1a; www.drhchina.com 分部门部署&#xff1a;根据不同的部门需要&#xff0c;为不同部门用户部署灵活的加密方案。例如&#xff0c;对研发部、销售部、运营部的机密资料进行强制性自动加密&#xff0c;对普通部门的文…