常用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调优策略实战讲解


内容介绍:

一、硬件层相关优化

二、磁盘 I/o 相关配置

三、文件系统层优化

一、硬件层相关优化

修改服务器 BIOS 设置

1.硬件设置

首先从硬件层面入手,如果说我们的服务器是作为 MYSQL 数据库服务器去使用,那么需要让 CPU 和内存发挥一个最大的性能,在一般服务器里面都是有对 CPU 性能使用的一个选项。

默认情况下不是 CPU 的最大性能,可以去找相关的对 CPU 或者对内存的配置。选择 Performance Per Watt Optimized(DAPC) 模式,发挥 CPU 最大性能,这个模式的好处是充分发挥 CPU 使用资源。

2.内存频率设置

内存方面有关于内存频率设置的选项,默认是一个很中庸的配置,为了保证内存也是最大化利用可以再修改 Memory Frequency (内存频率)选择 MaximumPerformance (最佳性能)。

3.内存利用设置

关于内存利用在设置菜单中启用 Node Interle aving,避免 NUMA 问题。


二、磁盘 I/O 相关配置

1. 使用 SSD 磁盘

磁盘性能如果高读写效率也会相应的高,最好的磁盘是 SSD 磁盘,如果业务写操作量特别大或者瞬间的这种写操作量特别大的话,建议使用 SSD 磁盘,虽然价格有点高,但是它能解决很多通过其他技术手段解决不了的问题。

2. 磁盘阵列卡

如果存储使用的是磁盘阵列的,有相关的这个阵列卡,专业阵列卡是配备有很多模式,包含有很多专业的存储模块,比如常见 bbu 的模块,它默认情况下阵列是没有,建议阵列卡同时配备 CACHE 及 BBU 模块,可明显提升 IOPS 。

3. raid 级别配置

raid 的级别配置,常见的 raid 级别数据库配的比较多的是 raid5 。如果是在 MySQL 数据库服务器上是不建议用raid5 的,它对这个磁盘要求和磁盘损耗也是比较大的。

考虑了安全性,推荐用 raid10 去实现数据库服务器的 raid 配置, raid10 是比较简单的,底层有两块盘先通过做两组 raid1 之后,再做 raid0 ,数据安全性得到了保证。在l方面通过双通道的方式,实现l级别的提升。所以 raid 级别尽量选择 raid1o ,而不是 raid5 。


三、文件系统层优化

1.调度策略

文件系统的调度策略,关于l调度器默认情况下有三种方式,deadline、noop 和 cfq ,在操作系统里边有个内核参数,可以直接查看到调度策略。如果服务器作为 MYSQL 服务器使用,推荐使用 deadline、noop。

千万不能使用 cfq,cfq 在使用过程中导致了很多性能问题。在文件系统中操作非常频繁读写非常频繁的话,都会发生这个问题。

常规的方式下,系统负载并不是很忙就不会发生这种问题,可能如果没有类似的这样一个环境可能也遇不到这一种情况。

2.文件系统

文件系统发展到现在,从原来的 ext2、ext3 到 ext4 ,再到最新的 xfs ,这么多文件系统都有它各自的优缺点。ext2 是没有日志记录的文件系统,如果文件系统损坏通过日志或通过这种方式是没办法恢复的,它的安全性比较差。

在 ext2 基础之上产生 ext3 ,它是有日志型记录的文件系统,是在 ext2 基础上增加了一个 m 的记录,把相关的文件属性会单独存放,通过个记录如果文件系统出现崩溃的时候,它可以通过日志做相关的恢复。ext4 是在 ext3 基础上增加更多的功能,比如说对文件的检索,对文件属性的调配,各个方面做了很大优化啊。

最新的 xfs 相对比来之前的经验, ext4 在文件数不是很多,并且写操作不是很大的情况下是推荐的,xfs 的强项在于它可以容纳更多小文件并且读写效率非常高,作为数据库是对写要求比较高的,需要选择xfs文件系统,去提高我们的使用效率。

3.文件系统参数

文件系统 mount 参数中增加: noatme, nodiratime , nobarrier 几个选项( nobarrier 是 xfs 文件系统特有的)。noatme 是在文件读写操作中,不记录文件的属性信息。

atme 记录文件什么时候被访问,跟 atme 对应的是 wtme ,wtam 是文件的写操作。当文件什么时候被修改或重写的话,都会记录文件修改的时间包括重写的时间。

atme 记录文件的访问时间。如果读的操作量非常大,如果每一个过程都会记录它的属性值的话,这个系统性会有一个很大的损耗。

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
缓存 关系型数据库 MySQL
MySQL索引策略与查询性能调优实战
在实际应用中,需要根据具体的业务需求和查询模式,综合运用索引策略和查询性能调优方法,不断地测试和优化,以提高MySQL数据库的查询性能。
208 66
|
27天前
|
缓存 NoSQL 关系型数据库
MySQL战记:Count( *)实现之谜与计数策略的选择
本文深入探讨了MySQL中`count(*)`的不同实现方式,特别是MyISAM和InnoDB引擎的区别,以及各种计数方法的性能比较。同时,文章分析了使用缓存系统(如Redis)与数据库保存计数的优劣,并强调了在高并发场景下保持数据一致性的挑战。
MySQL战记:Count( *)实现之谜与计数策略的选择
|
2月前
|
SQL 关系型数据库 MySQL
PHP与MySQL的高效协同开发策略####
本文深入探讨了PHP与MySQL在Web开发中的协同工作机制,通过优化配置、最佳实践和高级技巧,展示了如何提升数据库交互性能,确保数据安全,并促进代码可维护性。我们将从环境搭建讲起,逐步深入到查询优化、事务管理、安全防护及性能调优等核心环节,为开发者提供一套实战驱动的解决方案框架。 ####
|
2月前
|
监控 关系型数据库 MySQL
MySQL自增ID耗尽应对策略:技术解决方案全解析
在数据库管理中,MySQL的自增ID(AUTO_INCREMENT)属性为表中的每一行提供了一个唯一的标识符。然而,当自增ID达到其最大值时,如何处理这一情况成为了数据库管理员和开发者必须面对的问题。本文将探讨MySQL自增ID耗尽的原因、影响以及有效的应对策略。
164 3
|
2月前
|
监控 关系型数据库 MySQL
Linux环境下MySQL数据库自动定时备份策略
在Linux环境下,MySQL数据库的自动定时备份是确保数据安全和可靠性的重要措施。通过设置定时任务,我们可以每天自动执行数据库备份,从而减少人为错误和提高数据恢复的效率。本文将详细介绍如何在Linux下实现MySQL数据库的自动定时备份。
71 3
|
2月前
|
存储 监控 关系型数据库
MySQL自增ID耗尽解决方案:应对策略与实践技巧
在MySQL数据库中,自增ID(AUTO_INCREMENT)是一种特殊的属性,用于自动为新插入的行生成唯一的标识符。然而,当自增ID达到其最大值时,会发生什么?又该如何解决?本文将探讨MySQL自增ID耗尽的问题,并提供一些实用的解决方案。
60 1
|
2月前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第27天】本文深入探讨了MySQL的索引策略和查询性能调优技巧。通过介绍B-Tree索引、哈希索引和全文索引等不同类型,以及如何创建和维护索引,结合实战案例分析查询执行计划,帮助读者掌握提升查询性能的方法。定期优化索引和调整查询语句是提高数据库性能的关键。
383 1
|
16天前
|
存储 Oracle 关系型数据库
数据库传奇:MySQL创世之父的两千金My、Maria
《数据库传奇:MySQL创世之父的两千金My、Maria》介绍了MySQL的发展历程及其分支MariaDB。MySQL由Michael Widenius等人于1994年创建,现归Oracle所有,广泛应用于阿里巴巴、腾讯等企业。2009年,Widenius因担心Oracle收购影响MySQL的开源性,创建了MariaDB,提供额外功能和改进。维基百科、Google等已逐步替换为MariaDB,以确保更好的性能和社区支持。掌握MariaDB作为备用方案,对未来发展至关重要。
42 3
|
16天前
|
安全 关系型数据库 MySQL
MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!
《MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!》介绍了MySQL中的三种关键日志:二进制日志(Binary Log)、重做日志(Redo Log)和撤销日志(Undo Log)。这些日志确保了数据库的ACID特性,即原子性、一致性、隔离性和持久性。Redo Log记录数据页的物理修改,保证事务持久性;Undo Log记录事务的逆操作,支持回滚和多版本并发控制(MVCC)。文章还详细对比了InnoDB和MyISAM存储引擎在事务支持、锁定机制、并发性等方面的差异,强调了InnoDB在高并发和事务处理中的优势。通过这些机制,MySQL能够在事务执行、崩溃和恢复过程中保持
45 3
|
16天前
|
SQL 关系型数据库 MySQL
数据库灾难应对:MySQL误删除数据的救赎之道,技巧get起来!之binlog
《数据库灾难应对:MySQL误删除数据的救赎之道,技巧get起来!之binlog》介绍了如何利用MySQL的二进制日志(Binlog)恢复误删除的数据。主要内容包括: 1. **启用二进制日志**:在`my.cnf`中配置`log-bin`并重启MySQL服务。 2. **查看二进制日志文件**:使用`SHOW VARIABLES LIKE 'log_%';`和`SHOW MASTER STATUS;`命令获取当前日志文件及位置。 3. **创建数据备份**:确保在恢复前已有备份,以防意外。 4. **导出二进制日志为SQL语句**:使用`mysqlbinlog`
59 2