当前位置:论坛首页 > Linux面板 > Linux面板教程

【运维干货】通过宝塔面板实现MySQL性能简单调优

发表在 Linux面板2017-9-8 11:59   [复制链接] 27 69665

      在PHP+MYSQL架构网站运行过程中,往往会遇到各种性能问题影响,如MySQL、PHP、CPU、磁盘IO、缓存等,其中MySQL瓶颈就是最常见也最难解决的一种影响网站性能的因素;通常,我们会使用redis、memcached等缓存软件来缓存内容,这确实是最优的解决方案之一,但这需要网站程序的支持,然而多数常用网站程序并不支持或者不能完美支持这些缓存软件,今天我们就来谈谈如何通过MySQL自身的配置调整来优化MySQL性能,以缓解MySQL瓶颈问题。


准备:
    1、宝塔Linux面板 正式版 5.2.0+ (2017/09/20发布)  测试版5.2.4+
    2、MySQL 5.x



通常MySQL调优我们分以下几部分:
    1、MySQL配置参数调优 (需要根据网站运行情况调整)
    2、数据表索引调优 (效果明显,但通常优秀的开源程序都不需要调整)
    3、SQL语句调优 (这是程序员或DBA干的事)


今天我们主要谈谈如果配合宝塔面板的新功能来进行MySQL配置参数调优,我们先来看两张图片:

(图1)
mysql_status.png

(图2)
mysql_conf.png

很明显,(图1)显示的是MySQL当前的运行状态,(图2)显示的是MySQL主要配置参数

下面我们就来解读一下这两张图:

1、活动/峰值连接数
      (图1)中当前活动的连接为1个,自MySQL服务启动以来,最高连接数为54;当最高连接数接近或等于(图2)中的max_connections时,应适当增加max_connections,需要注意的是,不要一下子增加过多,建议每次增加50,观察一段时间,不够再继续增加。


2、线程缓存命中率
      (图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的开销,建议,当比例大于2%时适当增加(图1)中的tmp_cache_size,建议每次增加32,当比例大于60%时,放弃吧,有些开源程序并没有专门优化过SQL语句,所以在运行过程中会开启大量临时表,加多少缓存都是不够用的。


7、已打开的表
      当(图1)中的已打开的表接近或等于(图2)中的table_open_cache时,可以适当增加table_open_cache,但若设置过大可能导致您的程序频繁中断MySQL连接,建议在1024以内,最大不要超过2048。

8、没有使用索引的量、没有使用索引的JOIN量
      若不为0,就检查下数据表索引吧,其实只要没有疯涨,比如一天增涨几千,一般可以忽略,必竟优化索引还是程序员或DBA去干比较合适。

9、排序后的合并次数
      如果这个值在缓慢增张,建议适当增加(图2)中的sort_buffer_size,建议每次增加512,但最大不要超过8192,如果这个值一直在疯涨,增加sort_buffer_size也没用,就放弃这个选项吧,这个锅还是给程序开发者背。

10、锁表次数
      如果服务器CPU开销不大的情况下,疯狂锁表,建议你将所有数据表转换成innodb,记得转换前备份哦。

11、优化方案
      这个是我们根据内存大小给的一个推荐优化方案,仅是建议仅用于基础参考值,还是要根据实据情况来调整每一个配置项。


注意:保存参数配置后不会立即生效,记得要重启MySQL服务。


写在最后:
      因我本人并不是专业DBA,难免有错误或遗漏的地方,还请大家给予指正,另外,可能面板提供的参考数据及调整选项还不够丰富,我们在往后的更新中会根据需要考虑继续增加更多的调整选项,谢谢大家的支持。

使用道具 举报 只看该作者 回复
发表于 2018-1-14 21:46:30 | 显示全部楼层
性能调整,保存,重启MYSQL。然后再打开为什么还是之前参数?

教程很详细,蓝易云:www.tsyvps.com  发表于 2022-12-31 13:14
使用道具 举报 回复 支持 2 反对 1
发表于 2017-9-12 23:57:45 | 显示全部楼层
终于把mysql参数设定也加进去了,哈哈,建议按照服务器配置推荐参数。比如1核1G什么参数,2核4G什么参数,选中CPU核数+内存大小后,自动推荐相关配置,这样的话简直好用到不行
使用道具 举报 回复 支持 0 反对 1
发表于 2017-9-8 13:16:41 | 显示全部楼层
谢良哥 超级干货
使用道具 举报 回复 支持 反对
发表于 2017-9-9 20:17:09 | 显示全部楼层
屏幕快照 2017-09-09 下午8.08.39.png

1核 2G 有缓存插件!
使用道具 举报 回复 支持 反对
发表于 2017-9-10 18:03:09 | 显示全部楼层
总算更新了,好期待呀
使用道具 举报 回复 支持 反对
发表于 2017-9-16 10:08:26 | 显示全部楼层
2017/09/20发布...
有种穿越感。。
坐等更新
使用道具 举报 回复 支持 反对
发表于 2017-9-23 12:15:32 | 显示全部楼层
支持宝塔,支持大神!
使用道具 举报 回复 支持 反对
发表于 2017-9-30 15:49:49 | 显示全部楼层
支持宝塔!这下不明觉厉了!
使用道具 举报 回复 支持 反对
发表于 2017-9-30 22:08:02 | 显示全部楼层
windows何时更新啊
使用道具 举报 回复 支持 反对
发表于 2018-1-8 18:33:39 | 显示全部楼层
7、已打开的表
      当(图1)中的已打开的表接近或等于(图2)中的table_open_cache时,可以适当增加table_open_cache,但若设置过大可能导致您的程序频繁中断MySQL连接,建议在1024以内,最大不要超过2048。


table_open_cache 但是图中写的是table_cache_size  谁对谁错
使用道具 举报 回复 支持 反对
发表于 2018-1-8 18:35:59 | 显示全部楼层
6、创建临时表到磁盘
      (图1)中创建临时表到磁盘的比例是0.42%,这说明大部分临时表创建到内存了,不会过多增加磁盘IO的开销,建议,当比例大于2%时适当增加(图1)中的tmp_cache_size,建议每次增加32,当比例大于60%时,放弃吧,有些开源程序并没有专门优化过SQL语句,所以在运行过程中会开启大量临时表,加多少缓存都是不够用的。

tmp_cache_size有这个参数吗
使用道具 举报 回复 支持 反对
发表于 2018-1-22 10:31:40 | 显示全部楼层
速翔网络 发表于 2018-1-14 21:46
性能调整,保存,重启MYSQL。然后再打开为什么还是之前参数?

同样的问题
使用道具 举报 回复 支持 反对
发表于 2018-2-4 13:48:44 | 显示全部楼层
速翔网络 发表于 2018-1-14 21:46
性能调整,保存,重启MYSQL。然后再打开为什么还是之前参数?

同样.改完了没效果.
使用道具 举报 回复 支持 反对
发表于 2018-3-21 12:59:04 | 显示全部楼层
w241357 发表于 2018-2-4 13:48
同样.改完了没效果.

+11111111111111111111111111111
使用道具 举报 回复 支持 反对
12下一页
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

普通问题处理

论坛响应时间:72小时

问题处理方式:排队(仅解答)

工作时间:白班:9:00 - 18:00

紧急运维服务

响应时间:3分钟

问题处理方式:宝塔专家1对1服务

工作时间:工作日:9:00 - 18:30

宝塔专业团队为您解决服务器疑难问题

立即付费处理

工作时间:09:00至24:00

快速回复 返回顶部 返回列表