MySQL调优的方法,理论调优!

本文提供了一系列MySQL性能优化的方法,涵盖监控、配置、Schema和查询优化等关键方面,旨在帮助数据库管理员提升MySQL运行效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

很长时间没更新了,趁着午休更新一波,昨天在看MySQL的书籍的时候,自己整理了一些关于MySQL的调优方法,具体可行度,还是得在工作中细细体会。
有些技巧适合特定的安装环境,但是思路是相通的。我已经将它们分成了几类以帮助你理解。
Mysql 监控
1、有足够的物理内存,能将整个InnoDB文件加载到内存里 —— 如果访问的文件在内存里,而不是在磁盘上,InnoDB会快很多。

2、全力避免 Swap 操作 — 交换(swapping)是从磁盘读取数据,所以会很慢。

3、使用一个高级磁盘阵列 — 最好是 RAID10 或者更高。

4、磁盘速度越快越好。

5、SAS优于SATA。

6、小磁盘的速度比大磁盘的更快,尤其是在 RAID 中。

7、将使用 MySQL 的 host 和 MySQL自身的 host 都配置在一个 host 文件中 — 这样没有 DNS 查找。

Mysql 配置
1、使用 innodb_flush_method=O_DIRECT 来避免写的时候出现双缓冲区。

2、分配足够 innodb_buffer_pool_size ,来将整个InnoDB 文件加载到内存 — 减少从磁盘上读。

3、不要让 innodb_log_file_size 太大,这样能够更快,也有更多的磁盘空间 — 经常刷新有利降低发生故障时的恢复时间。

4、为 max_connections 指定一个小的值 — 太多的连接将耗尽你的RAM,导致整个MySQL服务器被锁定。

Mysql Schema优化
1、归档老数据 — 删除查询中检索或返回的多余的行。

2、在数据上加上索引。

3、不要过度使用索引,评估你的查询。

4、压缩 text 和 blob 数据类型 — 为了节省空间,减少从磁盘读数据。

5、UTF 8 和 UTF16 比 latin1 慢。

6、有节制的使用触发器。

7、为不同的需求选择不同的存储引擎。

8、将 session 数据存储在 memcache 中,而不是 MySQL 中 — memcache 可以设置自动过期,防止MySQL对临时数据高成本的读写操作。

Mysql 查询优化
1、使用慢查询日志,找出执行慢的查询。

2、使用 EXPLAIN 来决定查询功能是否合适。

3、经常测试你的查询,看是否需要做性能优化 — 性能可能会随着时间的变化而变化。

4、避免在整个表上使用count(*) ,它可能会将整个表锁住。

5、保持查询一致,这样后续类似的查询就能使用查询缓存了。

6、如果合适,用 GROUP BY 代替 DISTINCT。

7、在 WHERE、GROUP BY 和 ORDER BY 的列上加上索引。

8、保证索引简单,不要在同一列上加多个索引。

9、使用 SQL_MODE=STRICT 来检查问题。

10、索引字段少于5个时,UNION 操作用 LIMIT,而不是 OR。

11、使用 INSERT ON DUPLICATE KEY 或 INSERT IGNORE 来代替 UPDATE,避免 UPDATE 前需要先 SELECT。

12、使用索引字段和 ORDER BY 来代替 MAX。

13、避免使用 ORDER BY RAND()。

14、LIMIT M,N 在特定场景下会降低查询效率,有节制使用。

15、使用 UNION 来代替 WHERE 子句中的子查询。

16、对 UPDATE 来说,使用 SHARE MODE 来防止排他锁。

17、重启 MySQL 时,记得预热数据库,确保将数据加载到内存,提高查询效率。

18、使用 DROP TABLE ,然后再 CREATE TABLE ,而不是 DELETE FROM ,以删除表中所有数据。

19、最小化你要查询的数据,只获取你需要的数据,通常来说不要使用 *。

20、考虑持久连接,而不是多次建立连接,已减少资源的消耗。

21、基准查询,包括服务器的负载,有时一个简单的查询会影响其他的查询。

22、当服务器的负载增加时,使用SHOW PROCESSLIST来查看慢的/有问题的查询。

以上就是一些简单的更新,之前还看过一个文章,里面的东西很多,去看看MySQL教程会更好呦,欢迎关注,么么哒

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

丶懿

你的鼓励是我最大的创作动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值