mysql参数调优

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
日志服务 SLS,月写入数据量 50GB 1个月
简介: 为何要调整参数 不同服务器之间的配置、性能不一样不同业务场景对数据的需求不一样Mysql的默认参数只是个参考值,并不适合所有的应用场景优化之前我们需要知道什么服务器相关的配置 服务器型号操作系统版本内核版本磁盘存储介质(sas sa...
  • 为何要调整参数
    • 不同服务器之间的配置、性能不一样
    • 不同业务场景对数据的需求不一样
    • Mysql的默认参数只是个参考值,并不适合所有的应用场景
  • 优化之前我们需要知道什么

    • 服务器相关的配置
      • 服务器型号
      • 操作系统版本
      • 内核版本
      • 磁盘存储介质(sas sata ssd)
    • 业务相关的情况
      • 读多写少,读少写多
      • 业务数据增长量
    • mysql相关的配置
  • 服务器上需要关注那些

    • 硬件情况
      • cpu(几核、超线程)
      • 内存
      • 磁盘(容量、性能)
    • 操作系统版本(是否为稳定版)
    • CPU、网卡节电模式(建议数据库应用的服务器,关闭节电模式)
    • 服务器numa设置
    • RAID卡缓存
  • 磁盘调度策略-write back(回写)(宕机的话cache中数据,如果没有刷入磁盘,可能丢失)
    • 数据写入cache既返回,数据异步的从cache刷入存储介质
      这里写图片描述
  • 磁盘调度策略-write through(安全但性能比write back低)

    • 数据同时写入cache和存储介质才返回写入成功
      这里写图片描述
  • RAID

    • 生产环境里一般不太会用裸设备,通常会使用RAID卡对一个盘或多块盘做RAID
    • RAID卡会预留一块内存,来保证数据高效的存储与读取
    • 常见的RAID类型:RAID1、RAID0,RAID10、RAID5
      这里写图片描述
      这里写图片描述
    • RAID如何保证数据安全
    • BBU(backup battery unit)
      • BBU保证在WB策略下,即使服务器发生掉电或宕机,也能够将缓存中的数据写到磁盘,从而保证数据的安全
    • BBU损坏或没电了,这时如果宕机,cache中数据可能丢失。并且,调度策略会从WB->WT,这时数据库性能会瞬间下降。
  • Mysql注意事项

    • Mysql的部署安装
    • Mysql的监控(监控程序,及时报警保存错误现场)
    • Mysql参数调优
  • 部署Mysql的要求

    • 推荐Mysql版本>5.5
      • 推荐的Mysql存储引擎:innoDB(支持事务,支持宕机故障恢复等)
  • 系统调优的依据:监控

    • 实时监控Mysql的slow log
    • 实时监控数据库服务器的负载情况(IO、load、cpu利用率、网卡流量)
    • 实时监控Mysql内部状态值
      • Com_Select/Update/Delete/Insert(以判断数据库的请求是否变多)
      • Bytes_received/Bytes_sent(接收发送字节数,反映mysql总的吞吐量)
      • Buffer Pool Hit Rate(innoDB buffer区的命中率,直接反映性能)
      • Threads_connected/Treads_created/Threads_running(连接的状态,如果前两项特别多,可以看看应用是否使用连接池或者设置是否合理;)
        这里写图片描述
  • Mysql参数调优

    • 读优化

      • 合理的利用索引对Mysql查询性能至关重要
      • 适当的调整Mysql参数也能提高查询性能
        • innodb_buffer_pool_size
          • innoDB存储引擎自己维护一块内存区域完成新老数据的替换
          • 内存越大越能缓存更多的数据
        • innodb_thread_concurrency(在5.5以后的版本,建议关闭)
          • innoDB内部并发控制参数,设置为0代表不做控制
          • 如果并发请求较多,参数设置较小,后进来的请求将会排队
    • 写优化

      • 表结果设计上使用自增字段作为表的主键
      • 只对合适的字段加索引,索引太多影响写入性能
      • 监控服务器磁盘IO情况,如果写延迟较大则需要扩容
      • 选择正确的mysql版本,合理的设置参数
        • innodb_flush_log_at_trx_commit && sync_binlog(写性能主要参数)
        • innodb log file size
        • innodb_io_capacity
        • innodb insert buffer
    • innodb_flush_log_at_trx_commit 控制redo日志的刷新
      • 控制innoDB事务的刷新方式,一共有三个值:0,1,2
        • N=0 每隔一秒,把事务日志缓冲区的数据写到日志文件中,以及把日志文件的数据刷新到磁盘上(高效,但不安全)
        • N=1 每个事务提交时候,把事务日志从缓冲区写到日志文件中,并且刷新日志文件的数据到磁盘上,优先使用此模式保障数据安全性(低效,非常安全)
        • N=2 每个事务提交的时候,把事务日志数据从缓存区写到日志文件中;每隔一秒,刷新一次日志文件,但不一定刷新到磁盘上,而是取决于操作系统的调度(高效,但不安全)
      • sync_binlog 控制innoDBbinlog日志的刷新
        • 控制每次写入binlog,是否都需要进行一次持久化
    • 保障事务的安全
      • innodb_flush_log_at_trx_commit 和sync_binlog都设为1
      • 事务要和binlog保证一致性
        innoDB中事务提交的过程
        这里写图片描述
    • 串行的问题
      • SAS盘一般每秒只能有150-200个Fsync
      • 换算到数据库每秒只能执行50-60个事务
    • 社区和官方的改进

      • MariaDB提出改进,即使两个参数都是1也能做到合并效果,性能得到了大幅提升。
      • 官方吸收了MariaDB的思想,并在此基础上进行了改进,性能再次得到了提升
      • Tips:官方在5.6以后才有这个优化;Percona和MariaDB版本的mysql5.5已经包含了这个优化
        这里写图片描述
    • InnoDB Redo Log

      • write ahead log
        这里写图片描述
    • redo log的作用
      • 用于数据库崩溃后的故障恢复
    • redo log的问题

      • 如果写入频繁导致redo log里对应的最老的数据脏页还没有刷新到磁盘,此时数据库将卡住,强制刷新脏页到磁盘
      • Mysql默认配置两个文件才10M,非常容易写满,生产环境中应适当调整大小
    • innodb_io_capacity

      • innoDB每次刷多少个脏页,决定InnoDB存储引擎的吞吐能力。
      • 在SSD等高性能存储介质下,应该提高该参数以提高数据库的性能。
    • Insert Buffer(本质是把随机请求合并为顺序请求)

      • 5.1开始支持insert buffer
      • 5.5同时支持update和delete的merge
      • insert buffer只对二级索引且非唯一索引有效
        这里写图片描述
  • 总结

    • 服务器配置要合理(内核版本、磁盘调度策略、RAID卡缓存)
    • 完善的监控系统,提前发现问题
    • 数据库版本要跟上,不要太新,也不要太老:
    • 数据库优化
      - 查询优化:索引优化为主,参数优化为辅
      - 写入优化:业务优化为主,参数优化为辅
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
5月前
|
缓存 关系型数据库 MySQL
MySQL索引策略与查询性能调优实战
在实际应用中,需要根据具体的业务需求和查询模式,综合运用索引策略和查询性能调优方法,不断地测试和优化,以提高MySQL数据库的查询性能。
472 66
|
11天前
|
SQL 关系型数据库 MySQL
大数据新视界--大数据大厂之MySQL数据库课程设计:MySQL 数据库 SQL 语句调优方法详解(2-1)
本文深入介绍 MySQL 数据库 SQL 语句调优方法。涵盖分析查询执行计划,如使用 EXPLAIN 命令及理解关键指标;优化查询语句结构,包括避免子查询、减少函数使用、合理用索引列及避免 “OR”。还介绍了索引类型知识,如 B 树索引、哈希索引等。结合与 MySQL 数据库课程设计相关文章,强调 SQL 语句调优重要性。为提升数据库性能提供实用方法,适合数据库管理员和开发人员。
|
11天前
|
关系型数据库 MySQL 大数据
大数据新视界--大数据大厂之MySQL 数据库课程设计:MySQL 数据库 SQL 语句调优的进阶策略与实际案例(2-2)
本文延续前篇,深入探讨 MySQL 数据库 SQL 语句调优进阶策略。包括优化索引使用,介绍多种索引类型及避免索引失效等;调整数据库参数,如缓冲池、连接数和日志参数;还有分区表、垂直拆分等其他优化方法。通过实际案例分析展示调优效果。回顾与数据库课程设计相关文章,强调全面认识 MySQL 数据库重要性。为读者提供综合调优指导,确保数据库高效运行。
|
2月前
|
存储 缓存 关系型数据库
MySQL底层概述—5.InnoDB参数优化
本文介绍了MySQL数据库中与内存、日志和IO线程相关的参数优化,旨在提升数据库性能。主要内容包括: 1. 内存相关参数优化:缓冲池内存大小配置、配置多个Buffer Pool实例、Chunk大小配置、InnoDB缓存性能评估、Page管理相关参数、Change Buffer相关参数优化。 2. 日志相关参数优化:日志缓冲区配置、日志文件参数优化。 3. IO线程相关参数优化: 查询缓存参数、脏页刷盘参数、LRU链表参数、脏页刷盘相关参数。
143 12
MySQL底层概述—5.InnoDB参数优化
|
1月前
|
SQL 负载均衡 关系型数据库
MySQL复制以及调优
本文介绍了MySQL自带复制方案的实现及其注意事项。复制方案能提供数据备份、负载均衡与分布式数据管理的优势。文章详细描述了复制步骤:主库(master)记录更改到二进制日志,发送同步消息给从库(slave),从库接收后将日志复制到本地并执行。实现复制包括配置主库的server-id和二进制日志、创建复制账号、初始化主库数据、设置从库参数及开启复制。此外,还探讨了三种日志格式(row、statement、mixed)的特点及选择建议,并分析了主从复制延迟的优化方法,如控制事务大小、优化日志传输和多线程还原日志等。最后,文中列出了搭建过程中需要注意的关键点。
|
4月前
|
SQL 存储 关系型数据库
MySQL进阶突击系列(01)一条简单SQL搞懂MySQL架构原理 | 含实用命令参数集
本文从MySQL的架构原理出发,详细介绍其SQL查询的全过程,涵盖客户端发起SQL查询、服务端SQL接口、解析器、优化器、存储引擎及日志数据等内容。同时提供了MySQL常用的管理命令参数集,帮助读者深入了解MySQL的技术细节和优化方法。
|
5月前
|
关系型数据库 MySQL 数据库
【赵渝强老师】MySQL的参数文件
MySQL启动时会读取配置文件my.cnf来确定数据库文件位置及初始化参数。该文件分为Server和Client两部分,包含动态与静态参数。动态参数可在运行中通过命令修改,而静态参数需修改my.cnf并重启服务生效。文中还提供了相关代码示例和视频教程。
190 6
|
5月前
|
缓存 监控 关系型数据库
如何根据监控结果调整 MySQL 数据库的参数以提高性能?
【10月更文挑战第28天】根据MySQL数据库的监控结果来调整参数以提高性能,需要综合考虑多个方面的因素
206 1
|
5月前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第27天】本文深入探讨了MySQL的索引策略和查询性能调优技巧。通过介绍B-Tree索引、哈希索引和全文索引等不同类型,以及如何创建和维护索引,结合实战案例分析查询执行计划,帮助读者掌握提升查询性能的方法。定期优化索引和调整查询语句是提高数据库性能的关键。
925 1
|
7月前
|
存储 SQL 关系型数据库
【MySQL调优】如何进行MySQL调优?从参数、数据建模、索引、SQL语句等方向,三万字详细解读MySQL的性能优化方案(2024版)
MySQL调优主要分为三个步骤:监控报警、排查慢SQL、MySQL调优。 排查慢SQL:开启慢查询日志 、找出最慢的几条SQL、分析查询计划 。 MySQL调优: 基础优化:缓存优化、硬件优化、参数优化、定期清理垃圾、使用合适的存储引擎、读写分离、分库分表; 表设计优化:数据类型优化、冷热数据分表等。 索引优化:考虑索引失效的11个场景、遵循索引设计原则、连接查询优化、排序优化、深分页查询优化、覆盖索引、索引下推、用普通索引等。 SQL优化。
1038 15
【MySQL调优】如何进行MySQL调优?从参数、数据建模、索引、SQL语句等方向,三万字详细解读MySQL的性能优化方案(2024版)
下一篇
oss创建bucket