网络推荐



本广告位招租!

推荐给好友 上一篇 | 下一篇

MySQL优化

BSD爱好者乐园E$Cg2OIg'cegn

thread_concurrency
q t e}'F!h5{;s数量设置为CPU核心数量的两倍.BSD爱好者乐园^iz C8Ncy
thread_cache_size
YT1cY2o?*`按照内存大小来设置, 1G=8, 2G=16, 3G=32, >3G=64
T6GM2O9kwait_timeoutBSD爱好者乐园l8L9u0|.Y+i9m~"S
超时时间,如果连接数比较大,可以减少此参数的值,我使用的是10
I0Y6l vUctpmax_connectionsBSD爱好者乐园ZLR&uu~ _
最大连接数,mysql实际允许连接数的值是max_connections+1,按照系统库不同而有不同性能.一般是500~1000,MySQL AB提供的linux静态库可以达到4000.
!N}6{{#B-Aki0gquery_cache_sizeBSD爱好者乐园7UY'f6\9R0~4g2JPs
查询缓冲,默认是0,所以必须打开以提高mysql性能,其本身需要40K来保存结构数据.所以不能设置的太小,初期可以设置成32M,然后根据实际运行情况另行调整
y u(K m)M;xl Xquery_cache_typeBSD爱好者乐园O8IQd(L3yAr
指定查询缓冲的类型,0是关闭,1是缓冲除了使用SELECT SQL_NO_CACHE语句指明了不需要缓冲的数据意外的所有查询,2是只缓冲SELECT SQL_CACHE指定的查询.一般设置为1.BSD爱好者乐园q1c~~RO
query_cache_limitBSD爱好者乐园G(o9gtm-CPY
允许进入查询缓冲区的最小数据大小,默认值是1MB,可以修改的小一点以满足更多查询的需求.但是如果设置的过于小,则会导致很多新的小查询的结果将原有的查询结果交换出去.增加系统的颠簸.BSD爱好者乐园*\e^y,f K

BSD爱好者乐园8p$F1y6cI:s

相关命令BSD爱好者乐园Mv VDX~*y
查询mysql服务器相关状态数据
8k}P.W6G>SHOW STATUS;BSD爱好者乐园a\{E2t

BSD爱好者乐园ntD(sHSJY9h

查询mysql服务器相关配置选项BSD爱好者乐园;tmC` K_
>SHOW VARIABLES;BSD爱好者乐园 T5d^{7e^/]O ?6w

BSD爱好者乐园a$\7c5N$dZ

整理查询缓冲区里的碎片BSD爱好者乐园?G5X:HX k
>flush query cache;BSD爱好者乐园Ti A)^G CV4c X2I

]c#a]VD5O删除查询缓冲区里的所有内容BSD爱好者乐园X0U1F*dM&y;d
>reset query cache;BSD爱好者乐园h3A:R E3fU

BSD爱好者乐园Yv;w^v[|5Bt

设置mysql参数BSD爱好者乐园HqD|,Dk
>SET GLOBAL;BSD爱好者乐园#X7Ei_H%x8`

BSD爱好者乐园2V A(a)G#E

查询mysql当前执行的sql语句
"_ ? ^+R4XXw$I>show processlist;

5\#d!o|9KvsBSD爱好者乐园?#Y_^7vQ:bG2o R

变量 含义BSD爱好者乐园%\2[!c;Zy LECw
Qcache_queries_in_cache
4rxFF"lS在缓存中已注册的查询数目
0[F)LW;f&O/OQcache_inserts
d!ip I:P`Y被加入到缓存中的查询数目
n/ne)nk%}Qcache_hits
(^!nd2e*cM缓存采样数数目BSD爱好者乐园-{@ Am N
Qcache_lowmem_prunes
j:laT4n1A因为缺少内存而被从缓存中删除的查询数目BSD爱好者乐园M c}S?0DN
Qcache_not_cachedBSD爱好者乐园-h v eR9y7}u+kE
没有被缓存的查询数目 (不能被缓存的,或由于 QUERY_CACHE_TYPE)BSD爱好者乐园*i8w&E%e OnOm
Qcache_free_memory
@4R q;`@ m%Fwd$G查询缓存的空闲内存总数BSD爱好者乐园-W,]#E } w:[v
Qcache_free_blocksBSD爱好者乐园 N;H c7}?#p
查询缓存中的空闲内存块的数目BSD爱好者乐园 TL+y Z-n"WX*G
Qcache_total_blocks
g2\PnH9G]查询缓存中的块的总数目BSD爱好者乐园gn ~5N!G%^

h u&`*zI!u:sB?MySQL查询优化
+gL,a{nn>SHOW STATUS LIKE ‘Qcache%’;
I0E {#O%^wi[查询出Cache状态BSD爱好者乐园+EJ{Oe ?
如果Qcache_lowmem_prunes非常大,说明因为内存不足而被交换出cache的数据很多.如果增加内存.可以保证较小的交换次数以及较高的命中率
+h;l H,Fsc例如现在我们查询的结果如下BSD爱好者乐园;h$fOc?Q

| Qcache_free_blocks      | 1234     |BSD爱好者乐园4wo%[t nl _1gf
| Qcache_free_memory      | 25957504 |
?0t*r0~ ?(c2C| Qcache_hits             | 55771119 |
%YV0b{kkv| Qcache_inserts          | 7441153  |
#~l1?#IE j{| Qcache_lowmem_prunes    | 28332    |BSD爱好者乐园W3Vtk!AU6R'G!C7G
| Qcache_not_cached       | 1233788  |
H5H0H9Oda)S b| Qcache_queries_in_cache | 4810     |
BOXMWr| Qcache_total_blocks     | 11038    |
BSD爱好者乐园*|(ZGmtl K

设置为64M cache内存后
Ll X3ZetiMM>set global query_cache_size=67108864;

{8s;jc2E e8Q0G
| Qcache_free_blocks      | 1        |BSD爱好者乐园@oEW!G m*i1a0T.h4~
| Qcache_free_memory      | 66623616 |
"Q:UuQ%L j3~| Qcache_hits             | 55788258 |
(Ve1@b.q ~1Uw [| Qcache_inserts          | 7445445  |BSD爱好者乐园3o5s io*?-z
| Qcache_lowmem_prunes    | 28332    |
(zpS xG| Qcache_not_cached       | 1234057  |
Fm2k4u'K#n{T4D6S1MW| Qcache_queries_in_cache | 183      |BSD爱好者乐园8Q9OP.@d1Css
| Qcache_total_blocks     | 392      |

zg[r#s4F自由内存块看起来变小了BSD爱好者乐园X eSDY
是因为现在自由内存块.是一个整块.而以前的内存块都是分散的小块BSD爱好者乐园F,N{*n D s.m#B
而因为重建了cache区
k s0zM3[$_Qcache_queries_in_cache变量变小了.因为此操作重新建立了cache内存区.所有数据重新缓存
1R wV9T*G+YxY#X;J在运行一两天后我们再看此数据.如果变大了.说明增大cache内存区域是有效的.如果和以前数据差不多BSD爱好者乐园lA Ncy uS0f;n
说明增加的内存并没有实际起到多大的作用.

%?yj)Hy a jS:]BSD爱好者乐园^5D(c8N$jN'f

有人会觉得如果我将cache内存设置的非常大
5bRAA!I然后将cache_limit设置成0BSD爱好者乐园9m r6Y,U F CO\-s
那么所有查询都会被缓存了BSD爱好者乐园I _7F6^7v&l
理论上是这样.但是一台数据库服务器的查询非常多.
:dl6P7B,Qq x'Ws如果连查询单条数据都要缓存.BSD爱好者乐园*KP2q ze'i;_\{:I
那么内存再大也会不够的.到时候老的内容就会被交换出去BSD爱好者乐园(~ Gh)k)N w(~
当cache内存使用满的时候,就会不停的有新查询进来将老查询替换出去.BSD爱好者乐园&T3LO$mmg u
这样导致两个结果.一个是内存颠簸.效率反而下降.BSD爱好者乐园9`)f$T1u(K
第二个是cache内存的小碎块增多,内存利用率降低BSD爱好者乐园o,ngQ,~r
如果是只有内容很少的小库,并且查询率不高.是可以使用这种方法提高响应速度BSD爱好者乐园z7_8bSZ8{$b
但是如果是实际生产环境,数据量会比较大.还是需要按照最佳比例来配置.
0f~u0n%kf)k9iD而不同的应用不同的数据量会有不同的搭配,这点大家不要看网上的优化配置随便的填写BSD爱好者乐园,n6c$U-{p[^z
还是要时时的查看mysql的状态进行调整.即便是这个月调整好的优化参数BSD爱好者乐园kk4L[9@|/n6L
到了下个月业务不同,数据量增加,也会需要调整的.

9d:so9]a$Pw*Xs)g
[版权声明]BSD爱好者乐园站内文章,如来源不是互联网,则均系原创或翻译之作,可随意转载,或以此为基础进行演译,但务必以链接形式注明原始出处和作者信息,否则属于侵权行为。另对本站转载他处文章,俱有说明,如有侵权请联系本人,本人将会在第一时间删除侵权文章。
TAG: mysql MYSQL MySQL 优化
 

评分:0

我来说两句

seccode