前言:
在PHP+MYSQL 架构网站的运行过程中,我们经常会遇到各种性能问题,如 MYSQL、PHP、CPU、磁盘 IO、缓存等。,其中 MySQL 瓶颈是影响网站性能的最常见和最困难的因素。通常,我们会使用redis和 memcached 等缓存软件来缓存内容,这确实是最佳解决方案之一,但它需要网站程序的支持。然而,大多数常用的网站程序不支持或无法完美支持这些缓存软件。今天,我们将谈论如何通过 MySQL 自身的配置调整来优化 MySQL 性能,以缓解 MySQL 瓶颈问题。
准备
1.宝塔Linux面板正式版 7.8.5 2、MySQL 5.x
最佳化
通常,MySQL 调优分为以下几个部分:1。MySQL 配置参数调优(需要根据网站运行情况进行调整)2。数据表索引调优(效果明显,但通常优秀的开源程序不需要调整)3。SQL 语句调优(由程序员或 DBA 完成)。
今天主要讲一下如何用 Pagoda 面板的新功能调优 MySQL 配置参数。我们先来看两张图片:
显然,(图 1)显示了 MySQL 当前的运行状态,(图 2)显示了 MySQL 的主要配置参数。
让我们来看看这两张图片:
1.活动/峰值连接数
(图 1)当前有 1 个活动连接,自 MySQL 服务启动以来的最大连接数为 54;当最大连接数接近或等于图 2 中的 max_connections 时,应适当增加 max_connections。需要注意的是,不应该一下子增加太多。建议一次性增加 50,观察一段时间,不够继续增加。
(图 1)中的线程缓存命中率为 99.78%。如果该值小于 90%,建议适当增加(图 2)中的 thread_cache_size,建议每次增加 8。
3、索引命中率
(图 1)中的索引命中率为 99.50%。如果该值小于 95%,建议适当增加(图 2)中的 key_buffer_size,建议每次增加 64。应该注意的是,如果您的数据库使用 Innodb 引擎,则可以忽略此选项。
4.Innodb 索引命中率
图 1 中 Innodb 索引的命中率为 100%。如果该值小于 95%,建议适当增加图 2 中的 Innodb_buffer_pool_size,建议每次增加 64。应该注意的是,如果您的数据库不使用 innodb 引擎,则可以忽略此选项。
5.查询缓存命中率
MySQL 查询缓存是一个有争议的功能。我个人建议,当您正在使用 redis 和 memcached 等缓存软件时,可以通过将图 2 中的 query_cache_size 设置为 0 来关闭它。当您不使用缓存软件时,您有额外的内存可以使用,并且数据库瓶颈明显时,您可以尝试打开查询缓存,这是一个非常依赖数据表结构和 SQL 语句优化的功能。如果数据表结构和 SQL 语句都针对查询缓存进行了优化,
6.在磁盘上创建临时表
图 1 中创建的临时表与磁盘的比率为 0.42%,这表明大多数临时表都是在内存中创建的,磁盘 io 的开销不会增加太多。建议图 1 中的 tmp_cache_size 在比率大于 2%时适当增加,建议每次增加 32。当比值大于 60%时,放弃。一些开源程序没有特别优化 SQL 语句,所以它们正在运行。
7.打开表格
当(图 1)中打开的表接近或等于(图 2)中的 table_open_cache 时,可以适当增加 table_open_cache。但是,如果设置太大,您的程序可能会频繁中断 MySQL 连接。建议保持在 1024 以内,最大不超过 2048。
8.无索引的数量和无索引的连接数量。
如果不为 0,请检查数据表的索引。其实只要不暴涨,比如一般可以忽略,程序员或者 DBA 优化索引比较合适。
9.排序后的合并次数
如果该值缓慢增加,建议适当增加图 2 中的 sort_buffer_size,建议一次增加 512,但最大值不应超过 8192。如果这个值一直猛涨,那么增加 sort_buffer_size 是没有用的,所以放弃这个选项,锅还是留给程序开发人员。
10、锁表次数
如果服务器 CPU 开销不太大,建议您将所有数据表转换为 innodb,并记得在转换前备份它们。
11、优化方案
这是根据内存大小推荐的优化方案。仅建议用于基本参考值,或根据实际情况调整各个配置项。注意:保存参数配置不会立即生效。记得重启 MySQL 服务。
结语:
由于我不是专业的 DBA,因此难免会有错误或遗漏。请指正。此外,专家组提供的参考数据和调整选项可能不够丰富。我们将考虑在未来的更新中根据需要添加更多的调整选项。谢谢你的支持。
转载请注明:汇站网 » 通过使用宝塔面板通过,可以简单地对 MySQL 性能使用宝塔进行调优