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

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

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

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

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

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

7 n! K$ d0 G3 M: C准备:  \3 _3 Q- B# n
    1、宝塔Linux面板 正式版 5.2.0+ (2017/09/20发布)  测试版5.2.4+
8 X7 @% j) n$ M! _3 f8 D    2、MySQL 5.x2 {" h; T4 I+ w6 t, h1 w! b2 F0 E

7 E& t( ?) b2 K% R
+ @$ C( O7 {5 Y9 z- l# Z. {) R+ T9 L  o& b/ K8 j3 L
通常MySQL调优我们分以下几部分:0 C, j0 M& R' U
    1、MySQL配置参数调优 (需要根据网站运行情况调整): t* J* O' O! E  n6 ]. [* W$ d7 t
    2、数据表索引调优 (效果明显,但通常优秀的开源程序都不需要调整)! S, r# }' l. k+ r
    3、SQL语句调优 (这是程序员或DBA干的事): {; j! l2 E& m. e8 m" F
6 l0 x  s0 O7 w5 |

. G7 I8 L; ]1 k2 K今天我们主要谈谈如果配合宝塔面板的新功能来进行MySQL配置参数调优,我们先来看两张图片:9 F8 P, V, S( I) Q  ~0 o/ }

4 k& j- O& P& L$ T5 ?5 {5 @: Q(图1)
) I3 Q6 b. i& ~. r) Q  + F" O6 C' H/ Z4 R7 M, V

6 ~) Z- N0 j; O6 Q# j2 B(图2)& f0 R) H; k4 n- l5 Q8 s# {
  
4 C- z# [4 \! u* v; x0 l
  U5 ]6 n. M0 O/ ^3 B6 N9 {3 P& V很明显,(图1)显示的是MySQL当前的运行状态,(图2)显示的是MySQL主要配置参数
3 o, r; v" I/ n4 B
- J, W8 h6 w% I' g% K3 x- H下面我们就来解读一下这两张图:
/ H+ p3 Y7 h# r
1 g) S* g! B5 X 1.png 图1
0 N$ \3 z3 r5 Q+ K  _( P- i5 I( G
8 e* p2 b6 z1 Z
$ E9 Z2 Y. B5 C8 v% F# H+ ? 2.png
# z: L0 m% u. M# H4 ]. H: O图2; a0 Q% O$ ^# i- `8 @/ C' p

* X% _& b# v" p
- A- D' U" f9 Q6 q  j  k+ y
9 ?- |8 F' v. m$ E& V; C9 `6 q1 l9 ]& }  M* v: V5 Y
      (图1)中线程缓存命中率为99.78%,若这个值小于90%,建议适当增加(图2)中的thread_cache_size,建议每次增加8。* q' {4 k1 s2 U6 A# Q! i. [
6 l/ K# z$ l* n. ^2 O& p

8 p; f% ~9 V6 X; }  f, U9 y3、索引命中率4 K$ j( V$ b! e9 P2 w  k
      (图1)中索引命中率为99.50%,若这个值小于95%,建议适当增加(图2)中的key_buffer_size,建议每次增加64,需要说明的是,若您的数据库使用的是Innodb引擎,可忽略这个选项) ]( J% A5 @8 |, B9 [
/ h3 R6 H# j9 Q* B2 _, O# U
4、Innodb索引命中率 & C4 [$ Z% u- g/ p
      (图1)中Innodb索引命中率为100%,若这个值小于95%,建议适当增加(图2)中的innodb_buffer_pool_size,建议每次增加64,需要说明的是,若您的数据库没有使用Innodb引擎,可忽略这个选项% i: y" x. l1 b: d

" ?' A4 O7 f. o6 s! l5、查询缓存命中率
0 l% t2 t! u7 H5 {  X$ @3 e# `      MySQL查询缓存是个比较受争议的功能,个人建议当你有在使用redis、memcached等缓存软件时,在(图2)中将query_cache_size设为0可以将其关闭,当你没有使用缓存软件,有多余的内存使用,且数据库瓶颈明显存在时,可以尝试开启查询缓存,这是个非常依赖数据表结构及SQL语句优化的功能,若数据表结构和SQL语句都针对查询缓存进行过优化,它的效果还是很不错的。$ M( L0 u2 G+ J* O( B, D4 D% v
" B& A0 u4 x- e( P; m6 D
6、创建临时表到磁盘
2 B- B! f8 t" F: E2 ]      (图1)中创建临时表到磁盘的比例是0.42%,这说明大部分临时表创建到内存了,不会过多增加磁盘IO的开销,建议,当比例大于2%时适当增加(图1)中的tmp_cache_size,建议每次增加32,当比例大于60%时,放弃吧,有些开源程序并没有专门优化过SQL语句,所以在运行过程中会开启大量临时表,加多少缓存都是不够用的。
) }1 i3 f+ q. }( g2 C( h. b( y$ y  \3 b8 s

8 R- n7 s' G4 U$ t7、已打开的表, B1 B8 i  v. d; c/ E
      当(图1)中的已打开的表接近或等于(图2)中的table_open_cache时,可以适当增加table_open_cache,但若设置过大可能导致您的程序频繁中断MySQL连接,建议在1024以内,最大不要超过2048。" D; S1 p/ ]4 a( J/ y, w
+ H$ `1 V( I. w: j
8、没有使用索引的量、没有使用索引的JOIN量
0 B2 t% h' k( N) ?3 r+ W& a: J      若不为0,就检查下数据表索引吧,其实只要没有疯涨,比如一天增涨几千,一般可以忽略,必竟优化索引还是程序员或DBA去干比较合适。" @6 U: l" ~! u( H: Y" j
5 R! U' k0 G' q3 ?
9、排序后的合并次数
" @$ ~2 e& s* [' N1 p& b      如果这个值在缓慢增张,建议适当增加(图2)中的sort_cache_size,建议每次增加512,但最大不要超过8192,如果这个值一直在疯涨,增加sort_cache_size也没用,就放弃这个选项吧,这个锅还是给程序开发者背。( U+ K# p7 j, ~# J+ w

& K' E# }" s/ s1 Y9 s10、锁表次数' {$ [# d7 \/ y
      如果服务器CPU开销不大的情况下,疯狂锁表,建议你将所有数据表转换成innodb,记得转换前备份哦。
6 E* s) z  M: H
) v+ g1 Q# ]6 E( G3 P9 T& o11、优化方案
6 n1 D* d9 w0 o* E      这个是我们根据内存大小给的一个推荐优化方案,仅是建议仅用于基础参考值,还是要根据实据情况来调整每一个配置项。
* {/ U9 H6 s- u: A# Q* G* q7 _3 I
( ?9 q4 F5 I5 \7 i3 z8 x
5 {5 H# H9 T3 k7 w注意:保存参数配置后是会立即生效,记得要重启MySQL服务。% s. u4 H6 O7 Q& t

  I2 `9 `: L( e0 q+ C6 k( f
$ _1 m! c5 ?/ \. }: c6 R
当流科技-专业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

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

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

主讲:风雨兼程 Discuz!教程

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

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

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

主讲:xotexa372 服务器学院

商务合作

0551-66191059
service#dangliu.net
点击这里给我发消息
dz论坛/Discuz!论坛新手

关注微信公众号

QQ扫码 加 DZ技术群