MYSQL 的优化(/etc/my.cnf)W\3i4w+k Vq%`7C
1)确认在“[mysqld]”部分加入了“skip-innodb”和“skip-bdb”参数;r Di h;S\`6v
2)确认在“[mysqld]”部分加入了“skip-name-resolve”和“skip-locking”参数;c'eIv1~$z
3)如果不需要的话,可以将二进制日志(binlog)停掉,方法是将“log-bin”注释掉;
@&Tq&T2RTkC 4)在内存允许的情况下,对一些参数进行重新配置,目标在于将大部分操作集中于内存中,尽量不进行磁盘操作,对于我的 MYSQL 服务器我是如下修改的,基于 2G 内存情况:#_CFH#{X u
4@a[ s.|k(E:a2T
[mysqld]
9L[@{0K7J set-variable = key_buffer=512M
){1R9QXIY set-variable = max_allowed_packet=4M/SFL S4r7H eV
set-variable = table_cache=1024$x^k6j&@o Q J!m)F*c
set-variable = thread_cache=640Y{,T%SU(sh
set-variable = join_buffer_size=32M
LWfwnbk'y set-variable = sort_buffer=32M
4X!Z3gL:hG Wd set-variable = record_buffer=32M c]&g` t Q
set-variable = max_connections=512
5`e'Y,n.^0fm X set-variable = wait_timeout=120
"_}J9rE!V2[ set-variable = interactive_timeout=120 sJvGE5?'@/P*T)W
set-variable = max_connect_errors=30000
S9@)W+e)k set-variable = long_query_time=1
Ua&x]{ law~8[7]E set-variable = max_heap_table_size=256MJu c0U T&Pc
set-variable = tmp_table_size=128MIlqBh%w'M
set-variable = thread_concurrency=8^6~-s^8st9WPeS'K
set-variable = myisam_sort_buffer_size=128M
E^V"E#m.Y/_
.?!ygK6?5Q 你可以根据“show status”命令返回的状态进行微调。我主要注意以下变量的数值,越小越好,最好为零:)&O8`3] w Y;c|
Created_tmp_disk_tables
c,n~Z tQ#Hg2n Created_tmp_tablesY@/r1BGm0C8LrhT
Created_tmp_files@2o"VU^t u'Uj?
Slow_queries
}onn!}t'Q"g 另外 mysql wait_timeout 那个值设置大了没用 做10左右就可了 (大C说得)
"JY.jq(p8|!y4tl %Q0Y O1T&Quxh
wait_timeout是使用长久连线时 空闲进程的控制 只要数据库在连接状态 他是不进行干预的 不管是否有查询或更新操作 把这个设置小一点 再使用pconnect就比较理想了 ;) ,T2]0i+Y*IN)L"~R
X_vJC:~ timeout的时间,我的经验值是5-20,看你的SERVER的访问量了~~ (梦飞说的)9mGCS.?;E
V!zq#af
访问量越大 这个值就应该越小 否则留出的空闲进程太多 会占用不必要的内存
(f~2~ ]9Hr`.yH 在一个15分钟在线3000人的论坛上 设置为3比较合适 同时打开pconnect9x'uH1]:o
e`;iEA$u!w?
第三种;`Rp{Viz
数据库连接过多的错误,可能的原因分析及解决办法I;Gj qeA6J!] d(K
F0s{~3F#^v5QK QUOTE:
+D0Z*a*q ab1~ 分析 sl2i9O]
T(mu^gY2U5A]9r
系统不能连接数据库,关键要看两个数据: ~0l{%G}
1、数据库系统允许的最大可连接数max_connections。这个参数是可以设置的。如果不设置,默认是100。最大是16384。 6c(V5e&J5e?Xt
2、数据库当前的连接线程数threads_connected。这是动态变化的。 c,W H1V4esc
查看max_connections、max_connections的办法见后。
+T'J/k%i]u%a7V)ks
$c,kqG{U$LT-| 如果 threads_connected == max_connections 时,数据库系统就不能提供更多的连接数了,这时,如果程序还想新建连接线程,数据库系统就会拒绝,如果程序没做太多的错误处理,就会出现类似强坛的报错信息。
:@,LU#R[M
Wd3} R6S7` 因为创建和销毁数据库的连接,都会消耗系统的资源。而且为了避免在同一时间同时打开过多的连接线程,现在编程一般都使用所谓数据库连接池技术。
1I;G+hsar .Y!W1\H2D+W:b|
但数据库连接池技术,并不能避免程序错误导致连接资源消耗殆尽。
w e i!eN ]%A bj8yhP+{
这种情况通常发生在程序未能及时释放数据库连接资源或其他原因造成数据库连接资源不能释放,但强坛系统估计不会发生这种低级的编程错误。
%p.N8ETu8O,bN!gI 该错误的简便的检查办法是,在刷新强坛页面时,不断监视threads_connected的变化。如果max_connections足够大,而threads_connected值不断增加以至达到max_connections,那么,就应该检查程序了。当然,如果采用数据库连接池技术,threads_connected增长到数据库连接池的最大连接线程数时,就不再增长了。 R7[n,lo0Tk$qWu9I
*Xvfi.~4Kh`K A 从强坛出错的情况看,更大的可能性是数据库系统没能进行适当地配置。下面提出一点建议。供参考
&O6x.tf&gEL v }(L [iL.I:d7Z
让你们的工程师把MySQL的最大允许连接数从默认的100调成32000。这就不会老出现连接过多的问题了。 a+bf g$m+}
'[6OvX[ } R7h4C)R5]s
查看max_connections
*M1Xl$n3x5S!M f3j ~#|J0o-@[9F)q
进入MySQL,用命令:show variables
\.qd:R0T#i4[+I#aXa-H 查看数据库最大可连接数的变量值:max_connections Xa c#i4l:f,qo#IZ @
K+mb(d X)X(H
-LJ6I)FOmf$\
-\)P$q^j g e2~j 查看threads_connected 4mc)Plz2w5S,g!M lZ:X6O
f"{bHm!PeML/Q 进入MySQL,用命令:show status
9v8F*o|,v'Z?K-s 查看当前活动的连接线程变量值:threads_connected `u#y nOi v6F
RY!~ qC)O m\
i| z~F1]}&{fEUy%U 设置max_connections
s9A#m)q;J*n\ RWu%e }]
设置办法是在my.cnf文件中,添加下面的最后红色的一行: %X}D!W{ kZeX
1Y Y2Pp*c"L"|oEQMbc
--------------------------------------------------------------------------------
7LU S/a+rw vJ8br
*Ho3@"S%{M [mysqld] (Sh T x mB ~
port=3306 kM[,Gz4o0G!N.}
#socket=MySQL 5b0~#Lh[ ]
skip-locking Iz6d c3O SCi E
set-variable = key_buffer=16K
k Hp l;`0I8sR set-variable = max_allowed_packet=1M
4t?-h:@N'c set-variable = thread_stack=64K *w`.?7WW#s CY"^%Oy0te
set-variable = table_cache=4 fr#y;Irn3^;qQu
set-variable = sort_buffer=64K ?@q`m9~/zn%`
set-variable = net_buffer_length=2K 3B9s6o,~"[S8oK
set-variable = max_connections=32000
BM:} ^{:@0q/I$z
,wR Y6e!q/FO#^$u;X
#R H.nyI#x_\1D5Y --------------------------------------------------------------------------------
*~']!grz{!~ }S ;EZ*^n6Rf@G
修改完毕后,重启MySQL即可。当然,为了确保设置正确,应该查看一下max_connections。
Ee#`rt+|
&qEQKq}&P 注意: 0^+g)Zi x
1、虽然这里写的32000。但实际MySQL服务器允许的最大连接数16384;
R-a_ke 2、除max_connections外,上述其他配置应该根据你们系统自身需要进行配置,不必拘泥; +u]Yc5M3[ Q
3、添加了最大允许连接数,对系统消耗增加不大。 0o5{.K,S8S
4、如果你的mysql用的是my.ini作配置文件,设置类似,但设置的格式要稍作变通。
6d nfo+`xJ
分享到:
相关推荐
以下是一份详细的MySQL优化笔记,涵盖了多个方面: 一、查询优化 1. 使用索引:为经常用于搜索的列创建索引可以显著加快查询速度。B树和哈希索引是最常见的类型,适用于不同的查询场景。 2. 避免全表扫描:尽量使用...
MySQL 优化方法主要涵盖...总之,MySQL优化涉及多个层面,包括合理选择存储引擎、优化字段类型、建立合适索引以及编写高效的SQL语句。每个环节都对数据库性能有着直接影响,需要根据实际业务需求进行综合考虑和调整。
### MySQL性能优化与SQL优化方法技巧 #### 一、引言 MySQL作为一款广泛使用的开源关系型数据库管理系统,其性能优化对于确保应用系统的稳定性和高效运行至关重要。通过对MySQL的优化,不仅能提升系统的响应速度,还...
mysql慢可能是配置不对,阅读一下这个可能对你有帮助 ...对于Discuz!... 下面我们了解一下MySQL优化的一些基础,MySQL的优化我分为两个部分,一是服务器物理硬件的优化,二是MySQL自身(my.cnf)的优化。
MySQL数据库优化SQL篇PPT课件.pptx ...本PPT课件对MySQL数据库优化的重要知识点进行了详细的讲解,并提供了许多实用的优化技巧和方法。通过学习本PPT课件,可以提高数据库的性能和效率,提高开发效率和质量。
在IT行业中,对于资源有限的环境进行数据库优化是一项挑战性工作,尤其是在仅有2GB内存的情况下对MySQL数据库服务器进行优化。这种优化旨在提高性能的同时确保系统的稳定运行。 #### 标题解读:2G内存的MySQL数据库...
2. 优化硬件 3. 优化磁盘 4. 优化操作系统 5. 选择应用编程接口 6. 优化应用 7. 应该使用可移植的应用 8. 如果你需要更快的速度 9. 优化MYSQLD 10. 编译和安装MYSQL 11. 维护 12. 优化SQL 13. 不同SQL...
MySQL性能优化是一个涵盖广泛的主题,涉及多个层面,包括SQL语句优化、索引优化、数据库表结构优化、系统级配置优化以及服务器硬件优化。以下是对这些方面进行详细说明: 1. **SQL语句优化** - **慢查询日志**:...
2. **查询优化**:`00-Mysql优化.ppt`可能包含了关于如何编写高效的SQL查询的讲解。避免全表扫描,使用EXPLAIN分析查询计划,理解JOIN操作的性能影响,以及避免在WHERE子句中使用NOT IN或!=运算符,这些都是优化查询...
教程名称:大型门户网站核心技术-Mysql优化 课程目录:【】Mysql优化 资料【】Mysql优化01关键技术【】Mysql优化02表的设计【】Mysql优化03慢查询(一)【】Mysql优化04慢查询(二)【】Mysql优化05慢查询(三)【】Mysql...
MySQL性能优化金字塔法则为开发人员和数据库管理员提供了实用的指导和方法论,帮助他们更好地掌握MySQL性能优化的方法和技巧。通过阅读本书,大家将深入了解MySQL性能优化的各个方面,掌握实用的优化技巧,提高应用...
在"MySQL优化.rar"这个压缩包中,我们很显然会接触到关于MySQL数据库优化的详细内容,这包括但不限于查询优化、索引优化、存储引擎选择、架构设计等多个方面。 首先,查询优化是MySQL性能提升的关键步骤。通过对SQL...
以上这些是MySQL优化的基本步骤和方法,实际操作中需要结合具体情况灵活运用,并不断进行测试和调整,以达到最优的性能效果。提供的“mysql优化.ppt”可能包含更具体的指导和案例,而“tuning-primer.sh”可能是一个...
我的mysql优化日记 我的mysql优化日记 我的mysql优化日记 我的mysql优化日记
为什么要开发这个MySQL 优化工具(Why) “一键优化”功能,可以优化本地/远程需要优化的机器,将繁琐的优化工作“傻瓜”式操作 根据您的业务需求Step By Step优化的MySQL服务器参数,起到指引的作用,简化用户...
在进行MySQL优化时,我们需要对数据库进行深入分析,以便找到性能瓶颈并进行相应的调整。优化可以分为三个主要部分:优化概述、查询与索引优化分析以及配置优化。 首先,在优化概述部分,了解MySQL数据库常见瓶颈是...
mysql优化从以下几个方面介绍 mysql的架构 索引优化分析 查询截取分析 mysql锁机制 主从复制