MySQL数据库优化看这一篇就够了(最全干货篇)

news2024/11/25 4:31:49

文章目录

  • 一、MySQL 主备切换以及读写分离
  • 二、SQL优化
    • 1、如何定位低效率的SQL语句-慢查询日志?EXPLAIN 执行计划怎么分析?
    • 2、sql语句优化常用的方法有哪些?
    • 3、如何优化索引?优化CRUD操作?优化分页?
    • 4、通过show profiles和show profile for query查看执行状态
  • 三、配置优化
  • 四、碎片整理优化

当面试官让你聊聊MySQL数据库性能优化,你还是只能回答优化sql,建索引吗?让我们看看还可以从哪些方面聊聊吧。其实你还可以从网速、数据量、数据库日志、内存等问题、硬件配置,当前占用资源、硬盘碎片或索引碎片等等诸多方面分析聊聊。

一、MySQL 主备切换以及读写分离

首先你要知道MySQL 主备切换以及读写分离是大方向上的数据库性能优化的重要手段。是架构层面的优化垂直拆分、水平拆分。

顺便提一下数据表设计的规范程度称之为范式。三大范式

  • 1NF:列不能再拆分
  • 2NF:所有的属性都依赖于主键
  • 3NF:所有的属性都直接依赖于主键(消除传递依赖)

更多内容可参看:MySQL 主备切换以及读写分离详解

思考问题:
“分表分库”(用什么策略分表分库?)
“主从分离”(用什么中间件?)

二、SQL优化

这里提及的SQL优化内容包括sql语句的优化、慢查询日志、EXPLAIN 执行计划分析等。

1、如何定位低效率的SQL语句-慢查询日志?EXPLAIN 执行计划怎么分析?

传送门:MySQL慢查询是怎么回事

2、sql语句优化常用的方法有哪些?

传送门:sql优化常用的方法

3、如何优化索引?优化CRUD操作?优化分页?

传送门:MySQL索引及索引优化、索引失效

通过慢日志查询可以知道哪些SQL语句执行效率低下,通过explain我们可以得知SQL语句的具体执行情况,索引使用等,还可以结合show命令查看执行状态。

4、通过show profiles和show profile for query查看执行状态

MySQL从5.0.37开始支持剖面系统来帮助用户了解SQL执行性能的细节,一般用于会话级,用于收集SQL语句的资源使用情况。

1)可以通过下面的方式来查看MySQL是否支持和开启了剖面系统:

select @@have_profiling;--YES支持
select @@profiling;--1开启



2)如果没有开启剖面系统,可以通过下面的SQL来打开它。

set profiling=1;

3)接下来就可以通过剖面系统来了解SQL的执行性能,例如:

select count(*) from test;--执行SQL语句
show profiles;--通过show profiles查看开启了profiling后的所有sql语句的id和消耗的时间
show profile for query 1;-- 注:此处的1为上一步查询结果显示的query_id值。
show profile cpu,source for query 1;--查看SQL语句的CPU及资源情况


三、配置优化

1、show variables查看MySQL服务器配置参数
2、show status查看MySQL服务器运行状态值
具体可以查看和调整那些参数配置呢?传送门:数据库优化之常用的show variables、show status配置优化

设置要根据自己的实际情况来设置,如果设置的值不在合理的范围内,并不是设置越大越好,可能设置的数值太大体现不出优化效果,反而造成系统的swap空间被占用,导致操作系统变慢,降低sql查询性能。

MySQL5.7及以后版本,改参数是动态的,修改后,无需重启MySQL,但是低版本,静态的,修改后,需要重启MySQL。

四、碎片整理优化

传送门:数据库优化之常用的show table status及ALTER TABLE 重建表

在这里插入图片描述

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

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

相关文章

C语言进阶之数据的存储

数据的存储 1. 数据类型介绍1.1 类型的基本归类 2.整型在内存中的存储2.1原码、反码、补码大小端介绍2.3练习 3. 浮点型在内存中的存储3.1浮点数存储规则 1. 数据类型介绍 在C语言初阶之数据类型这篇博客中,我们提到了关于数据内存的大小和基本用法 链接&#xff1…

大模型浪潮下的平台、框架、AI编译器和芯片架构 | 智源大会AI系统论坛

6月9日,2023北京智源大会,将邀请这一领域的探索者、实践者、以及关心智能科学的每个人,共同拉开未来舞台的帷幕,与会知名嘉宾包括,2019年图灵奖得主Yann LeCun、图灵奖得主Geoffrey Hinton、图灵奖得主Joseph Sifakis、…

童心不泯,因AI飞驰,祝大朋友小朋友六一儿童节快乐!

AIGC 大模型,让所想,即所见。 在青少年想象力培养上, 生成式人工智能技术的蓬勃发展, 让人类想象力和创造力提升, 迎来了全新的发展阶段。 百度通过大模型与深度学习框架融合发展,打造了自主创新的AI底座&a…

JavaWeb16(sessionCookie)

目录 1.会话跟踪&HTTP无状态协议. 1.1会话跟踪. 1.2HTTP无状态协议. 2.Cookie. 2.1何为Cookie. 2.2Cookie的有效期. 2.3案例讲解. 2.3.1用cookie做登陆状态验证. 2.3.2验证cookie是将数据保存到客户端及有效期. 2.3.2用cookie做注销. 2.3.3用cookie实现自动登陆…

Java程序设计入门教程--日期格式化类SimpleDateFormat

在程序设计中,经常用到特定的日期格式,此时就可以使用 java.text 包中的 SimpleDateFormat 类来对日期时间进行格式化,如可以将日期转换为指定格式的文本,也可将文本转换为日期。 目标格式 使用SimpleDateFormat类时&#xff0c…

【shiro】shiro整合JWT——4.JWT Token刷新/续签

前言 之前在写shiro整合JWT的时候,在ShiroRealm中有写到token的刷新;但后来看了很多别人的项目demo和博客发现之前的写法不太合适。这里参考之前看过的各个项目与博客,延续这之前shiro整合JWT内容的做了一波缝合怪。 主要对之前的ShiroRealm…

绝地求生 压q python版

仅做学习交流,非盈利,侵联删(狗头保命) 一、概述 1.1 效果 总的来说,这种方式是通过图像识别来完成的,不侵入游戏,不读取内存,安全不被检测。 1.2 前置知识 游戏中有各种不同的q械&#xf…

深入浅出:FFmpeg 音频解码与处理全解析

深入浅出:FFmpeg 音频解码与处理全解析 一、FFmpeg 简介1.1 FFmpeg 的历史与发展1.2 FFmpeg 的主要组成部分 二、音频编解码基础 (Basics of Audio Encoding and Decoding)2.1 音频编解码的原理 (Principle of Audio Encoding and Decoding)2.1.1 采样 (Sampling)2.…

chatgpt赋能python:Python函数调用局部变量-深入了解

Python函数调用局部变量-深入了解 函数调用局部变量是Python中的一个重要概念,特别是在大型项目中,其中多个函数共享相同变量时。在本文中,我们将深入探讨Python函数调用局部变量,并为您介绍一些实用技巧。 什么是Python函数调用…

chatgpt赋能Python-python函数计算器

简介 Python是一种高级编程语言,它在数据科学和机器学习等领域非常流行。但是,很多人可能不知道它也可以用来编写简单的函数计算器。 在本文中,我们将介绍一些基本的Python函数,并教你如何使用它们来编写一个简单但强大的函数计…

C 语言里面的 extern “C“ ,并没有那么简单!

前言 本文详细解析extern "C"的底层原理与实际应用。在你工作过的系统里,不知能否看到类似下面的代码。 这好像没有什么问题,你应该还会想:“嗯⋯是啊,我们的代码都是这样写的,从来没有因此碰到过什么麻烦啊…

CTEX中使用winEdt排版编辑插入图片.eps应用排版举例

CTEX中使用winEdt排版编辑插入图片.eps应用排版举例 在使用WinEdt进行排版编辑的时候,可以对文档格式排版等灵活快速排版,并实现pdf的文档的生成。本文将举例说明在WinEdt中,插入图片的方法的排版举例应用。 一、具体方法步骤 1.根据已有图片…

配置OCI上数据库服务的EM Database Express

本文参考了以下文档: DBCS: How To Setup EM Express in Bare Metal and Virtual Machine DB Systems(OCI) (Doc ID 2453454.1)Oracle Database 12c: EM Database ExpressAccess the Database Home Page in EM Database Express 第1步:数据库中设端口 …

【嵌入式烧录/刷写文件】-2.8-Hex文件转换为S19文件

案例背景(共5页精讲): 有如下一段Hex文件,将其转换为Motorola S-record(S19/SREC/mot/SX)文件。 :2091000058595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F70717273747576775F :2091200078797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939…

​ACL 2023 | 用二分类解决无监督常识问答

常识推理最近在自然语言处理研究中引起了广泛关注,现有的常识推理方法一般分为两种:一种是在开源数据集上对大型语言模型进行微调 [1],另一种是借助外部知识图谱来训练。然而,构建有标注的常识推理数据集既昂贵,又受限…

uCOSii消息队列

消息队列管理(MESSAGE QUEUE MANAGEMENT) 1、消息队列定义 消息队列好比人们排队买票,排队的人好比是消息,每来一个人,都要到队伍的尾部去排队,叫添加一条消息到队列中。售票员卖票给先到的人,叫从对列中接收一条消息…

Talk预告 | 罗格斯大学徐子昊:在域迁移学习中,用变分推理自动生成可解释的域索引

本期为TechBeat人工智能社区第501期线上Talk! 北京时间5月31日(周三)20:00,罗格斯大学 在读博士生—徐子昊的Talk将准时在TechBeat人工智能社区开播! 他与大家分享的主题是: “在域迁移学习中,用变分推理自动生成可解释的域索引…

Expeditors EDI需求详解

Expeditors是一家全球性的物流公司,成立于1979年,总部位于美国华盛顿州的西雅图。该公司提供海运、空运、货运代理、清关、仓储等一系列全球物流服务,并致力于通过数字化技术提高供应链的可见性和效率。Expeditors的客户遍及各行各业&#xf…

CMAKE变量与选择详解

目录 在 CMake 中,变量和选项是: CMake中的变量: 接下来是一个cmake的案例: 在CMake中定义和使用函数: 在 CMake 中,变量和选项是: 变量(Variables): CMak…

chatgpt赋能python:Python函数查看快捷键:不可或缺的工具

Python函数查看快捷键:不可或缺的工具 Python是一门流行的编程语言,是数据分析、机器学习、人工智能等各种领域的首选语言。对于有10年Python编程经验的开发人员来说,Python函数查看快捷键可能是最熟悉的工具之一。因此,本篇文章…