首页 > 数据库 >MySQL性能优化

MySQL性能优化

时间:2023-02-26 20:45:17浏览次数:35  
标签:语句 性能 tcp 硬件 参数 MySQL 优化

优化的基本原则

优化简介

所谓MySQL优化,一方面是指通过调整系统参数、合理安排资源使得 MySQL 的运行速度更快、更加节省资源,另一方面,也指优化我们通常使用的 SQL 语句,尤其是查询语句,来提高 MySQL 的性能。

总的来说,优化可以在不同的层次上进行,主要分为以下层次,如下图1所示:

  • 硬件层面
  • 配置参数层面
  • 数据库表结构层面
  • SQL 及索引层面

从底层往上层(硬件层面->索引层面),优化的成本越来越高,但是效果越来越差。总结一下:

  • 成本:硬件优化 > 配置优化 > 表结构优化 > SQL语句优化 > 索引优化
  • 效果:索引优化 > SQL语句优化 > 表结构优化 > 配置优化 > 硬件优化

基本原则

MySQL性能优化的基本原则如下:

  • 减少系统瓶颈
  • 减少资源占用
  • 提高系统反应速度

MySQL性能优化通常从下面几个方面入手:

  • 找出系统瓶颈,提高 MySQL数据库的整体性能
  • 合理的结构设计和参数调整,提高数据库操作的响应速度
  • 最大限度节省系统资源,以便系统可以提供更大负荷的服务

比如:

  • 通过优化文件系统,来提高磁盘 I/O 的读写速度
  • 通过优化操作系统的调度策略,提高 MySQL 在高负荷情况下的负载能力
  • 通过优化表结构、索引、查询语句等使得查询响应更快

硬件优化

MySQL 最终是运行在硬件上,对硬件优化无疑可以提高 MySQL 的性能,比如在云托管型数据库场景下,通过纵向扩展来提高 MySQL 性能,以便能承受更高的 QPS。

硬件优化就是对 MySQL 所在的服务器 CPU、内存、磁盘进行优化。大内存,高 I/O,是现代基于 Web 的数据库的必备。

参数优化

参数主要包含两方面的参数:操作系统层面的参数以及MySQL层面的参数

操作系统参数

数据库是基于操作系统的,目前大多数 MySQL 都是安装在 Linux 系统之上,所以对于操作系统的一些参数配置也会影响到 MySQL 的性能,下面列举出一些常见的配置:

  • 增加 tcp 支持的队列数

    • net.ipv4.tcp_max_syn_backlog = 65535
  • 减少断开连接时,资源回收

    • net.ipv4.tcp_max_tw_buckets = 8000
    • net.ipv4.tcp_tw_reuse = 1
    • net.ipv4.tcp_tw_recycle = 1
    • net.ipv4.tcp_fin_timeout = 10
  • 打开文件的限制

    • 可以使用 ulimit -a 显示各种限制,我们可以通过修改/etc/security/limits.conf 文件修改其限制,比如 *soft nofile 65535*hard nofile 65535 等。

注意:一般情况下,尽量不要去修改系统参数,因为系统参数是对整个操作系统生效的,可能这个服务器上并不仅仅只启动了一个 MySQL 服务,特别是在云数据库场景下。

MySQL 参数

MySQL 库表结构优化

MySQL 语句及索引优化

标签:语句,性能,tcp,硬件,参数,MySQL,优化
From: https://www.cnblogs.com/ssezhangpeng/p/17157585.html

相关文章

  • MySQL权限管理
    权限管理概念可以限制用户访问哪些库、哪些表可以限制用户对哪些表执行SELECT、CREATE、DELETE、DELETE、ALTER等操作可以限制用户登录的IP或域名可以限制用户自己......
  • 报错com.mysql.cj.jdbc.exceptions.MysqlDataTruncation: Data truncation: Incorrect
    出现com.mysql.cj.jdbc.exceptions.MysqlDataTruncation:Datatruncation:Incorrectdatetimevalue:'1'forcolumn'date'atrow1错误数据库中的daka表字段date,......
  • 03_03_JavaWeb||day02_MySQL基础||day01_2_MySQL基础
    今日内容数据库的基本概念MySQL数据库软件安装卸载配置SQL参见的《MySQL基础.pdf》文档在我上传的资源1.1数据库的基本概念数据库的英文单词:DataBase简称:DB什么数......
  • 03_05_JavaWeb||day04_MySQL多表&事务||day04_1_MySQL多表&事务
    今日内容多表查询【重点】事务【知道】DCL【了解】1.多表查询:查询语法:select列名列表from表名列表where....准备sql#创建部门表CREATETABLEdept(idI......
  • 03_02_JavaWeb||day02_MySQL基础||day01_1_JavaWeb课程介绍
    JavaWeb课程介绍什么JavaWeb?使用Java语言开发互联网项目。简单理解:使用Java语言开发网站课程介绍:30天数据库:5天网页前端:5天web核心技术:15天旅游管理系统:5天......
  • 必看!PostgreSQL参数优化
    前不久,一个朋友所在的公司,业务人员整天都喊慢。朋友是搞开发的,不是很懂DB,他说他们应用的其实没什么问题,但是就是每天一到高峰期就办理特别的慢啊,各种堵塞,一堆请求无法完成......
  • DV仿真环境下问题定位和性能分析工具:基于PC指针,结合map文件分析函数调用轨迹以及耗时
    关键词:DV仿真,Python,map,PC等。 当DV使用复杂软件对硬件进行仿真时,由于没有类似Trace32等IDE调试环境,出现问题往往较难定位问题。同时如果想优化性能,较难直到不同流程耗时......
  • 一个比 Redis 性能更强的数据库
    给大家推荐一个比Redis性能更强的数据:KeyDBKeyDB是Redis的高性能分支,侧重于多线程、内存效率和高吞吐量。除了性能改进外,KeyDB还提供主动复制、闪存和子密钥过期等功能。K......
  • mysql限制结果输出
    有时想限制从第几行或者显示几行,这时,就用到LIMIT(限制)比如在成绩表sc中有这么多数据   我想得到前5行selectscorefromSClimit5;这样就得到了前五行 ......
  • Mysql去重显示
    在MySQL中,用DISTINCT(去重)关键字去重selectSsexfromStudent;比如在Student表中,查询性别如下  若想要只显示该列的非重复项,则用到distinctselectdistinctS......