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

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 快速学习常用 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
相关文章
|
1月前
|
缓存 关系型数据库 MySQL
MySQL索引策略与查询性能调优实战
在实际应用中,需要根据具体的业务需求和查询模式,综合运用索引策略和查询性能调优方法,不断地测试和优化,以提高MySQL数据库的查询性能。
159 66
|
10天前
|
缓存 NoSQL 关系型数据库
MySQL战记:Count( *)实现之谜与计数策略的选择
本文深入探讨了MySQL中`count(*)`的不同实现方式,特别是MyISAM和InnoDB引擎的区别,以及各种计数方法的性能比较。同时,文章分析了使用缓存系统(如Redis)与数据库保存计数的优劣,并强调了在高并发场景下保持数据一致性的挑战。
MySQL战记:Count( *)实现之谜与计数策略的选择
|
23天前
|
SQL 关系型数据库 MySQL
PHP与MySQL的高效协同开发策略####
本文深入探讨了PHP与MySQL在Web开发中的协同工作机制,通过优化配置、最佳实践和高级技巧,展示了如何提升数据库交互性能,确保数据安全,并促进代码可维护性。我们将从环境搭建讲起,逐步深入到查询优化、事务管理、安全防护及性能调优等核心环节,为开发者提供一套实战驱动的解决方案框架。 ####
|
1月前
|
监控 关系型数据库 MySQL
MySQL自增ID耗尽应对策略:技术解决方案全解析
在数据库管理中,MySQL的自增ID(AUTO_INCREMENT)属性为表中的每一行提供了一个唯一的标识符。然而,当自增ID达到其最大值时,如何处理这一情况成为了数据库管理员和开发者必须面对的问题。本文将探讨MySQL自增ID耗尽的原因、影响以及有效的应对策略。
118 3
|
1月前
|
监控 关系型数据库 MySQL
Linux环境下MySQL数据库自动定时备份策略
在Linux环境下,MySQL数据库的自动定时备份是确保数据安全和可靠性的重要措施。通过设置定时任务,我们可以每天自动执行数据库备份,从而减少人为错误和提高数据恢复的效率。本文将详细介绍如何在Linux下实现MySQL数据库的自动定时备份。
45 3
|
1月前
|
存储 监控 关系型数据库
MySQL自增ID耗尽解决方案:应对策略与实践技巧
在MySQL数据库中,自增ID(AUTO_INCREMENT)是一种特殊的属性,用于自动为新插入的行生成唯一的标识符。然而,当自增ID达到其最大值时,会发生什么?又该如何解决?本文将探讨MySQL自增ID耗尽的问题,并提供一些实用的解决方案。
42 1
|
1月前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第27天】本文深入探讨了MySQL的索引策略和查询性能调优技巧。通过介绍B-Tree索引、哈希索引和全文索引等不同类型,以及如何创建和维护索引,结合实战案例分析查询执行计划,帮助读者掌握提升查询性能的方法。定期优化索引和调整查询语句是提高数据库性能的关键。
252 1
|
13天前
|
关系型数据库 MySQL 数据库
Python处理数据库:MySQL与SQLite详解 | python小知识
本文详细介绍了如何使用Python操作MySQL和SQLite数据库,包括安装必要的库、连接数据库、执行增删改查等基本操作,适合初学者快速上手。
87 15
|
6天前
|
SQL 关系型数据库 MySQL
数据库数据恢复—Mysql数据库表记录丢失的数据恢复方案
Mysql数据库故障: Mysql数据库表记录丢失。 Mysql数据库故障表现: 1、Mysql数据库表中无任何数据或只有部分数据。 2、客户端无法查询到完整的信息。
|
13天前
|
关系型数据库 MySQL 数据库
数据库数据恢复—MYSQL数据库文件损坏的数据恢复案例
mysql数据库文件ibdata1、MYI、MYD损坏。 故障表现:1、数据库无法进行查询等操作;2、使用mysqlcheck和myisamchk无法修复数据库。