云服务器促销,免费安装宝塔面板!
开启左侧

[其他教程] 宝塔面板怎么优化Mysql数据库性能?

[复制链接]
民审大大 发表于 2017-9-8 23:41:51 | 显示全部楼层 |阅读模式

本站会员必须 邮箱验证成功后 才能发帖。马上注册查阅更多教程,下载海量资源,让你轻松玩做站

您需要 登录 才可以下载或查看,没有帐号?立即注册

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

- v1 _, b) U! A/ D+ U. O
2 m( J0 r2 i; e2 D* W% E准备:
  p* L( Z$ ~% V    1、宝塔Linux面板 正式版 5.2.0+ (2017/09/20发布)  测试版5.2.4+. F7 F) L5 R/ B: r
    2、MySQL 5.x
8 b3 |2 b# z) _7 b. L9 t
4 {8 {1 f4 {4 D' {2 x' |+ ~6 _1 x  m4 V2 b
5 E+ a" f% Q: V3 e* `# A- C
通常MySQL调优我们分以下几部分:1 a: J* q$ k8 J  m: O7 K* G
    1、MySQL配置参数调优 (需要根据网站运行情况调整)
8 V( z5 {" n, \/ }: a2 `    2、数据表索引调优 (效果明显,但通常优秀的开源程序都不需要调整)
* f! l) y6 p' _; [    3、SQL语句调优 (这是程序员或DBA干的事)
+ l2 S& A4 I  c; o+ r/ L* H( t) @& s$ e+ Z7 j
. r0 b4 Q( l  k) x: M4 y
今天我们主要谈谈如果配合宝塔面板的新功能来进行MySQL配置参数调优,我们先来看两张图片:  A1 G( [1 ]  i7 U) y6 b$ ?

' O- {7 H# [4 c/ ], @2 |( u(图1)% P: `( s: F" w& I! N6 S
  : A+ k9 q) Q1 p

! C9 o' h. R0 d" N) S  P7 g8 c5 w(图2)
# V& x5 e# N  S3 T# ?- K  ( @* L9 J0 x& d- [% C9 ^8 _
  ~' j7 a" Q$ N0 A6 j
很明显,(图1)显示的是MySQL当前的运行状态,(图2)显示的是MySQL主要配置参数# x; x2 y% i3 M, q2 }4 r6 t

# q) u! u0 l# h1 s9 [1 m下面我们就来解读一下这两张图:4 u+ p' n5 `- E( S' @, ]5 p
/ H" f% @% b* I  B6 z* F
1.png 图14 Y, T& o* q9 u

  C! U- H3 U1 S  [0 r$ J2 U- }, L0 H5 y
2.png 0 G7 X5 E& h# ~+ Z
图2
+ u$ z' F" R" q9 m- k  Y: L/ }( z! u1 ~# C. A" j- j
9 J* ^/ R% O6 Y2 J2 u% ~! o+ \5 W5 g

# T5 T/ ?0 Q/ ^0 o0 C  [7 |# s- T% E3 h% F; x9 q; Y, |8 U
      (图1)中线程缓存命中率为99.78%,若这个值小于90%,建议适当增加(图2)中的thread_cache_size,建议每次增加8。5 Y5 U6 d( _$ {$ W1 n" W

+ s$ O. p: X4 C% m, W2 D" `9 L7 M. i3 i3 ^# Y2 m8 v9 T# }' u
3、索引命中率
/ M5 W: ^: \' \/ q/ Y' ~: E      (图1)中索引命中率为99.50%,若这个值小于95%,建议适当增加(图2)中的key_buffer_size,建议每次增加64,需要说明的是,若您的数据库使用的是Innodb引擎,可忽略这个选项
: h  Q8 N4 y# W3 G; m+ p3 {
1 V- c) u  }  ?3 f' C3 @$ _3 V4、Innodb索引命中率
, {! }* B' ~, e2 ?6 T      (图1)中Innodb索引命中率为100%,若这个值小于95%,建议适当增加(图2)中的innodb_buffer_pool_size,建议每次增加64,需要说明的是,若您的数据库没有使用Innodb引擎,可忽略这个选项
: i0 W# H( {* b9 p& V, ^" V. B: g. l6 h, `; B( X; U
5、查询缓存命中率
: _# _3 \/ P3 K      MySQL查询缓存是个比较受争议的功能,个人建议当你有在使用redis、memcached等缓存软件时,在(图2)中将query_cache_size设为0可以将其关闭,当你没有使用缓存软件,有多余的内存使用,且数据库瓶颈明显存在时,可以尝试开启查询缓存,这是个非常依赖数据表结构及SQL语句优化的功能,若数据表结构和SQL语句都针对查询缓存进行过优化,它的效果还是很不错的。
& b; F; N9 U9 ]8 q2 x; b$ r. ?6 O9 [( E
6、创建临时表到磁盘
3 Q  l6 ?7 U7 N+ m% }2 g      (图1)中创建临时表到磁盘的比例是0.42%,这说明大部分临时表创建到内存了,不会过多增加磁盘IO的开销,建议,当比例大于2%时适当增加(图1)中的tmp_cache_size,建议每次增加32,当比例大于60%时,放弃吧,有些开源程序并没有专门优化过SQL语句,所以在运行过程中会开启大量临时表,加多少缓存都是不够用的。
! _5 g) J' i/ |& Q6 J1 ^. G3 ~9 @3 j  \% r! p
' Q1 [/ P' H" Z
7、已打开的表
; g/ B, T, l* `$ C' b      当(图1)中的已打开的表接近或等于(图2)中的table_open_cache时,可以适当增加table_open_cache,但若设置过大可能导致您的程序频繁中断MySQL连接,建议在1024以内,最大不要超过2048。, \4 k: M+ O7 q
7 d4 d  j3 i% A
8、没有使用索引的量、没有使用索引的JOIN量
' P) ?8 u( V! j& H6 e5 Q" {6 ~      若不为0,就检查下数据表索引吧,其实只要没有疯涨,比如一天增涨几千,一般可以忽略,必竟优化索引还是程序员或DBA去干比较合适。
) f, t2 ~, K) U; ]$ M3 a1 W# R0 G* g1 a1 p3 [6 Q
9、排序后的合并次数
- i& g- X/ h5 g1 I      如果这个值在缓慢增张,建议适当增加(图2)中的sort_cache_size,建议每次增加512,但最大不要超过8192,如果这个值一直在疯涨,增加sort_cache_size也没用,就放弃这个选项吧,这个锅还是给程序开发者背。( }- B5 o* o% Q1 S6 R3 J# `: L
7 u+ E  p* B" P; P$ K
10、锁表次数
) `. y$ {, d$ ~9 u9 t- R; U" j      如果服务器CPU开销不大的情况下,疯狂锁表,建议你将所有数据表转换成innodb,记得转换前备份哦。, X, _5 L+ ?/ d
: o6 q5 B2 ?8 l/ Y2 T) [" ?* z& g
11、优化方案
3 B( e, ^+ P$ b2 M      这个是我们根据内存大小给的一个推荐优化方案,仅是建议仅用于基础参考值,还是要根据实据情况来调整每一个配置项。
: x) ~3 V* C  `# o+ }7 r4 t7 t; g; Z; J0 Q* g1 h0 P, ]1 x

9 W/ }8 O) k. X: l' a注意:保存参数配置后是会立即生效,记得要重启MySQL服务。
- U, Z8 S$ M4 i8 T2 G$ g6 E
) V/ m" e3 m; [2 s+ P0 y5 r6 Q" ~! G" {! h  J( q
当流科技-专业Discuz建站、仿站业务,专注处理discuz!论坛挂马,专注提供论坛托管维护服务! 提供Discuz论坛空间、VPS、云服务器!咨询QQ 569160956 778521512
回复

使用道具 举报

图片素材 发表于 2017-9-9 15:12:59 | 显示全部楼层
感谢分享mysql优化教程,支持楼主。。。
当流科技-专业Discuz建站、仿站业务,专注处理discuz!论坛挂马,专注提供论坛托管维护服务! 提供Discuz论坛空间、VPS、云服务器!咨询QQ 569160956 778521512
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

精彩课程推荐

宝塔面板绑定域名无法访问后台怎么解决?

主讲:风雨兼程 服务器学院

discuz论坛搬家教程,如何搬迁到新服务器?

主讲:风雨兼程 Discuz!教程

Discuz!论坛网盘附件免跳转下载(手机版网

主讲:当流科技 Discuz插件

抱歉,当前存在网络问题或服务器繁忙,详细错

主讲:我心枫叶 Discuz!教程

宝塔面板phpmyadmin 数据库502 Bad Gateway

主讲:当流科技 服务器学院

宝塔面板mysql怎么用navicat 连接数据库呢

主讲:当流科技 服务器学院

宝塔面板如何添加和管理Mysql数据库?

主讲:xotexa372 服务器学院

Discuz!X3.3全新安装和升级后快速回复框丢

主讲:风雨兼程 Discuz!教程

商务合作

0551-66191059
569160956#qq.com
点击这里给我发消息
dz论坛/Discuz!论坛新手

关注微信公众号

QQ扫码 加 DZ技术群