- 浏览: 2265576 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (423)
- FileNet相关 (3)
- 应用服务器相关 (22)
- Java综合 (77)
- 持久层 (24)
- struts (11)
- webservice (8)
- 虚拟机 (2)
- 光盘刻录 (0)
- AD及AD集群 (1)
- JS (33)
- F5 (0)
- loadrunner8.1 (0)
- Java 反编译工具 (2)
- DataBase (62)
- ant (1)
- 操作系统 (29)
- 我的任务 (3)
- 平台架构 (16)
- 业务规则引擎 (2)
- 模板 (1)
- EJB (5)
- spring (24)
- CMMI (1)
- 项目管理 (20)
- LDAP (13)
- JMS (10)
- JSP (19)
- JBPM (2)
- web MVC框架设计思想 (2)
- 第三方支付平台 (2)
- BUG管理工具 (1)
- 垃圾站 (2)
- php (1)
- swing (1)
- 书籍 (1)
- QQ qq (2)
- 移动互联网 (26)
- 爱听的歌曲 (0)
- hadoop (4)
- 数据库 (9)
- 设计模式 (1)
- 面试经验只谈 (1)
- 大数据 (9)
- sp (1)
- 缓存数据库 (8)
- storm (2)
- taobao (2)
- 分布式,高并发,大型互联网,负载均衡 (6)
- Apache Ignite (0)
- Docker & K8S (0)
最新评论
-
wangyudong:
新版本 Wisdom RESTClienthttps://gi ...
spring rest mvc使用RestTemplate调用 -
wangyudong:
很多API doc生成工具生成API文档需要引入第三方依赖,重 ...
spring rest mvc使用RestTemplate调用 -
zhaoshijie:
cfying 写道大侠,还是加载了两次,怎么解决啊?求。QQ: ...
spring容器加载完毕做一件事情(利用ContextRefreshedEvent事件) -
xinglianxlxl:
对我有用,非常感谢
spring容器加载完毕做一件事情(利用ContextRefreshedEvent事件) -
k_caesar:
多谢,学习了
利用maven的resources、filter和profile实现不同环境使用不同配置文件
关键字:mysql服务器优化
常用的命令:
查看目前状态:SHOW STATUS LIKE 'qcache%';
查看缓存总大小:SHOW VARIABLES LIKE 'query_cache_size';
修复碎片:RESET QUERY CACHE
清理已经使用的内存:FLUSH QUERY CACHE
重置计数器:FLUSH STATUS;
说明:本博客只限于mysql服务器的调优,不包含其他优化,后续将会在本文的基础上进行积累。
一、对查询进行缓存
很多 LAMP 应用程序都严重依赖于数据库,但却会反复执行相同的查询。每次执行查询时,数据库都必须要执行相同的工作 —— 对查询进行分析(区分大小写),确定如何执行查询,从磁盘中加载信息,然后将结果返回给客户机。MySQL 有一个特性称为查询缓存,它将(后面会用到的)查询结果保存在内存中。在很多情况下,这会极大地提高性能。不过,问题是查询缓存在默认情况下是禁用的。
将 query_cache_size = 32M(默认0) 添加到 /etc/my.conf 中可以启用 32MB 的查询缓存(需要重启mysql)。
查看query_cache_size设置大小可用:SHOW VARIABLES LIKE 'query_cache_size';(单位byte)
查看服务器是否支持 缓存 用:SHOW VARIABLES LIKE 'have_query_cache';
移除所有已经使用的缓存(释放已使用的内存):RESET QUERY CACHE;
监视查询缓存
在启用查询缓存之后,重要的是要理解它是否得到了有效的使用。MySQL 有几个可以查看的变量,可以用来了解缓存中的情况。清单 2 给出了缓存的状态。
清单 2. 显示查询缓存的统计信息
mysql> SHOW STATUS LIKE 'qcache%';
+-------------------------+------------+
| Variable_name | Value |
+-------------------------+------------+
| Qcache_free_blocks | 5216 |
| Qcache_free_memory | 14640664 |
| Qcache_hits | 2581646882 |
| Qcache_inserts | 360210964 |
| Qcache_lowmem_prunes | 281680433 |
| Qcache_not_cached | 79740667 |
| Qcache_queries_in_cache | 16927 |
| Qcache_total_blocks | 47042 |
+-------------------------+------------+
8 rows in set (0.00 sec)
这些项的解释如表 1 所示。
表 1. MySQL 查询缓存变量
变量名说明
Qcache_free_blocks
缓存中相邻内存块的个数。数目大说明可能有碎片。FLUSH QUERY CACHE 会对缓存中的碎片进行整理,从而得到一个空闲块。
Qcache_free_memory
缓存中的空闲内存。
Qcache_hits
每次查询在缓存中命中时就增大。
Qcache_inserts
每次插入一个查询时就增大。命中次数除以插入次数就是不中比率;用 1 减去这个值就是命中率。在上面这个例子中,大约有 87% 的查询都在缓存中命中。
Qcache_lowmem_prunes (这个变量可以判断你的缓存大小是否合理)
缓存出现内存不足并且必须要进行清理以便为更多查询提供空间的次数。这个数字最好长时间来看;如果这个数字在不断增长,就表示可能碎片非常严重,或者内存很少。(上面的 free_blocks 和 free_memory 可以告诉您属于哪种情况)。
Qcache_not_cached
不适合进行缓存的查询的数量,通常是由于这些查询不是 SELECT 语句。
Qcache_queries_in_cache
当前缓存的查询(和响应)的数量。
Qcache_total_blocks
缓存中块的数量。
下面是在网上看到的一篇非常好的博客:有时间一一验证
MySQL优化经验 key_buffer_size,query_cache_size,ta【 来源:网络 作者:佚名 更新时间:2009-03-04 | 字体:大 中 小】
同时在线访问量继续增大 对于1G内存的服务器明显感觉到吃力严重时甚至每天都会死机 或者时不时的服务器卡一下 这个问题曾经困扰了我半个多月MySQL使用是很具伸缩性的算法,因此你通常能用很少的内存运行或给MySQL更多的被存以得到更好的性能。
8 a/ y6 g; @& D1 [+ Y9 u8 j) g) N" J) i/ n1 A0 b
安装好mysql后,配制文件应该在/usr/local/mysql/share/mysql目录中,配制文件有几个,有my-huge.cnf my-medium.cnf my-large.cnf my-small.cnf,不同的流量的网站和不同配制的服务器环境,当然需要有不同的配制文件了。 * W `% m. m- M
) U. s4 C% w, S5 B, N
一般的情况下,my-medium.cnf这个配制文件就能满足我们的大多需要;一般我们会把配置文件拷贝到/etc/my.cnf 只需要修改这个配置文件就可以了,使用mysqladmin variables extended-status –u root –p 可以看到目前的参数,有3个配置参数是最重要的,即key_buffer_size,query_cache_size,table_cache。 林海谐缘论坛' ^) w$ V. l' W/ k( c" C, j
www.linwan.net6 Y. g6 |. ?0 P% H% l
key_buffer_size只对MyISAM表起作用,
; p3 _5 N; ?# # d. E
. B& O( j! M8 l4 W% S4 okey_buffer_size指定索引缓冲区的大小,它决定索引处理的速度,尤其是索引读的速度。一般我们设为16M,实际上稍微大一点的站点 这个数字是远远不够的,通过检查状态值Key_read_requests和Key_reads,可以知道key_buffer_size设置是否合理。比例key_reads / key_read_requests应该尽可能的低,至少是1:100,1:1000更好(上述状态值可以使用SHOW STATUS LIKE ‘key_read%’获得)。 或者如果你装了phpmyadmin 可以通过服务器运行状态看到,笔者推荐用phpmyadmin管理mysql,以下的状态值都是本人通过phpmyadmin获得的实例分析:
5 x0 ~/ w# 3 t) j9 _www.linwan.net
: k) [0 a2 Z2 X5 A! E! m% }这个服务器已经运行了20天
2 h& h: w% k* r$ n: I2 u+ K% V6 N- D打造技术与娱乐的天作之合林海谐缘论坛" e% V. d( f) M, X. z; G9 W
key_buffer_size – 128M
s7 ^2 k' ]: V6 t4 ( fwww.linwan.netkey_read_requests – 650759289
/ B/ {# @. 5 @( H9 p打造技术与娱乐的天作之合key_reads - 79112 www.linwan.net8 Y4 v; q7 Y$ ~
打造技术与娱乐的天作之合6 O. Q; P5 O) H+ l: e8 P* ]4 a" l
比例接近1:8000 健康状况非常好 ) P" h: r3 j- M& k, O ]
6 [3 Z" F* b2 z* g$ @% l$ Jwww.linwan.net另外一个估计key_buffer_size的办法 把你网站数据库的每个表的索引所占空间大小加起来看看以此服务器为例:比较大的几个表索引加起来大概125M 这个数字会随着表变大而变大。 www.linwan.net/ n' V& i3 P, o$ T
* @" Y- b' o: c% r1 d从4.0.1开始,MySQL提供了查询缓冲机制。使用查询缓冲,MySQL将SELECT语句和查询结果存放在缓冲区中,今后对于同样的SELECT语句(区分大小写),将直接从缓冲区中读取结果。根据MySQL用户手册,使用查询缓冲最多可以达到238%的效率。 林海谐缘论坛: }" M. [4 W0 X k) u( {; r
* Y- X% L9 a7 R0 }+ w通过调节以下几个参数可以知道query_cache_size设置得是否合理
6 R+ h6 D- D2 A/ xwww.linwan.net
: K5 E8 h* ]" Q& ^% _www.linwan.netQcache inserts " Y' }, N& d# v2 t9 `& }0 F
Qcache hits
' ! r p8 y% S) Y; C打造技术与娱乐的天作之合Qcache lowmem prunes 7 K) ]9 S; R5 p6 M# J
Qcache free blocks
$ Q1 T. L) ]0 a/ N; y5 qwww.linwan.netQcache total blocks
- X( W& t( K4 c' _$ s4 d林海谐缘论坛# t: w' t6 l2 l8 d5 k7 E
Qcache_lowmem_prunes的值非常大,则表明经常出现缓冲不够的情况,同时Qcache_hits的值非常大,则表明查询缓冲使用非常频繁,此时需要增加缓冲大小Qcache_hits的值不大,则表明你的查询重复率很低,这种情况下使用查询缓冲反而会影响效率,那么可以考虑不用查询缓冲。此外,在SELECT语句中加入SQL_NO_CACHE可以明确表示不使用查询缓冲。 www.linwan.net. o! ?) W3 {' j' }/ N& 2 t4 A1 |
4 |, y3 J; O! C7 TQcache_free_blocks,如果该值非常大,则表明缓冲区中碎片很多query_cache_type指定是否使用查询缓冲
3 M% F( N5 [* v$ y5 ]! |+ ?打造技术与娱乐的天作之合1 w8 L$ v: ]' M( V
我设置: ! y% x: l# g( `- o& ?8 Y0 m
8 }+ ]5 J. Q) P6 O% S9 uquery_cache_size = 32M www.linwan.net6 }( u; W; S( X2 m: T
query_cache_type= 1 www.linwan.net! m. m1 f# }/ y. ]
, r$ r; v0 T1 A. ~5 O0 T
得到如下状态值: 打造技术与娱乐的天作之合% f6 ~& n, B' |/ [
+ D( O3 X2 Y# j9 Y$ {9 F
Qcache queries in cache 12737 表明目前缓存的条数
0 g' R! Q% _( |5 x, QQcache inserts 20649006
+ ?( x" `6 H# }5 B# I/ Hwww.linwan.netQcache hits 79060095 看来重复查询率还挺高的 $ [- Q% z7 {9 M/ f; ]5 l" m; q' [
Qcache lowmem prunes 617913 有这么多次出现缓存过低的情况 : z. f+ C8 K) v; {) i2 F
Qcache not cached 189896 www.linwan.net8 e ]7 m* x3 d' R+ G8 I
Qcache free memory 18573912 目前剩余缓存空间 . w% a3 U% V1 a" o+ m: ^$ G
Qcache free blocks 5328 这个数字似乎有点大 碎片不少 1 p; u, D1 k5 e$ m
Qcache total blocks 30953 林海谐缘论坛( x1 P$ Z6 e1 S) J9 u3 e& i- K
4 g( u$ D- h; F
如果内存允许32M应该要往上加点
2 h+ e8 q7 u3 x4 }% Cwww.linwan.net
3 m# Q3 {. E* v8 btable_cache指定表高速缓存的大小。每当MySQL访问一个表时,如果在表缓冲区中还有空间,该表就被打开并放入其中,这样可以更快地访问表内容。通过检查峰值时间的状态值Open_tables和Opened_tables,可以决定是否需要增加table_cache的值。如果你发现open_tables等于table_cache,并且opened_tables在不断增长,那么你就需要增加table_cache的值了(上述状态值可以使用SHOW STATUS LIKE ‘Open%tables’获得)。注意,不能盲目地把table_cache设置成很大的值。如果设置得太高,可能会造成文件描述符不足,从而造成性能不稳定或者连接失败。 " Q H$ Y) i3 K9 U* U+ B+ a
2 x2 ?" F. O/ |& `+ p2 Mwww.linwan.net对于有1G内存的机器,推荐值是128-256。
6 @5 S* E* R6 A0 b+ T林海谐缘论坛! N1 Q6 ^8 T: ^! z
笔者设置table_cache = 256
' f: J- t. a- H+ h9 `
) O5 x( 4 n% K4 b+ H* e得到以下状态:
& V9 J; q4 $ a$ Swww.linwan.net
. P# o" g) # `$ a- `打造技术与娱乐的天作之合Open tables 256 4 ~3 A2 L- W( ?4 ?8 W1 x* A
Opened tables 9046 打造技术与娱乐的天作之合1 {6 ~+ M. G1 ~ X3 y- u
2 l& f# f; ]( A) ~9 V- F4 F. |www.linwan.net虽然open_tables已经等于table_cache,但是相对于服务器运行时间来说,已经运行了20天,opened_tables的值也非常低。因此,增加table_cache的值应该用处不大。如果运行了6个小时就出现上述值 那就要考虑增大table_cache。
% u( P8 s# E( a) N- x
2 Y. d% O- H+ |如果你不需要记录2进制log 就把这个功能关掉,注意关掉以后就不能恢复出问题前的数据了,需要您手动备份,二进制日志包含所有更新数据的语句,其目的是在恢复数据库时用它来把数据尽可能恢复到最后的状态。另外,如果做同步复制( Replication )的话,也需要使用二进制日志传送修改情况。
& R {1 c- a4 ~% X林海谐缘论坛打造技术与娱乐的天作之合1 ]1 }' ~* L7 h
log_bin指定日志文件,如果不提供文件名,MySQL将自己产生缺省文件名。MySQL会在文件名后面自动添加数字引,每次启动服务时,都会重新生成一个新的二进制文件。此外,使用log-bin-index可以指定索引文件;使用binlog-do-db可以指定记录的数据库;使用binlog-ignore-db可以指定不记录的数据库。注意的是:binlog-do-db和binlog-ignore-db一次只指定一个数据库,指定多个数据库需要多个语句。而且,MySQL会将所有的数据库名称改成小写,在指定数据库时必须全部使用小写名字,否则不会起作用。
8 e# l% e, m# C& f0 x0 q7 H0 A9 A# G/ ]/ }+ q
关掉这个功能只需要在他前面加上#号 林海谐缘论坛7 e* J5 N( O) C: I/ j7 i
8 ~* v* ~! G# _林海谐缘论坛#log-bin / R( Y8 ~# |9 j
% F2 N. n; a, q9 i; t& c5 Y
开启慢查询日志( slow query log ) 慢查询日志对于跟踪有问题的查询非常有用。它记录所有查过long_query_time的查询,如果需要,还可以记录不使用索引的记录。下面是一个慢查询日志的例子: ; H; {; A! x+ W5 u, e, t* e
+ D$ I/ A/ K/ n# P B8 Y9 vwww.linwan.net开启慢查询日志,需要设置参数log_slow_queries、long_query_times、log-queries-not-using-indexes。 www.linwan.net' Z. C: F5 k7 P" m! Q7 R
( L. f6 G3 X% b5 qlog_slow_queries指定日志文件,如果不提供文件名,MySQL将自己产生缺省文件名。long_query_times指定慢查询的阈值,缺省是10秒。log-queries-not-using-indexes是4.1.0以后引入的参数,它指示记录不使用索引的查询。笔者设置long_query_time=10 www.linwan.net& `, J, @" ]4 I& @3 I2 m, l& G
打造技术与娱乐的天作之合) Y$ N: n. u1 x5 K4 & L! {$ ?+ s
笔者设置:
1 e* U5 ?0 ?, V% U4 `3 }8 S3 B林海谐缘论坛' X" K2 f! e) Z# P
sort_buffer_size = 1M $ a( K3 A1 @' g+ k0 g
max_connections=120 林海谐缘论坛* T" [! e P. H* g4 h3 o' _
wait_timeout =120
* a; U7 l$ o f" c$ a$ f% Q% tback_log=100
8 ` F0 [" P+ R0 Q' J/ N打造技术与娱乐的天作之合read_buffer_size = 1M
6 d* T0 H+ R$ q8 O; Zthread_cache=32
. a, J6 q$ H% X- O, j" z" |打造技术与娱乐的天作之合interactive_timeout=120 ( m" @& X3 Z* L! R7 J0 C
thread_concurrency = 4
) m& L: N. {# |6 f4 B+ X! R林海谐缘论坛林海谐缘论坛/ {; y* n) A, t+ Y
参数说明: 打造技术与娱乐的天作之合$ `6 |% L2 [7 V: J- W( H
' K2 H* A; T: `3 @( ?' |林海谐缘论坛back_log , v/ f, t. n$ K' c: o
; K+ G C- B% f7 G1 _( L
要求MySQL能有的连接数量。当主要MySQL线程在一个很短时间内得到非常多的连接请求,这就起作用,然后主线程花些时间(尽管很短)检查连接并且启动一个新线程。back_log值指出在MySQL暂时停止回答新请求之前的短时间内多少个请求可以被存在堆栈中。只有如果期望在一个短时间内有很多连接,你需要增加它,换句话说,这值对到来的TCP/IP连接的侦听队列的大小。你的操作系统在这个队列大小上有它自己的限制。 Unix listen(2)系统调用的手册页应该有更多的细节。检查你的OS文档找出这个变量的最大值。试图设定back_log高于你的操作系统的限制将是无效的。
3 z$ }2 ^' ?5 T6 w: Kwww.linwan.net; a3 ^* D0 U4 q5 F" R& _
max_connections
5 g& ?& [. a$ a6 @: C1 , ^8 ] R8 z! E打造技术与娱乐的天作之合www.linwan.net. A5 {5 z1 g* ~" ?0 L
并发连接数目最大,120 超过这个值就会自动恢复,出了问题能自动解决 , g$ Z/ U7 h% A) Q3 S& G
2 i3 @- I2 u3 @ j, y8 H2 P
thread_cache 林海谐缘论坛) s) S( ?4 `* D3 K; # F
, K/ t7 Q( S0 M* G+ f0 ?+ L Q林海谐缘论坛没找到具体说明,不过设置为32后 20天才创建了400多个线程 而以前一天就创建了上千个线程 所以还是有用的
" F% x4 K+ P; g+ `4 t4 }. q: c
3 D! m- ~% H: o$ ~: c9 j; dthread_concurrency
: U( s% Z! b x! x0 b# q$ {+ d
+ m# P; T6 h3 r% J9 B! bwww.linwan.net#设置为你的cpu数目x2,例如,只有一个cpu,那么thread_concurrency=2 . U5 W7 m6 f3 R) U: e+ U
#有2个cpu,那么thread_concurrency=4 www.linwan.net1 E* u/ R1 ?0 G3 N5 n/ {
skip-innodb
% p2 w/ f! I1 b5 {www.linwan.net#去掉innodb支持
6 z4 U5 ' L6 Y( m6 p3 X3 @www.linwan.net' @0 }# q' d" v, @: B
代码:
' D6 P2 l5 y8 A1 o4 w {0 @( V& q0 L0 E9 _) u% c7 I
# Example MySQL config file for medium systems.
% @5 [7 m& g. a# l) {: t3 b& h5 E3 N! x
# This is for a system with little memory (32M - 64M) where MySQL plays
1 Y4 s# p9 e, W3 S& ]# an important part, or systems up to 128M where MySQL is used together with
" b( 4 O0 g% @. x" L7 Uwww.linwan.net# other programs (such as a web server) 打造技术与娱乐的天作之合* D& `0 ^, X3 I
# 林海谐缘论坛- V8 P+ p6 H' n- _& K. s$ n; }8 p
# You can copy this file to
9 ^" ]; r2 ? H4 T& O6 jwww.linwan.net# /etc/my.cnf to set global options,
2 V6 c4 n9 |- c! r% t, Q" N. g6 Z林海谐缘论坛# mysql-data-dir/my.cnf to set server-specific options (in this www.linwan.net6 O& a$ @4 n$ t+ {! S# h
# installation this directory is /var/lib/mysql) or www.linwan.net, {4 i3 t4 g. O# @. H8 ~( I
# ~/.my.cnf to set user-specific options. " w. W& e8 ?9 F" q9 m
#
3 z3 P# U! }1 L2 r0 g0 Bwww.linwan.net# In this file, you can use all long options that a program supports.
3 c( K9 ~9 @4 S, |1 T* K; s" p林海谐缘论坛# If you want to know which options a program supports, run the program
, [2 U2 S8 B3 I5 [" B4 Q) G. N# with the "--help" option.
9 F0 U: H8 T3 M' b1 ]' G' y打造技术与娱乐的天作之合林海谐缘论坛" ~/ H1 v* b7 T; P
# The following options will be passed to all MySQL clients 打造技术与娱乐的天作之合$ I5 u% f8 ^5 z E1 _; P0 ]
[client]
2 W" k8 Z; N8 [1 i" B#password = your_password
6 ~3 I$ k' e" b- s3 V1 s打造技术与娱乐的天作之合port = 3306
8 X( P- o9 J( |) H# w4 p6 hwww.linwan.netsocket = /tmp/mysql.sock
) n+ W' z9 t% D" G#socket = /var/lib/mysql/mysql.sock
) Z& C7 ` S9 M4 f6 F! J6 u打造技术与娱乐的天作之合# Here follows entries for some specific programs
; L, {8 f% S }6 l7 e# ~+ w/ x3 ^打造技术与娱乐的天作之合www.linwan.net$ e) F9 s; U+ m
# The MySQL server
3 w% A. y" H6 }- ^- ?[mysqld] 打造技术与娱乐的天作之合% H; n: O" |% T' }* R1 G ]
port = 3306 打造技术与娱乐的天作之合5 Z7 {4 S7 @) B) r& H7 R
socket = /tmp/mysql.sock
* E4 L& L! W5 i- Q: @0 Vwww.linwan.net#socket = /var/lib/mysql/mysql.sock
2 G5 I+ w' X/ Y% x% O* Fskip-locking
6 v7 C4 e3 f( ~) p* Pkey_buffer = 128M
- Q' z* $ G6 X/ K0 ?7 H林海谐缘论坛max_allowed_packet = 1M 林海谐缘论坛& x6 h, c3 f3 M$ C
table_cache = 256
. c3 g$ b( S' G! y, ~6 g9 U5 u$ L6 Bsort_buffer_size = 1M . Q3 L! u& c" s! p0 Y2 p, H
net_buffer_length = 16K
; P( b3 {$ J9 I% Emyisam_sort_buffer_size = 1M
; v C, p; w7 [* g/ Jmax_connections=120
. ~/ s* T9 Q0 H7 U6 www.linwan.net#addnew config www.linwan.net! b+ k7 [: r/ k
wait_timeout =120
; t u) L; Y& X1 lback_log=100
, S( T: t+ D6 w# Ywww.linwan.netread_buffer_size = 1M 林海谐缘论坛! F5 U5 t$ f8 t+ p, @ Y& i
thread_cache=32 : l1 M( g1 k/ s; e# G( O2 T/ H2 s
skip-innodb
+ c8 R/ i; }1 i. Q8 _skip-bdb
8 w* S) ^, L5 V0 U4 V5 ]www.linwan.netskip-name-resolve 林海谐缘论坛1 V" B3 K7 V+ B7 m
join_buffer_size=512k & K7 W9 W5 K5 x
query_cache_size = 32M / y/ ?0 X. S: C. B# N1 [
interactive_timeout=120
* T# x# F' J$ O+ mlong_query_time=10
5 p8 |- f j% N* [log_slow_queries= /usr/local/mysql4/logs/slow_query.log
& M; U( L- }4 F( g( H& f9 `打造技术与娱乐的天作之合query_cache_type= 1 林海谐缘论坛5 k! I0 W' `( 5 r1 d. u2 k4 N6 J
# Try number of CPU's*2 for thread_concurrency 6 U6 V1 f9 Q9 R; F7 q
thread_concurrency = 4
/ X; a( X! G8 t7 ~; R$ _' I打造技术与娱乐的天作之合& i0 [0 D2 V* ?! f+ n; T+ k
#end new config 0 ~! Q" U1 T3 I, R! A/ u2 v; l$ O
# Don't listen on a TCP/IP port at all. This can be a security enhancement, www.linwan.net- l1 T1 r& g, b( V U1 x8 M: v; E
# if all processes that need to connect to mysqld run on the same host. 林海谐缘论坛( u& @; c$ }1 d( i8 e
# All interaction with mysqld must be made via Unix sockets or named pipes.
. l7 e3 {- Y9 J2 I打造技术与娱乐的天作之合# Note that using this option without enabling named pipes on Windows www.linwan.net% z, W7 x2 t# y$ e2 B
# (via the "enable-named-pipe" option) will render mysqld useless! * S! @' z% w% ]' Q% R$ g0 {& v9 Y9 [
# 林海谐缘论坛" K* ~2 }5 P' e2 f2 r
#skip-networking 打造技术与娱乐的天作之合6 2 X# M0 [( q& w0 G( m+ A5 T. ]
6 p7 }/ W9 c3 d9 M3 _林海谐缘论坛# Replication Master Server (default)
$ J+ f T% Z( S# i$ Y# binary logging is required for replication
1 X! e$ y7 X& O林海谐缘论坛#log-bin
& n* C2 |* k" F7 u7 U% M( v
# c' x* y6 A u4 d林海谐缘论坛# required unique id between 1 and 2^32 - 1
+ O, _/ B0 W6 L3 n9 S" K. M打造技术与娱乐的天作之合# defaults to 1 if master-host is not set
`- ! S( T. s1 j# but will not function as a master if omitted
. [( q: H1 s0 B8 N. N打造技术与娱乐的天作之合server-id = 1
7 k/ s8 `& J7 S3 J林海谐缘论坛打造技术与娱乐的天作之合" s L4 e* x$ D6 A2 Q
# Replication Slave (comment out master section to use this) 打造技术与娱乐的天作之合1 U* {2 ]4 y7 ]" ]2 U D" v
# . g$ V8 ]. [/ y+ T) v$ o8 x4 U# w
# To configure this host as a replication slave, you can choose between
, F; k; y! P7 V! J8 n打造技术与娱乐的天作之合# two methods : 林海谐缘论坛0 l% I$ D3 |$ b
# www.linwan.net' p0 P! y0 e* 6 j' t
# 1) Use the CHANGE MASTER TO command (fully described in our manual) - & |! G# V( e+ }9 t; Z
# the syntax is:
" ^( R5 p8 j1 bwww.linwan.net#
9 z6 u7 T$ P2 [3 f& o# CHANGE MASTER TO MASTER_HOST=, MASTER_PORT=, 林海谐缘论坛' O) R; Z% Z9 l* v/ b9 k( }/ ?
# MASTER_USER=, MASTER_PASSWORD= ; 林海谐缘论坛* J& s$ g" v- u# s5 z
# 打造技术与娱乐的天作之合; q! e) ?) n: t" [4 M
# where you replace , , by quoted strings and ; W; z( $ }, P; t4 x. f6 ]: @
# by the master's port number (3306 by default). 0 g6 q' t0 z& O& F% Q# ?; i
# * D) z1 y( M' ?
# Example: 打造技术与娱乐的天作之合/ C$ K6 ^; c7 t6 L; h) G
# 打造技术与娱乐的天作之合' - ~- f/ [) 8 [* A
# CHANGE MASTER TO MASTER_HOST='125.564.12.1', MASTER_PORT=3306, 3 [) a n3 X% B5 n# O$ s/ A: b
# MASTER_USER='joe', MASTER_PASSWORD='secret';
0 @* C$ b7 l ^4 ewww.linwan.net#
8 E& i# {9 M0 e$ `打造技术与娱乐的天作之合# OR # r- n2 b9 @7 l/ q
#
5 d" y; T% @' Y6 X' J# 2) Set the variables below. However, in case you choose this method, then
; }0 k& n5 Y" }# h2 i6 |www.linwan.net# start replication for the first time (even unsuccessfully, for example
4 o% _$ g& E2 R( n; J# if you mistyped the password in master-password and the slave fails to 3 C8 O+ H. _; t# u: e& L
# connect), the slave will create a master.info file, and any later
/ f3 h n' U2 k W+ Cwww.linwan.net# change in this file to the variables' values below will be ignored and 林海谐缘论坛9 e5 [) G# e. H7 e
# overridden by the content of the master.info file, unless you shutdown 林海谐缘论坛* m0 o& u8 z% s. J+ r
# the slave server, delete master.info and restart the slaver server.
$ x% d2 p6 Y+ l0 i% T% kwww.linwan.net# For that reason, you may want to leave the lines below untouched
7 O; e! _) K6 `$ j) M# (commented) and instead use CHANGE MASTER TO (see above) www.linwan.net3 x3 S; - e$ V4 j& O6 s
# 林海谐缘论坛# l G* @# c" @6 O
# required unique id between 2 and 2^32 - 1
- c* _# J* V * H; M# (and different from the master) 林海谐缘论坛7 R- }' . x5 w( @% {. O, B" Q; a# N o
# defaults to 2 if master-host is set
' l7 P% O |5 Q7 x林海谐缘论坛# but will not function as a slave if omitted www.linwan.net" {! a6 q8 l' c/ H; X5 l* K
#server-id = 2 打造技术与娱乐的天作之合) f1 c. H* b9 d% z' v$ {
# 打造技术与娱乐的天作之合* B5 A/ b2 X0 K1 I" B; T. j- E3 u$ N
# The replication master for this slave - required
/ ^$ v! q2 b) w0 E3 V- v& mwww.linwan.net#master-host =
a+ b9 O# J* q i2 j$ t打造技术与娱乐的天作之合# www.linwan.net8 G# d8 H. H/ r+ I, d: |/ T4 G
# The username the slave will use for authentication when connecting
% [3 }. [$ A4 z: l# to the master - required
# N' r6 i" K7 ^' a- X#master-user = www.linwan.net/ q8 `9 v& L$ n& ~. [4 |/ z
#
8 J- {7 n; y: h9 M/ P8 |7 _- d打造技术与娱乐的天作之合# The password the slave will authenticate with when connecting to 6 N8 Q/ Y% h$ v- O6 {
# the master - required 打造技术与娱乐的天作之合/ G2 I% X N( ~
#master-password =
' f4 b6 V* X; Q M' A) c! xwww.linwan.net# 6 C0 X% H1 Z S* b
# The port the master is listening on.
7 e1 F) G6 M5 s! G! V9 Bwww.linwan.net# optional - defaults to 3306 8 Q' C* g" J+ w$ ~7 {1 X, K0 x" v
#master-port =
4 T- h) A9 b# M" p. z- J+ Cwww.linwan.net# 打造技术与娱乐的天作之合, i/ X. |( Q+ N% L7 f! F
# binary logging - not required for slaves, but recommended 打造技术与娱乐的天作之合1 Y1 A4 k. j& D/ O
#log-bin
) H$ f% }3 b# {3 k* K
8 ?8 $ }" y( d# Point the following paths to different dedicated disks
) [! F! k/ v$ I* q* W4 Q#tmpdir = /tmp/ 林海谐缘论坛3 L) g+ m- X, y4 K {! n9 a
#log-update = /path-to-dedicated-directory/hostname 林海谐缘论坛5 }5 A D5 9 y# W0 j! z6 S% y& |
% ?' }9 g" U! A: g5 }# Uncomment the following if you are using BDB tables ) [$ v0 f5 v+ t( s
#bdb_cache_size = 4M 打造技术与娱乐的天作之合& }& R* O7 ~5 B3 F$ M& C
#bdb_max_lock = 10000
1 R1 t# P4 h& [. O4 @ q ^打造技术与娱乐的天作之合3 a7 G5 _" E( {4 i) m' a
# Uncomment the following if you are using InnoDB tables 0 w6 a1 P2 i- ^# [
#innodb_data_home_dir = /var/lib/mysql/
1 q- j; q8 k0 X3 L/ a6 n* #innodb_data_file_path = ibdata1:10M:autoextend " E1 }7 b: M X8 d6 y2 a3 M
#innodb_log_group_home_dir = /var/lib/mysql/
: O0 I$ H& A) ]# P. A/ b8 T#innodb_log_arch_dir = /var/lib/mysql/ www.linwan.net9 y0 E6 T2 O) `' ?( O4 D1 n
# You can set .._buffer_pool_size up to 50 - 80 %
8 q. O* H: D6 f6 G: B+ [打造技术与娱乐的天作之合# of RAM but beware of setting memory usage too high 6 3 b& h" }" t7 U+ @
#innodb_buffer_pool_size = 16M ( Z4 b* S0 U, n! O! D6 C+ r, b
#innodb_additional_mem_pool_size = 2M 打造技术与娱乐的天作之合. U. b5 r; s2 c! m8 @$ i1 ]
# Set .._log_file_size to 25 % of buffer pool size 打造技术与娱乐的天作之合- U* V; V& c0 W
#innodb_log_file_size = 5M 林海谐缘论坛5 X3 G, v/ B! D# D, G' x
#innodb_log_buffer_size = 8M www.linwan.net" N- v* O8 h9 P# H2 Q
#innodb_flush_log_at_trx_commit = 1 8 D: s& }5 b+ D( E; K
#innodb_lock_wait_timeout = 50
* S* ?# O- |5 O1 t! _8 ]
) @8 R* O& p: c9 |1 h. f" o打造技术与娱乐的天作之合[mysqldump]
( H# X+ R4 W- z' |. N& W林海谐缘论坛quick
3 H8 z+ F& A- ]& `: R7 cmax_allowed_packet = 16M $ m2 E ^) [( L, a" U T
+ @/ D/ l: u, l( }2 C) t- p打造技术与娱乐的天作之合[mysql] 4 ]: a `! M6 i
no-auto-rehash ) ?8 A( l( ], ?6 v5 t& Y
# Remove the next comment character if you are not familiar with SQL www.linwan.net6 I4 t& I f" E! |$ o
#safe-updates
& ~. J+ [& D: U6 o: x% @林海谐缘论坛( _: F) a1 N5 p( Y5 d. p
[isamchk] www.linwan.net3 t& D' T- ?+ Z% X3 U; w! v* P
key_buffer = 20M
6 i5 Y1 f5 }; V9 v9 {3 @* H7 ~sort_buffer_size = 20M
$ C: y" I5 J: o% h; x2 l9 G打造技术与娱乐的天作之合read_buffer = 2M
8 R- O! c6 O4 |3 u- Xwrite_buffer = 2M 打造技术与娱乐的天作之合5 v$ J, r4 k7 z) ^2 {0 A
, z. Y5 f3 x- |& a[myisamchk]
' j0 h3 X3 {0 z2 u打造技术与娱乐的天作之合key_buffer = 20M
5 Y) W7 K1 j1 Y# jsort_buffer_size = 20M
) W) X0 m* z) {7 l$ ?read_buffer = 2M
( b+ z% E$ Z* y- d- iwrite_buffer = 2M 林海谐缘论坛, c$ }6 y0 |- u6 r* C2 l" t: a
% [; V' G2 _; n8 v
[mysqlhotcopy]
' @- d0 r; B5 Z& e. W7 ?www.linwan.netinteractive-timeout打造技术与娱乐的天作之合3 n9 h1 D& |8 V0 R/ @8 O/ n
林海谐缘论坛! S! P$ T* n9 s
补充 www.linwan.net8 X! J7 H& e f
% z" G( {5 v) G6 ]; H$ b/ wwww.linwan.net优化table_cachetable_cache指定表高速缓存的大小。每当MySQL访问一个表时,如果在表缓冲区中还有空间,该表就被打开并放入其中,这样可以更快地访问表内容。通过检查峰值时间的状态值Open_tables和Opened_tables,可以决定是否需要增加table_cache的值。如果你发现open_tables等于table_cache,并且opened_tables在不断增长,那么你就需要增加table_cache的值了(上述状态值可以使用SHOW STATUS LIKE ‘Open%tables’获得)。注意,不能盲目地把table_cache设置成很大的值。如果设置得太高,可能会造成文件描述符不足,从而造成性能不稳定或者连接失败。对于有1G内存的机器,推荐值是128-256。
2 f5 |0 O4 G6 G$ ~; ~1 J: P$ ~; D# D# `6 V, h0 W* u( _ & f
案例1:该案例来自一个不是特别繁忙的服务器table_cache – 512open_tables – 103opened_tables – 1273uptime – 4021421 (measured in seconds)该案例中table_cache似乎设置得太高了。在峰值时间,打开表的数目比table_cache要少得多。 www.linwan.net8 $ O) X- S1 j+ - Q( C
打造技术与娱乐的天作之合, N( m9 S- n. Z) f9 u
案例2:该案例来自一台开发服务器。table_cache – 64open_tables – 64opened-tables – 431uptime – 1662790 (measured in seconds)虽然open_tables已经等于table_cache,但是相对于服务器运行时间来说,opened_tables的值也非常低。因此,增加table_cache的值应该用处不大。案例3:该案例来自一个upderperforming的服务器table_cache – 64open_tables – 64opened_tables – 22423uptime – 19538该案例中table_cache设置得太低了。虽然运行时间不到6小时,open_tables达到了最大值,opened_tables的值也非常高。这样就需要增加table_cache的值。优化key_buffer_sizekey_buffer_size指定索引缓冲区的大小,它决定索引处理的速度,尤其是索引读的速度。通过检查状态值Key_read_requests和Key_reads,可以知道key_buffer_size设置是否合理。比例key_reads / key_read_requests应该尽可能的低,至少是1:100,1:1000更好(上述状态值可以使用SHOW STATUS LIKE ‘key_read%’获得)。key_buffer_size只对MyISAM表起作用。即使你不使用MyISAM表,但是内部的临时磁盘表是MyISAM表,也要使用该值。可以使用检查状态值created_tmp_disk_tables得知详情。对于1G内存的机器,如果不使用MyISAM表,推荐值是16M(8-64M)。 ( P: g: _& M0 p; S, D6 f8 H% ~# Y
- ^' F) 6 r: O; A/ F6 g; E
案例1:健康状况key_buffer_size – 402649088 (384M)key_read_requests – 597579931key_reads - 56188案例2:警报状态key_buffer_size – 16777216 (16M)key_read_requests – 597579931key_reads - 53832731案例1中比例低于1:10000,是健康的情况;案例2中比例达到1:11,警报已经拉响。
原文:http://www.myispace.cn/posts/b3d46ecebf95473c9e20902176881d2b.htm
常用的命令:
查看目前状态:SHOW STATUS LIKE 'qcache%';
查看缓存总大小:SHOW VARIABLES LIKE 'query_cache_size';
修复碎片:RESET QUERY CACHE
清理已经使用的内存:FLUSH QUERY CACHE
重置计数器:FLUSH STATUS;
说明:本博客只限于mysql服务器的调优,不包含其他优化,后续将会在本文的基础上进行积累。
一、对查询进行缓存
很多 LAMP 应用程序都严重依赖于数据库,但却会反复执行相同的查询。每次执行查询时,数据库都必须要执行相同的工作 —— 对查询进行分析(区分大小写),确定如何执行查询,从磁盘中加载信息,然后将结果返回给客户机。MySQL 有一个特性称为查询缓存,它将(后面会用到的)查询结果保存在内存中。在很多情况下,这会极大地提高性能。不过,问题是查询缓存在默认情况下是禁用的。
将 query_cache_size = 32M(默认0) 添加到 /etc/my.conf 中可以启用 32MB 的查询缓存(需要重启mysql)。
查看query_cache_size设置大小可用:SHOW VARIABLES LIKE 'query_cache_size';(单位byte)
查看服务器是否支持 缓存 用:SHOW VARIABLES LIKE 'have_query_cache';
移除所有已经使用的缓存(释放已使用的内存):RESET QUERY CACHE;
监视查询缓存
在启用查询缓存之后,重要的是要理解它是否得到了有效的使用。MySQL 有几个可以查看的变量,可以用来了解缓存中的情况。清单 2 给出了缓存的状态。
清单 2. 显示查询缓存的统计信息
mysql> SHOW STATUS LIKE 'qcache%';
+-------------------------+------------+
| Variable_name | Value |
+-------------------------+------------+
| Qcache_free_blocks | 5216 |
| Qcache_free_memory | 14640664 |
| Qcache_hits | 2581646882 |
| Qcache_inserts | 360210964 |
| Qcache_lowmem_prunes | 281680433 |
| Qcache_not_cached | 79740667 |
| Qcache_queries_in_cache | 16927 |
| Qcache_total_blocks | 47042 |
+-------------------------+------------+
8 rows in set (0.00 sec)
这些项的解释如表 1 所示。
表 1. MySQL 查询缓存变量
变量名说明
Qcache_free_blocks
缓存中相邻内存块的个数。数目大说明可能有碎片。FLUSH QUERY CACHE 会对缓存中的碎片进行整理,从而得到一个空闲块。
Qcache_free_memory
缓存中的空闲内存。
Qcache_hits
每次查询在缓存中命中时就增大。
Qcache_inserts
每次插入一个查询时就增大。命中次数除以插入次数就是不中比率;用 1 减去这个值就是命中率。在上面这个例子中,大约有 87% 的查询都在缓存中命中。
Qcache_lowmem_prunes (这个变量可以判断你的缓存大小是否合理)
缓存出现内存不足并且必须要进行清理以便为更多查询提供空间的次数。这个数字最好长时间来看;如果这个数字在不断增长,就表示可能碎片非常严重,或者内存很少。(上面的 free_blocks 和 free_memory 可以告诉您属于哪种情况)。
Qcache_not_cached
不适合进行缓存的查询的数量,通常是由于这些查询不是 SELECT 语句。
Qcache_queries_in_cache
当前缓存的查询(和响应)的数量。
Qcache_total_blocks
缓存中块的数量。
下面是在网上看到的一篇非常好的博客:有时间一一验证
MySQL优化经验 key_buffer_size,query_cache_size,ta【 来源:网络 作者:佚名 更新时间:2009-03-04 | 字体:大 中 小】
同时在线访问量继续增大 对于1G内存的服务器明显感觉到吃力严重时甚至每天都会死机 或者时不时的服务器卡一下 这个问题曾经困扰了我半个多月MySQL使用是很具伸缩性的算法,因此你通常能用很少的内存运行或给MySQL更多的被存以得到更好的性能。
8 a/ y6 g; @& D1 [+ Y9 u8 j) g) N" J) i/ n1 A0 b
安装好mysql后,配制文件应该在/usr/local/mysql/share/mysql目录中,配制文件有几个,有my-huge.cnf my-medium.cnf my-large.cnf my-small.cnf,不同的流量的网站和不同配制的服务器环境,当然需要有不同的配制文件了。 * W `% m. m- M
) U. s4 C% w, S5 B, N
一般的情况下,my-medium.cnf这个配制文件就能满足我们的大多需要;一般我们会把配置文件拷贝到/etc/my.cnf 只需要修改这个配置文件就可以了,使用mysqladmin variables extended-status –u root –p 可以看到目前的参数,有3个配置参数是最重要的,即key_buffer_size,query_cache_size,table_cache。 林海谐缘论坛' ^) w$ V. l' W/ k( c" C, j
www.linwan.net6 Y. g6 |. ?0 P% H% l
key_buffer_size只对MyISAM表起作用,
; p3 _5 N; ?# # d. E
. B& O( j! M8 l4 W% S4 okey_buffer_size指定索引缓冲区的大小,它决定索引处理的速度,尤其是索引读的速度。一般我们设为16M,实际上稍微大一点的站点 这个数字是远远不够的,通过检查状态值Key_read_requests和Key_reads,可以知道key_buffer_size设置是否合理。比例key_reads / key_read_requests应该尽可能的低,至少是1:100,1:1000更好(上述状态值可以使用SHOW STATUS LIKE ‘key_read%’获得)。 或者如果你装了phpmyadmin 可以通过服务器运行状态看到,笔者推荐用phpmyadmin管理mysql,以下的状态值都是本人通过phpmyadmin获得的实例分析:
5 x0 ~/ w# 3 t) j9 _www.linwan.net
: k) [0 a2 Z2 X5 A! E! m% }这个服务器已经运行了20天
2 h& h: w% k* r$ n: I2 u+ K% V6 N- D打造技术与娱乐的天作之合林海谐缘论坛" e% V. d( f) M, X. z; G9 W
key_buffer_size – 128M
s7 ^2 k' ]: V6 t4 ( fwww.linwan.netkey_read_requests – 650759289
/ B/ {# @. 5 @( H9 p打造技术与娱乐的天作之合key_reads - 79112 www.linwan.net8 Y4 v; q7 Y$ ~
打造技术与娱乐的天作之合6 O. Q; P5 O) H+ l: e8 P* ]4 a" l
比例接近1:8000 健康状况非常好 ) P" h: r3 j- M& k, O ]
6 [3 Z" F* b2 z* g$ @% l$ Jwww.linwan.net另外一个估计key_buffer_size的办法 把你网站数据库的每个表的索引所占空间大小加起来看看以此服务器为例:比较大的几个表索引加起来大概125M 这个数字会随着表变大而变大。 www.linwan.net/ n' V& i3 P, o$ T
* @" Y- b' o: c% r1 d从4.0.1开始,MySQL提供了查询缓冲机制。使用查询缓冲,MySQL将SELECT语句和查询结果存放在缓冲区中,今后对于同样的SELECT语句(区分大小写),将直接从缓冲区中读取结果。根据MySQL用户手册,使用查询缓冲最多可以达到238%的效率。 林海谐缘论坛: }" M. [4 W0 X k) u( {; r
* Y- X% L9 a7 R0 }+ w通过调节以下几个参数可以知道query_cache_size设置得是否合理
6 R+ h6 D- D2 A/ xwww.linwan.net
: K5 E8 h* ]" Q& ^% _www.linwan.netQcache inserts " Y' }, N& d# v2 t9 `& }0 F
Qcache hits
' ! r p8 y% S) Y; C打造技术与娱乐的天作之合Qcache lowmem prunes 7 K) ]9 S; R5 p6 M# J
Qcache free blocks
$ Q1 T. L) ]0 a/ N; y5 qwww.linwan.netQcache total blocks
- X( W& t( K4 c' _$ s4 d林海谐缘论坛# t: w' t6 l2 l8 d5 k7 E
Qcache_lowmem_prunes的值非常大,则表明经常出现缓冲不够的情况,同时Qcache_hits的值非常大,则表明查询缓冲使用非常频繁,此时需要增加缓冲大小Qcache_hits的值不大,则表明你的查询重复率很低,这种情况下使用查询缓冲反而会影响效率,那么可以考虑不用查询缓冲。此外,在SELECT语句中加入SQL_NO_CACHE可以明确表示不使用查询缓冲。 www.linwan.net. o! ?) W3 {' j' }/ N& 2 t4 A1 |
4 |, y3 J; O! C7 TQcache_free_blocks,如果该值非常大,则表明缓冲区中碎片很多query_cache_type指定是否使用查询缓冲
3 M% F( N5 [* v$ y5 ]! |+ ?打造技术与娱乐的天作之合1 w8 L$ v: ]' M( V
我设置: ! y% x: l# g( `- o& ?8 Y0 m
8 }+ ]5 J. Q) P6 O% S9 uquery_cache_size = 32M www.linwan.net6 }( u; W; S( X2 m: T
query_cache_type= 1 www.linwan.net! m. m1 f# }/ y. ]
, r$ r; v0 T1 A. ~5 O0 T
得到如下状态值: 打造技术与娱乐的天作之合% f6 ~& n, B' |/ [
+ D( O3 X2 Y# j9 Y$ {9 F
Qcache queries in cache 12737 表明目前缓存的条数
0 g' R! Q% _( |5 x, QQcache inserts 20649006
+ ?( x" `6 H# }5 B# I/ Hwww.linwan.netQcache hits 79060095 看来重复查询率还挺高的 $ [- Q% z7 {9 M/ f; ]5 l" m; q' [
Qcache lowmem prunes 617913 有这么多次出现缓存过低的情况 : z. f+ C8 K) v; {) i2 F
Qcache not cached 189896 www.linwan.net8 e ]7 m* x3 d' R+ G8 I
Qcache free memory 18573912 目前剩余缓存空间 . w% a3 U% V1 a" o+ m: ^$ G
Qcache free blocks 5328 这个数字似乎有点大 碎片不少 1 p; u, D1 k5 e$ m
Qcache total blocks 30953 林海谐缘论坛( x1 P$ Z6 e1 S) J9 u3 e& i- K
4 g( u$ D- h; F
如果内存允许32M应该要往上加点
2 h+ e8 q7 u3 x4 }% Cwww.linwan.net
3 m# Q3 {. E* v8 btable_cache指定表高速缓存的大小。每当MySQL访问一个表时,如果在表缓冲区中还有空间,该表就被打开并放入其中,这样可以更快地访问表内容。通过检查峰值时间的状态值Open_tables和Opened_tables,可以决定是否需要增加table_cache的值。如果你发现open_tables等于table_cache,并且opened_tables在不断增长,那么你就需要增加table_cache的值了(上述状态值可以使用SHOW STATUS LIKE ‘Open%tables’获得)。注意,不能盲目地把table_cache设置成很大的值。如果设置得太高,可能会造成文件描述符不足,从而造成性能不稳定或者连接失败。 " Q H$ Y) i3 K9 U* U+ B+ a
2 x2 ?" F. O/ |& `+ p2 Mwww.linwan.net对于有1G内存的机器,推荐值是128-256。
6 @5 S* E* R6 A0 b+ T林海谐缘论坛! N1 Q6 ^8 T: ^! z
笔者设置table_cache = 256
' f: J- t. a- H+ h9 `
) O5 x( 4 n% K4 b+ H* e得到以下状态:
& V9 J; q4 $ a$ Swww.linwan.net
. P# o" g) # `$ a- `打造技术与娱乐的天作之合Open tables 256 4 ~3 A2 L- W( ?4 ?8 W1 x* A
Opened tables 9046 打造技术与娱乐的天作之合1 {6 ~+ M. G1 ~ X3 y- u
2 l& f# f; ]( A) ~9 V- F4 F. |www.linwan.net虽然open_tables已经等于table_cache,但是相对于服务器运行时间来说,已经运行了20天,opened_tables的值也非常低。因此,增加table_cache的值应该用处不大。如果运行了6个小时就出现上述值 那就要考虑增大table_cache。
% u( P8 s# E( a) N- x
2 Y. d% O- H+ |如果你不需要记录2进制log 就把这个功能关掉,注意关掉以后就不能恢复出问题前的数据了,需要您手动备份,二进制日志包含所有更新数据的语句,其目的是在恢复数据库时用它来把数据尽可能恢复到最后的状态。另外,如果做同步复制( Replication )的话,也需要使用二进制日志传送修改情况。
& R {1 c- a4 ~% X林海谐缘论坛打造技术与娱乐的天作之合1 ]1 }' ~* L7 h
log_bin指定日志文件,如果不提供文件名,MySQL将自己产生缺省文件名。MySQL会在文件名后面自动添加数字引,每次启动服务时,都会重新生成一个新的二进制文件。此外,使用log-bin-index可以指定索引文件;使用binlog-do-db可以指定记录的数据库;使用binlog-ignore-db可以指定不记录的数据库。注意的是:binlog-do-db和binlog-ignore-db一次只指定一个数据库,指定多个数据库需要多个语句。而且,MySQL会将所有的数据库名称改成小写,在指定数据库时必须全部使用小写名字,否则不会起作用。
8 e# l% e, m# C& f0 x0 q7 H0 A9 A# G/ ]/ }+ q
关掉这个功能只需要在他前面加上#号 林海谐缘论坛7 e* J5 N( O) C: I/ j7 i
8 ~* v* ~! G# _林海谐缘论坛#log-bin / R( Y8 ~# |9 j
% F2 N. n; a, q9 i; t& c5 Y
开启慢查询日志( slow query log ) 慢查询日志对于跟踪有问题的查询非常有用。它记录所有查过long_query_time的查询,如果需要,还可以记录不使用索引的记录。下面是一个慢查询日志的例子: ; H; {; A! x+ W5 u, e, t* e
+ D$ I/ A/ K/ n# P B8 Y9 vwww.linwan.net开启慢查询日志,需要设置参数log_slow_queries、long_query_times、log-queries-not-using-indexes。 www.linwan.net' Z. C: F5 k7 P" m! Q7 R
( L. f6 G3 X% b5 qlog_slow_queries指定日志文件,如果不提供文件名,MySQL将自己产生缺省文件名。long_query_times指定慢查询的阈值,缺省是10秒。log-queries-not-using-indexes是4.1.0以后引入的参数,它指示记录不使用索引的查询。笔者设置long_query_time=10 www.linwan.net& `, J, @" ]4 I& @3 I2 m, l& G
打造技术与娱乐的天作之合) Y$ N: n. u1 x5 K4 & L! {$ ?+ s
笔者设置:
1 e* U5 ?0 ?, V% U4 `3 }8 S3 B林海谐缘论坛' X" K2 f! e) Z# P
sort_buffer_size = 1M $ a( K3 A1 @' g+ k0 g
max_connections=120 林海谐缘论坛* T" [! e P. H* g4 h3 o' _
wait_timeout =120
* a; U7 l$ o f" c$ a$ f% Q% tback_log=100
8 ` F0 [" P+ R0 Q' J/ N打造技术与娱乐的天作之合read_buffer_size = 1M
6 d* T0 H+ R$ q8 O; Zthread_cache=32
. a, J6 q$ H% X- O, j" z" |打造技术与娱乐的天作之合interactive_timeout=120 ( m" @& X3 Z* L! R7 J0 C
thread_concurrency = 4
) m& L: N. {# |6 f4 B+ X! R林海谐缘论坛林海谐缘论坛/ {; y* n) A, t+ Y
参数说明: 打造技术与娱乐的天作之合$ `6 |% L2 [7 V: J- W( H
' K2 H* A; T: `3 @( ?' |林海谐缘论坛back_log , v/ f, t. n$ K' c: o
; K+ G C- B% f7 G1 _( L
要求MySQL能有的连接数量。当主要MySQL线程在一个很短时间内得到非常多的连接请求,这就起作用,然后主线程花些时间(尽管很短)检查连接并且启动一个新线程。back_log值指出在MySQL暂时停止回答新请求之前的短时间内多少个请求可以被存在堆栈中。只有如果期望在一个短时间内有很多连接,你需要增加它,换句话说,这值对到来的TCP/IP连接的侦听队列的大小。你的操作系统在这个队列大小上有它自己的限制。 Unix listen(2)系统调用的手册页应该有更多的细节。检查你的OS文档找出这个变量的最大值。试图设定back_log高于你的操作系统的限制将是无效的。
3 z$ }2 ^' ?5 T6 w: Kwww.linwan.net; a3 ^* D0 U4 q5 F" R& _
max_connections
5 g& ?& [. a$ a6 @: C1 , ^8 ] R8 z! E打造技术与娱乐的天作之合www.linwan.net. A5 {5 z1 g* ~" ?0 L
并发连接数目最大,120 超过这个值就会自动恢复,出了问题能自动解决 , g$ Z/ U7 h% A) Q3 S& G
2 i3 @- I2 u3 @ j, y8 H2 P
thread_cache 林海谐缘论坛) s) S( ?4 `* D3 K; # F
, K/ t7 Q( S0 M* G+ f0 ?+ L Q林海谐缘论坛没找到具体说明,不过设置为32后 20天才创建了400多个线程 而以前一天就创建了上千个线程 所以还是有用的
" F% x4 K+ P; g+ `4 t4 }. q: c
3 D! m- ~% H: o$ ~: c9 j; dthread_concurrency
: U( s% Z! b x! x0 b# q$ {+ d
+ m# P; T6 h3 r% J9 B! bwww.linwan.net#设置为你的cpu数目x2,例如,只有一个cpu,那么thread_concurrency=2 . U5 W7 m6 f3 R) U: e+ U
#有2个cpu,那么thread_concurrency=4 www.linwan.net1 E* u/ R1 ?0 G3 N5 n/ {
skip-innodb
% p2 w/ f! I1 b5 {www.linwan.net#去掉innodb支持
6 z4 U5 ' L6 Y( m6 p3 X3 @www.linwan.net' @0 }# q' d" v, @: B
代码:
' D6 P2 l5 y8 A1 o4 w {0 @( V& q0 L0 E9 _) u% c7 I
# Example MySQL config file for medium systems.
% @5 [7 m& g. a# l) {: t3 b& h5 E3 N! x
# This is for a system with little memory (32M - 64M) where MySQL plays
1 Y4 s# p9 e, W3 S& ]# an important part, or systems up to 128M where MySQL is used together with
" b( 4 O0 g% @. x" L7 Uwww.linwan.net# other programs (such as a web server) 打造技术与娱乐的天作之合* D& `0 ^, X3 I
# 林海谐缘论坛- V8 P+ p6 H' n- _& K. s$ n; }8 p
# You can copy this file to
9 ^" ]; r2 ? H4 T& O6 jwww.linwan.net# /etc/my.cnf to set global options,
2 V6 c4 n9 |- c! r% t, Q" N. g6 Z林海谐缘论坛# mysql-data-dir/my.cnf to set server-specific options (in this www.linwan.net6 O& a$ @4 n$ t+ {! S# h
# installation this directory is /var/lib/mysql) or www.linwan.net, {4 i3 t4 g. O# @. H8 ~( I
# ~/.my.cnf to set user-specific options. " w. W& e8 ?9 F" q9 m
#
3 z3 P# U! }1 L2 r0 g0 Bwww.linwan.net# In this file, you can use all long options that a program supports.
3 c( K9 ~9 @4 S, |1 T* K; s" p林海谐缘论坛# If you want to know which options a program supports, run the program
, [2 U2 S8 B3 I5 [" B4 Q) G. N# with the "--help" option.
9 F0 U: H8 T3 M' b1 ]' G' y打造技术与娱乐的天作之合林海谐缘论坛" ~/ H1 v* b7 T; P
# The following options will be passed to all MySQL clients 打造技术与娱乐的天作之合$ I5 u% f8 ^5 z E1 _; P0 ]
[client]
2 W" k8 Z; N8 [1 i" B#password = your_password
6 ~3 I$ k' e" b- s3 V1 s打造技术与娱乐的天作之合port = 3306
8 X( P- o9 J( |) H# w4 p6 hwww.linwan.netsocket = /tmp/mysql.sock
) n+ W' z9 t% D" G#socket = /var/lib/mysql/mysql.sock
) Z& C7 ` S9 M4 f6 F! J6 u打造技术与娱乐的天作之合# Here follows entries for some specific programs
; L, {8 f% S }6 l7 e# ~+ w/ x3 ^打造技术与娱乐的天作之合www.linwan.net$ e) F9 s; U+ m
# The MySQL server
3 w% A. y" H6 }- ^- ?[mysqld] 打造技术与娱乐的天作之合% H; n: O" |% T' }* R1 G ]
port = 3306 打造技术与娱乐的天作之合5 Z7 {4 S7 @) B) r& H7 R
socket = /tmp/mysql.sock
* E4 L& L! W5 i- Q: @0 Vwww.linwan.net#socket = /var/lib/mysql/mysql.sock
2 G5 I+ w' X/ Y% x% O* Fskip-locking
6 v7 C4 e3 f( ~) p* Pkey_buffer = 128M
- Q' z* $ G6 X/ K0 ?7 H林海谐缘论坛max_allowed_packet = 1M 林海谐缘论坛& x6 h, c3 f3 M$ C
table_cache = 256
. c3 g$ b( S' G! y, ~6 g9 U5 u$ L6 Bsort_buffer_size = 1M . Q3 L! u& c" s! p0 Y2 p, H
net_buffer_length = 16K
; P( b3 {$ J9 I% Emyisam_sort_buffer_size = 1M
; v C, p; w7 [* g/ Jmax_connections=120
. ~/ s* T9 Q0 H7 U6 www.linwan.net#addnew config www.linwan.net! b+ k7 [: r/ k
wait_timeout =120
; t u) L; Y& X1 lback_log=100
, S( T: t+ D6 w# Ywww.linwan.netread_buffer_size = 1M 林海谐缘论坛! F5 U5 t$ f8 t+ p, @ Y& i
thread_cache=32 : l1 M( g1 k/ s; e# G( O2 T/ H2 s
skip-innodb
+ c8 R/ i; }1 i. Q8 _skip-bdb
8 w* S) ^, L5 V0 U4 V5 ]www.linwan.netskip-name-resolve 林海谐缘论坛1 V" B3 K7 V+ B7 m
join_buffer_size=512k & K7 W9 W5 K5 x
query_cache_size = 32M / y/ ?0 X. S: C. B# N1 [
interactive_timeout=120
* T# x# F' J$ O+ mlong_query_time=10
5 p8 |- f j% N* [log_slow_queries= /usr/local/mysql4/logs/slow_query.log
& M; U( L- }4 F( g( H& f9 `打造技术与娱乐的天作之合query_cache_type= 1 林海谐缘论坛5 k! I0 W' `( 5 r1 d. u2 k4 N6 J
# Try number of CPU's*2 for thread_concurrency 6 U6 V1 f9 Q9 R; F7 q
thread_concurrency = 4
/ X; a( X! G8 t7 ~; R$ _' I打造技术与娱乐的天作之合& i0 [0 D2 V* ?! f+ n; T+ k
#end new config 0 ~! Q" U1 T3 I, R! A/ u2 v; l$ O
# Don't listen on a TCP/IP port at all. This can be a security enhancement, www.linwan.net- l1 T1 r& g, b( V U1 x8 M: v; E
# if all processes that need to connect to mysqld run on the same host. 林海谐缘论坛( u& @; c$ }1 d( i8 e
# All interaction with mysqld must be made via Unix sockets or named pipes.
. l7 e3 {- Y9 J2 I打造技术与娱乐的天作之合# Note that using this option without enabling named pipes on Windows www.linwan.net% z, W7 x2 t# y$ e2 B
# (via the "enable-named-pipe" option) will render mysqld useless! * S! @' z% w% ]' Q% R$ g0 {& v9 Y9 [
# 林海谐缘论坛" K* ~2 }5 P' e2 f2 r
#skip-networking 打造技术与娱乐的天作之合6 2 X# M0 [( q& w0 G( m+ A5 T. ]
6 p7 }/ W9 c3 d9 M3 _林海谐缘论坛# Replication Master Server (default)
$ J+ f T% Z( S# i$ Y# binary logging is required for replication
1 X! e$ y7 X& O林海谐缘论坛#log-bin
& n* C2 |* k" F7 u7 U% M( v
# c' x* y6 A u4 d林海谐缘论坛# required unique id between 1 and 2^32 - 1
+ O, _/ B0 W6 L3 n9 S" K. M打造技术与娱乐的天作之合# defaults to 1 if master-host is not set
`- ! S( T. s1 j# but will not function as a master if omitted
. [( q: H1 s0 B8 N. N打造技术与娱乐的天作之合server-id = 1
7 k/ s8 `& J7 S3 J林海谐缘论坛打造技术与娱乐的天作之合" s L4 e* x$ D6 A2 Q
# Replication Slave (comment out master section to use this) 打造技术与娱乐的天作之合1 U* {2 ]4 y7 ]" ]2 U D" v
# . g$ V8 ]. [/ y+ T) v$ o8 x4 U# w
# To configure this host as a replication slave, you can choose between
, F; k; y! P7 V! J8 n打造技术与娱乐的天作之合# two methods : 林海谐缘论坛0 l% I$ D3 |$ b
# www.linwan.net' p0 P! y0 e* 6 j' t
# 1) Use the CHANGE MASTER TO command (fully described in our manual) - & |! G# V( e+ }9 t; Z
# the syntax is:
" ^( R5 p8 j1 bwww.linwan.net#
9 z6 u7 T$ P2 [3 f& o# CHANGE MASTER TO MASTER_HOST=, MASTER_PORT=, 林海谐缘论坛' O) R; Z% Z9 l* v/ b9 k( }/ ?
# MASTER_USER=, MASTER_PASSWORD= ; 林海谐缘论坛* J& s$ g" v- u# s5 z
# 打造技术与娱乐的天作之合; q! e) ?) n: t" [4 M
# where you replace , , by quoted strings and ; W; z( $ }, P; t4 x. f6 ]: @
# by the master's port number (3306 by default). 0 g6 q' t0 z& O& F% Q# ?; i
# * D) z1 y( M' ?
# Example: 打造技术与娱乐的天作之合/ C$ K6 ^; c7 t6 L; h) G
# 打造技术与娱乐的天作之合' - ~- f/ [) 8 [* A
# CHANGE MASTER TO MASTER_HOST='125.564.12.1', MASTER_PORT=3306, 3 [) a n3 X% B5 n# O$ s/ A: b
# MASTER_USER='joe', MASTER_PASSWORD='secret';
0 @* C$ b7 l ^4 ewww.linwan.net#
8 E& i# {9 M0 e$ `打造技术与娱乐的天作之合# OR # r- n2 b9 @7 l/ q
#
5 d" y; T% @' Y6 X' J# 2) Set the variables below. However, in case you choose this method, then
; }0 k& n5 Y" }# h2 i6 |www.linwan.net# start replication for the first time (even unsuccessfully, for example
4 o% _$ g& E2 R( n; J# if you mistyped the password in master-password and the slave fails to 3 C8 O+ H. _; t# u: e& L
# connect), the slave will create a master.info file, and any later
/ f3 h n' U2 k W+ Cwww.linwan.net# change in this file to the variables' values below will be ignored and 林海谐缘论坛9 e5 [) G# e. H7 e
# overridden by the content of the master.info file, unless you shutdown 林海谐缘论坛* m0 o& u8 z% s. J+ r
# the slave server, delete master.info and restart the slaver server.
$ x% d2 p6 Y+ l0 i% T% kwww.linwan.net# For that reason, you may want to leave the lines below untouched
7 O; e! _) K6 `$ j) M# (commented) and instead use CHANGE MASTER TO (see above) www.linwan.net3 x3 S; - e$ V4 j& O6 s
# 林海谐缘论坛# l G* @# c" @6 O
# required unique id between 2 and 2^32 - 1
- c* _# J* V * H; M# (and different from the master) 林海谐缘论坛7 R- }' . x5 w( @% {. O, B" Q; a# N o
# defaults to 2 if master-host is set
' l7 P% O |5 Q7 x林海谐缘论坛# but will not function as a slave if omitted www.linwan.net" {! a6 q8 l' c/ H; X5 l* K
#server-id = 2 打造技术与娱乐的天作之合) f1 c. H* b9 d% z' v$ {
# 打造技术与娱乐的天作之合* B5 A/ b2 X0 K1 I" B; T. j- E3 u$ N
# The replication master for this slave - required
/ ^$ v! q2 b) w0 E3 V- v& mwww.linwan.net#master-host =
a+ b9 O# J* q i2 j$ t打造技术与娱乐的天作之合# www.linwan.net8 G# d8 H. H/ r+ I, d: |/ T4 G
# The username the slave will use for authentication when connecting
% [3 }. [$ A4 z: l# to the master - required
# N' r6 i" K7 ^' a- X#master-user = www.linwan.net/ q8 `9 v& L$ n& ~. [4 |/ z
#
8 J- {7 n; y: h9 M/ P8 |7 _- d打造技术与娱乐的天作之合# The password the slave will authenticate with when connecting to 6 N8 Q/ Y% h$ v- O6 {
# the master - required 打造技术与娱乐的天作之合/ G2 I% X N( ~
#master-password =
' f4 b6 V* X; Q M' A) c! xwww.linwan.net# 6 C0 X% H1 Z S* b
# The port the master is listening on.
7 e1 F) G6 M5 s! G! V9 Bwww.linwan.net# optional - defaults to 3306 8 Q' C* g" J+ w$ ~7 {1 X, K0 x" v
#master-port =
4 T- h) A9 b# M" p. z- J+ Cwww.linwan.net# 打造技术与娱乐的天作之合, i/ X. |( Q+ N% L7 f! F
# binary logging - not required for slaves, but recommended 打造技术与娱乐的天作之合1 Y1 A4 k. j& D/ O
#log-bin
) H$ f% }3 b# {3 k* K
8 ?8 $ }" y( d# Point the following paths to different dedicated disks
) [! F! k/ v$ I* q* W4 Q#tmpdir = /tmp/ 林海谐缘论坛3 L) g+ m- X, y4 K {! n9 a
#log-update = /path-to-dedicated-directory/hostname 林海谐缘论坛5 }5 A D5 9 y# W0 j! z6 S% y& |
% ?' }9 g" U! A: g5 }# Uncomment the following if you are using BDB tables ) [$ v0 f5 v+ t( s
#bdb_cache_size = 4M 打造技术与娱乐的天作之合& }& R* O7 ~5 B3 F$ M& C
#bdb_max_lock = 10000
1 R1 t# P4 h& [. O4 @ q ^打造技术与娱乐的天作之合3 a7 G5 _" E( {4 i) m' a
# Uncomment the following if you are using InnoDB tables 0 w6 a1 P2 i- ^# [
#innodb_data_home_dir = /var/lib/mysql/
1 q- j; q8 k0 X3 L/ a6 n* #innodb_data_file_path = ibdata1:10M:autoextend " E1 }7 b: M X8 d6 y2 a3 M
#innodb_log_group_home_dir = /var/lib/mysql/
: O0 I$ H& A) ]# P. A/ b8 T#innodb_log_arch_dir = /var/lib/mysql/ www.linwan.net9 y0 E6 T2 O) `' ?( O4 D1 n
# You can set .._buffer_pool_size up to 50 - 80 %
8 q. O* H: D6 f6 G: B+ [打造技术与娱乐的天作之合# of RAM but beware of setting memory usage too high 6 3 b& h" }" t7 U+ @
#innodb_buffer_pool_size = 16M ( Z4 b* S0 U, n! O! D6 C+ r, b
#innodb_additional_mem_pool_size = 2M 打造技术与娱乐的天作之合. U. b5 r; s2 c! m8 @$ i1 ]
# Set .._log_file_size to 25 % of buffer pool size 打造技术与娱乐的天作之合- U* V; V& c0 W
#innodb_log_file_size = 5M 林海谐缘论坛5 X3 G, v/ B! D# D, G' x
#innodb_log_buffer_size = 8M www.linwan.net" N- v* O8 h9 P# H2 Q
#innodb_flush_log_at_trx_commit = 1 8 D: s& }5 b+ D( E; K
#innodb_lock_wait_timeout = 50
* S* ?# O- |5 O1 t! _8 ]
) @8 R* O& p: c9 |1 h. f" o打造技术与娱乐的天作之合[mysqldump]
( H# X+ R4 W- z' |. N& W林海谐缘论坛quick
3 H8 z+ F& A- ]& `: R7 cmax_allowed_packet = 16M $ m2 E ^) [( L, a" U T
+ @/ D/ l: u, l( }2 C) t- p打造技术与娱乐的天作之合[mysql] 4 ]: a `! M6 i
no-auto-rehash ) ?8 A( l( ], ?6 v5 t& Y
# Remove the next comment character if you are not familiar with SQL www.linwan.net6 I4 t& I f" E! |$ o
#safe-updates
& ~. J+ [& D: U6 o: x% @林海谐缘论坛( _: F) a1 N5 p( Y5 d. p
[isamchk] www.linwan.net3 t& D' T- ?+ Z% X3 U; w! v* P
key_buffer = 20M
6 i5 Y1 f5 }; V9 v9 {3 @* H7 ~sort_buffer_size = 20M
$ C: y" I5 J: o% h; x2 l9 G打造技术与娱乐的天作之合read_buffer = 2M
8 R- O! c6 O4 |3 u- Xwrite_buffer = 2M 打造技术与娱乐的天作之合5 v$ J, r4 k7 z) ^2 {0 A
, z. Y5 f3 x- |& a[myisamchk]
' j0 h3 X3 {0 z2 u打造技术与娱乐的天作之合key_buffer = 20M
5 Y) W7 K1 j1 Y# jsort_buffer_size = 20M
) W) X0 m* z) {7 l$ ?read_buffer = 2M
( b+ z% E$ Z* y- d- iwrite_buffer = 2M 林海谐缘论坛, c$ }6 y0 |- u6 r* C2 l" t: a
% [; V' G2 _; n8 v
[mysqlhotcopy]
' @- d0 r; B5 Z& e. W7 ?www.linwan.netinteractive-timeout打造技术与娱乐的天作之合3 n9 h1 D& |8 V0 R/ @8 O/ n
林海谐缘论坛! S! P$ T* n9 s
补充 www.linwan.net8 X! J7 H& e f
% z" G( {5 v) G6 ]; H$ b/ wwww.linwan.net优化table_cachetable_cache指定表高速缓存的大小。每当MySQL访问一个表时,如果在表缓冲区中还有空间,该表就被打开并放入其中,这样可以更快地访问表内容。通过检查峰值时间的状态值Open_tables和Opened_tables,可以决定是否需要增加table_cache的值。如果你发现open_tables等于table_cache,并且opened_tables在不断增长,那么你就需要增加table_cache的值了(上述状态值可以使用SHOW STATUS LIKE ‘Open%tables’获得)。注意,不能盲目地把table_cache设置成很大的值。如果设置得太高,可能会造成文件描述符不足,从而造成性能不稳定或者连接失败。对于有1G内存的机器,推荐值是128-256。
2 f5 |0 O4 G6 G$ ~; ~1 J: P$ ~; D# D# `6 V, h0 W* u( _ & f
案例1:该案例来自一个不是特别繁忙的服务器table_cache – 512open_tables – 103opened_tables – 1273uptime – 4021421 (measured in seconds)该案例中table_cache似乎设置得太高了。在峰值时间,打开表的数目比table_cache要少得多。 www.linwan.net8 $ O) X- S1 j+ - Q( C
打造技术与娱乐的天作之合, N( m9 S- n. Z) f9 u
案例2:该案例来自一台开发服务器。table_cache – 64open_tables – 64opened-tables – 431uptime – 1662790 (measured in seconds)虽然open_tables已经等于table_cache,但是相对于服务器运行时间来说,opened_tables的值也非常低。因此,增加table_cache的值应该用处不大。案例3:该案例来自一个upderperforming的服务器table_cache – 64open_tables – 64opened_tables – 22423uptime – 19538该案例中table_cache设置得太低了。虽然运行时间不到6小时,open_tables达到了最大值,opened_tables的值也非常高。这样就需要增加table_cache的值。优化key_buffer_sizekey_buffer_size指定索引缓冲区的大小,它决定索引处理的速度,尤其是索引读的速度。通过检查状态值Key_read_requests和Key_reads,可以知道key_buffer_size设置是否合理。比例key_reads / key_read_requests应该尽可能的低,至少是1:100,1:1000更好(上述状态值可以使用SHOW STATUS LIKE ‘key_read%’获得)。key_buffer_size只对MyISAM表起作用。即使你不使用MyISAM表,但是内部的临时磁盘表是MyISAM表,也要使用该值。可以使用检查状态值created_tmp_disk_tables得知详情。对于1G内存的机器,如果不使用MyISAM表,推荐值是16M(8-64M)。 ( P: g: _& M0 p; S, D6 f8 H% ~# Y
- ^' F) 6 r: O; A/ F6 g; E
案例1:健康状况key_buffer_size – 402649088 (384M)key_read_requests – 597579931key_reads - 56188案例2:警报状态key_buffer_size – 16777216 (16M)key_read_requests – 597579931key_reads - 53832731案例1中比例低于1:10000,是健康的情况;案例2中比例达到1:11,警报已经拉响。
原文:http://www.myispace.cn/posts/b3d46ecebf95473c9e20902176881d2b.htm
发表评论
-
性能优化重要的mysql profile功能
2023-02-24 23:24 255关键字:性能优化重要的mysql profile功能 ... -
mysql源码解读之事务提交过程--第二篇
2018-01-10 15:03 524关键字:mysql源码解读 ... -
循环创建多张表 和 多个数据库sql语句(数据库水平分库分表时方便)
2016-03-04 12:58 12397关键字:循环创建多张 ... -
高可用、开源的Redis缓存集群方案
2015-04-16 12:25 3761推荐综合架构交流群:J ... -
Oracle实现类split函数的方
2015-04-16 10:10 644关键字:Oracle实现类split函数的方 项目里需要保存结 ... -
各种Nosql数据库系统对比及应用场景分析
2015-04-15 16:29 762关键字:各种Nosql数据库系统对比及应用场景分析 导读:Kr ... -
数据库迁移之从oracle 到 MySQL
2015-04-11 09:38 919关键字:数据库迁移之从oracle 到 MySQL 开场白: ... -
Mongodb命令大全
2015-03-18 11:18 810关键字:Mongodb命令大全 他支持的数据结构非常松散,是类 ... -
MongoDB中缩减Shard集群(删除一个Shard)--删除一个分片
2015-03-13 12:29 3649关键字:MongoDB中缩减Shard集群(删除一个Shard ... -
Mongodb副本集(三个节点:一主一从一仲裁)-配置文件方式启动
2015-03-05 17:32 2075关键字:Mongodb副本集(三个节点:一主一从一仲裁)-配置 ... -
win7 64位的数据源(ODBC)配置问题
2015-01-20 16:36 1102关键字:win7 64位的数据源(ODBC)配置问题 ... -
atomikos(com.atomikos.icatch.SysException: Error in init(): Log already in use)
2014-10-15 13:12 8537关键字:atomikos(com.atomikos.icatc ... -
Mysql高可用架构
2014-09-02 11:41 2806关键字:Mysql高可用架构 最近花了点时间研究了一下mys ... -
MySQL原生HA方案 – Fabric体验之旅
2014-08-21 13:13 7117关键字:MySQL原生HA方案 – Fabric体验之旅 ta ... -
性能优化重要的mysql profile功能
2014-02-10 15:25 51关键字:性能优化重要的mysql profile功能 my ... -
mysql profile功能
2014-02-10 15:12 24关键字:mysql profile功能 mysql的sql ... -
mybatis优化
2013-11-29 00:12 6462关键字:mybatis优化 1、每个bean都要有对应的g ... -
动态分库分表策略
2013-11-21 15:52 1375关键字:动态分库分表策略 参考网址:http://drag ... -
Windows 2008下如何配置Oracle ASM
2013-08-19 13:23 58822关键字:Windows 2008下如何配置Oracle ASM ... -
plsql 链接远程机器零配置
2013-07-17 12:06 3913关键字:plsql 链接远程机器零配置 打开plsql会弹 ...
相关推荐
MySQL服务器优化是一个复杂而细致的过程,它涉及到多个层面,包括但不限于查询优化、连接管理、内存配置、磁盘I/O等。下面将详细讲解基于status信息的优化策略。 首先,我们关注的是慢查询优化。通过`show ...
Mysql服务器优化思路 图
对于2GB内存的MySQL服务器优化,需要综合考虑服务器的具体应用场景、并发量等因素来合理配置各项参数。上述参数仅为一般指导建议,具体配置还需要结合实际测试结果进行调整,以达到最佳性能表现。通过细致地调整这些...
3. **MySQL服务器优化**:通过对MySQL服务器的配置参数进行调整来提升整体性能。 #### 三、查询优化 ##### 3.1 SQL性能瓶颈定义 - **IO问题**:数据库访问过程中读写磁盘的次数过多。 - **CPU问题**:查询处理过程...
3. **MySQL服务器优化**:通过调整MySQL配置参数来提升服务器整体性能。 #### 二、MySQL性能参数 在进行MySQL性能优化之前,首先需要了解一些重要的性能指标,这些可以通过`SHOW STATUS`命令来查看: - **Slow_...
3. **MySQL服务器优化**: - **参数调整**:根据系统资源和应用需求调整MySQL的配置参数,如innodb_buffer_pool_size、max_connections、query_cache_size等。 - **内存调优**:确保足够的内存分配给MySQL,以缓存...
### MySQL数据库服务器优化详解 在IT领域,MySQL作为全球最流行的开源关系型数据库管理系统之一,其性能优化一直是DBA(数据库管理员)和技术人员关注的重点。本文将深入解析MySQL数据库服务器优化的关键点,涵盖...
客户端层包括与MySQL服务器通信的各类应用程序,如PHP、Python等语言的程序库,以及可视化的数据库管理工具。 SQL语句执行流程是MySQL性能优化的重要方面。SQL(Structured Query Language)是关系型数据库的标准...
本文将详细介绍如何针对Windows平台下的MySQL服务器进行合理的配置优化,帮助读者更好地理解每个参数的作用及其设置的最佳实践。 #### 一、MySQL配置文件简介 MySQL在Windows平台上的主要配置文件为`my.ini`,通常...
MySQL 服务器由多个组成部分组成,包括 MySQL 服务器进程、存储引擎、查询优化器等。 MySQL 服务器进程是 MySQL 服务器的核心组成部分,负责处理客户端的请求和响应。存储引擎是 MySQL 服务器的核心组成部分,负责...
mysql服务器配置及优化,从硬件要求开始
MySQL性能优化是一个涵盖广泛的主题,涉及多个层面,包括SQL语句优化、索引优化、数据库表结构优化、系统级配置优化以及服务器硬件优化。以下是对这些方面进行详细说明: 1. **SQL语句优化** - **慢查询日志**:...
本文主要介绍MySQL 5.6版本的性能优化最佳实践,包括优化的定义、查询优化、数据库结构优化以及MySQL服务器优化的方法。 首先,优化是指通过合理安排资源和调整系统参数,使得MySQL运行更快、更加节省资源。其原则...
以下是一些关于MySQL服务器优化的重要知识点: 1. **参数设置与配置文件**: MySQL安装时提供了不同规模的配置文件,如`my-small.cnf`, `my-medium.cnf`, `my-large.cnf`等,它们预设了适用于不同场景的参数。根据...
3. **MySQL 服务器优化:** 配置 MySQL 服务器参数,使其更加适应特定的应用场景需求,减少系统瓶颈。 #### 原则 - **减少系统瓶颈:** 识别并消除可能导致性能瓶颈的因素。 - **减少资源占用:** 通过优化减少 ...
3. 使用MySQL Tuner或mytop等工具自动或手动调整MySQL服务器参数。 这些笔记涵盖了MySQL优化的主要方面,包括查询优化、SQL编写技巧、数据库设计、存储引擎选择、服务器配置、硬件升级、定期维护以及使用各种工具...
* 二进制日志、慢查询日志和通用查询日志的作用:记录MySQL服务器的操作信息,用于分析和优化MySQL服务器的性能。 * 启用日志的方法:在初始化配置文件中添加相应的配置信息,启用日志。 实验1-7:查看二进制日志、...
下面是 MySQL 服务性能优化的 My.cnf 配置说明详解,基于 16G 内存的服务器配置。 1. 服务器基本配置 在 My.cnf 文件中,服务器基本配置包括 port、socket、basedir 和 datadir 等参数。其中,port 指定了 MySQL ...
在“02 为了执行SQL语句,你知道MySQL用了什么样的架构设计吗.pdf”中,你会发现MySQL采用的是客户端/服务器模型,由前端的连接器、查询缓存、分析器、优化器和执行器等组件构成。这些组件协同工作,解析并执行SQL...