常用 MYSQL 调优策略实战讲解(二)|学习笔记

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 快速学习常用 MYSQL 调优策略实战讲解

开发者学堂课程【MySQL 企业常见架构与调优经验分享:常用 MYSQL 调优策略实战讲解】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/383/detail/4813


常用 MYSQL 调优策略实战讲解(二)


内容介绍:

一、内核参数优化

二、MYSQL 参数优化建议


一、内核参数优化

1.内核参数通过内存和文件系统这两个方面进行优化。首先内存,重点关注vm.swappiness 参数,这个参数是对使用 swap 的几率做了个百分比的判断,比如这个值越小,对 swap 的使用率就会越低。对于 MYSQL 服务器来说要尽量去利用 vm.swappiness 降低  swap 使用率。

RHEL7/centos7 以上则慎重设置为 o ,可能发生 OOM 。

2. 调整 vm.dirty_background_ratio、vm.dirty_ratio 内核参数,用户在提交完成之后,数据不会马上修磁盘而是放到内存里边,这部分数据我们称为脏数据, vm.dirty_background_ratio 指定这个脏数据在什么情况下,把数据刷到硬盘的一个最大的占用百分。

比如设为10%,当脏数据量达到物理内存的10%之后,必须要把脏数据刷的硬盘上去。vm.dirty_ratio 是一个标准阈值就是,当脏数据量达到配置的标准,就会触发相关的写操作,会把脏数据写到硬盘上去。

调整 vm.dirty_background_ratio、vm.dirty_ratio 内核参数以确保能持续将脏数据刷新到磁盘,避免瞬间 l/o 写 产生等待。

3. 调整 net.ipv4.tcp_tw_recycle、net.ipv4.tcp_tw_reuse 都设置为1,减少 TIME_WAIT,提高 TCP 效率。

问题解答

1)通常情况下都是先做 raid1 ,然后再做 raid10 ;

(2)如果在频繁读写的时候会对硬盘有很大的占用率,这样然后降低?

答:占用率高是正常情况,不需要降低,因为充分利用了 CPU 的资源;判断它是否正常是看它运行是否顺畅。

3)有些数据开始读写困难,直接去 MYSQL 读,导致阻塞困难。MYSQL 是用于大数据的读写。

 

二、MYSQL 参数优化建议

1.建议设置 default-storag-engine=lnnoDB ,现在百分之九十九的业务环境 InnonDB 都是可以满足的,从这个运维的角度来说如果使用会在后续的维护中有很多好处。

在故障恢复、份等等各个方面,都是有很大的好处的,所以强烈建议不要再使用 MyISM 引擎。

2.调整 innodb_buffer_pool_size 的大小,如果是单实例且绝大多数是 lnnoDB 引擎表的话,可考虑设置为物理内存的50%-70%左右(设置越大,内存越高,读写性能也会越好)。

因为这个值原理上来说是设置的越大,它能缓存数据越多,缓存的数据越多 MySQL 读写性能可能会越高,尽量把这个空闲的物理内存都交给它去用。

3、设置 innodb_file_per_table=1,InnoDB 可以使用独立的表空间也可以使用共享表空间,而使用共享表空间没有什么好处,所以可以通过这个参数配置使用独立表空间。

4. 调整 innodb_data_file_path=ibdata1:1G:autoextend,不要默认的10M,在高并发场景下,性能会有很大提升。

默认情况下,这个配置的值是10MB大小,如果我们的业务不是很大,或者对数据库写操作不是很频繁也是足够的,但是如果出现大一点的情况就会是不够的。虽然它有后端会自动扩展基础,但自动扩展是会耗费更多的资源,所以可以在刚开始的时候将数据文件的值设置大一点。

5. 设置 innodb_log_file_size=256,

innodb_log_files_in_group=2,基本可以满足大多数应用场景。

6. 调整max_connection (最大连接数)、

max_connection_error (最大错误数)设置,根据业务量大小进行设置。如果业务量是比较大的话,设置值大一点,尽量能够满足业务需求。

7. open_files_limit、innodb_open_files、table_open_cache、table_definltion_cache 可以设置大约为max_connection的10倍左右大小。

8. Key_buffer_size 作用很小建议调小,32M左右即可,另外建议关闭 query cache(对提高性能方面没有什么帮助)。

9.Mp_table_size和max_heap_table_size 设置不要过大,另外 sort_buffer_size、join_buffer_size、read_buffer_size、read_rnd_buffer_ size 等设置也不要过大。

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
11天前
|
缓存 关系型数据库 MySQL
MySQL执行计划选择策略:揭秘查询优化的艺术
【10月更文挑战第15天】 在数据库性能优化中,选择最优的执行计划是提升查询效率的关键。MySQL作为一个强大的关系型数据库管理系统,提供了复杂的查询优化器来生成执行计划。本文将深入探讨如何选择合适的执行计划,以及为什么某些计划更优。
30 2
|
13天前
|
NoSQL 关系型数据库 MySQL
MySQL与Redis协同作战:优化百万数据查询的实战经验
【10月更文挑战第13天】 在处理大规模数据集时,传统的关系型数据库如MySQL可能会遇到性能瓶颈。为了提升数据处理的效率,我们可以结合使用MySQL和Redis,利用两者的优势来优化数据查询。本文将分享一次实战经验,探讨如何通过MySQL与Redis的协同工作来优化百万级数据统计。
38 5
|
23天前
|
架构师 关系型数据库 MySQL
MySQL最左前缀优化原则:深入解析与实战应用
【10月更文挑战第12天】在数据库架构设计与优化中,索引的使用是提升查询性能的关键手段之一。其中,MySQL的最左前缀优化原则(Leftmost Prefix Principle)是复合索引(Composite Index)应用中的核心策略。作为资深架构师,深入理解并掌握这一原则,对于平衡数据库性能与维护成本至关重要。本文将详细解读最左前缀优化原则的功能特点、业务场景、优缺点、底层原理,并通过Java示例展示其实现方式。
52 1
|
27天前
|
关系型数据库 MySQL 数据库
Mysql学习笔记(四):Python与Mysql交互--实现增删改查
如何使用Python与MySQL数据库进行交互,实现增删改查等基本操作的教程。
55 1
|
8天前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第27天】本文深入探讨了MySQL的索引策略和查询性能调优技巧。通过介绍B-Tree索引、哈希索引和全文索引等不同类型,以及如何创建和维护索引,结合实战案例分析查询执行计划,帮助读者掌握提升查询性能的方法。定期优化索引和调整查询语句是提高数据库性能的关键。
40 0
|
8天前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第26天】数据库作为现代应用系统的核心组件,其性能优化至关重要。本文主要探讨MySQL的索引策略与查询性能调优。通过合理创建索引(如B-Tree、复合索引)和优化查询语句(如使用EXPLAIN、优化分页查询),可以显著提升数据库的响应速度和稳定性。实践中还需定期审查慢查询日志,持续优化性能。
35 0
|
27天前
|
存储 SQL 关系型数据库
Mysql学习笔记(二):数据库命令行代码总结
这篇文章是关于MySQL数据库命令行操作的总结,包括登录、退出、查看时间与版本、数据库和数据表的基本操作(如创建、删除、查看)、数据的增删改查等。它还涉及了如何通过SQL语句进行条件查询、模糊查询、范围查询和限制查询,以及如何进行表结构的修改。这些内容对于初学者来说非常实用,是学习MySQL数据库管理的基础。
104 6
|
24天前
|
存储 关系型数据库 MySQL
Mysql(4)—数据库索引
数据库索引是用于提高数据检索效率的数据结构,类似于书籍中的索引。它允许用户快速找到数据,而无需扫描整个表。MySQL中的索引可以显著提升查询速度,使数据库操作更加高效。索引的发展经历了从无索引、简单索引到B-树、哈希索引、位图索引、全文索引等多个阶段。
57 3
Mysql(4)—数据库索引
|
27天前
|
SQL Ubuntu 关系型数据库
Mysql学习笔记(一):数据库详细介绍以及Navicat简单使用
本文为MySQL学习笔记,介绍了数据库的基本概念,包括行、列、主键等,并解释了C/S和B/S架构以及SQL语言的分类。接着,指导如何在Windows和Ubuntu系统上安装MySQL,并提供了启动、停止和重启服务的命令。文章还涵盖了Navicat的使用,包括安装、登录和新建表格等步骤。最后,介绍了MySQL中的数据类型和字段约束,如主键、外键、非空和唯一等。
62 3
Mysql学习笔记(一):数据库详细介绍以及Navicat简单使用
|
10天前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
46 2