程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> mysql 優化配置參數 my.ini配置優化

mysql 優化配置參數 my.ini配置優化

編輯:關於MYSQL數據庫

mysql優化配置參數MySQL安裝好需要優化配置一下,打開c:\Windows\my.ini文件 Ws` Nv
第一種
#@ h L$[{u/R,hI QUOTE:
+Z5ztB+Ae(T*] #This File was made using the WinMySQLAdmin 1.4 Tool$w+L(hw-Ob7n
#2004-2-23 16:28:14
4CEt&Xy*_$B %|sl0} px
#Uncomment or Add only the keys that you know how works.
"e;s4@"HrW)] #Read the MySQL Manual for instructions
kx0?!A"~\:s t 'eC3\/i-WZ_
[MySQLd] Q5mp+Yx:h"A
basedir=D:/MySQL/QOZph$]{E
#bind-address=210.5.*.*
@Hq"K { datadir=D:/MySQL/data
Oz-ILqLC #language=D:/MySQL/share/your language directory
Q6Q3t[8}jr-j$q_ #slow query log#=0_3k$xeT6B
#tmpdir#=
a)Id&H7]lX #port=3306(O;S d&b}D/Qm1Z
set-variable    = max_connections=1500
iwg?T8v8^%R skip-locking
8tD9D0S%bPi #skip-networking{ I [.cabV
set-variable        = key_buffer=384Mh M*wtWeOr)s
set-variable        = max_allowed_packet=1M
'[X EU RRs set-variable        = table_cache=5123\/z@#p4D5u&Cl+i+R
set-variable        = sort_buffer=2M
:t%yBz$?)D+] set-variable        = record_buffer=2M
B p yqCw4Rf*jbTn set-variable        = thread_cache=8DuR)Ihx1`H
# Try number of CPU's*2 for thread_concurrency2X1\gpUH
set-variable        = thread_concurrency=8
/Xmeny set-variable        = myisam_sort_buffer_size=64MU*ONFvl
#set-variable        = connect_timeout=5
;v(X.J]#FY #set-variable        = wait_timeout=5
*Q0M x R@ T server-id        = 1
T5^;_W5Q_dV [isamchk] c$v3\V"R
set-variable        = key_buffer=128Md l;{5Y#rq%]&m'f
set-variable        = sort_buffer=128M0vyo FmR
set-variable        = read_buffer=2M
^Kqp.a,j6h w-^ljt set-variable        = write_buffer=2M
6u4MMhc)_+F#a F{J"Ll\jG J
[myisamchk],j$D"U0me tL
set-variable        = key_buffer=128MS)f!x7S.j;]/E#|6[WAlv
set-variable        = sort_buffer=128M"o!\"uCh
set-variable        = read_buffer=2M
C|rX(O set-variable        = write_buffer=2M
0XX:N7go%[3}9y F [WinMySQLadmin]2?u3A/MT
Server=D:/mysql/bin/MySQLd-nt.exe
;[#n{b_q\R
i5Dkn%R1?'x3M     這個方案,整體夠用了,但是在pconnect和最大連接數上,需要研究max_connections沒必要那麼大,我個人認為幾百就夠,否則給服務器加大了不少負擔,經常會當機連接超時的設置也要根據實際情況調整,大家可以自由調整,然後觀察效果如何。{v!H8pi*n Fx
X!U5vGp
第二種
3M@%Ql%m6N QUOTE:+j"j6[8Uq#Wc
  7、MySQL 的優化(/etc/my.cnf)&@9\E2](}T(u%u @|
        1)確認在“[MySQLd]”部分加入了“skip-innodb”和“skip-bdb”參數;j|"QE E#hF2b@B
        2)確認在“[MySQLd]”部分加入了“skip-name-resolve”和“skip-locking”參數;K#l0\6NySz
        3)如果不需要的話,可以將二進制日志(binlog)停掉,方法是將“log-bin”注釋掉;T ?h$ubAn
        4)在內存允許的情況下,對一些參數進行重新配置,目標在於將大部分操作集中於內存中,盡量不進行磁盤操作,對於我的 MYSQL 服務器我是如下修改的,基於 2G 內存情況:-ee*T\v2e'S\'i%_i;Qh$iy'jU         [MySQLd]!^ bQbM0mX,L
        set-variable    = key_buffer=512M
#um%WO+a}:t         set-variable    = max_allowed_packet=4M j%T5?_&p`/W
        set-variable    = table_cache=1024'Gtbf yT)|K&i
        set-variable    = thread_cache=64.G J V!pQx/J5H"| sj
        set-variable    = join_buffer_size=32MFuZ Fa7F
        set-variable    = sort_buffer=32M3PLUt(xbj)@
        set-variable    = record_buffer=32M
:@%@6t.eO3zR c I4x&Q         set-variable    = max_connections=512
O"?_N1rA         set-variable    = wait_timeout=1209tkxp,ko8Qf(h
        set-variable    = interactive_timeout=120+n g`G,bZ*w
        set-variable    = max_connect_errors=30000
u"]-ara8l#I*Y#[         set-variable    = long_query_time=1t:P4Ga-n%[Q#_c!D!p
        set-variable    = max_heap_table_size=256M
7z n;Z2z;^         set-variable    = tmp_table_size=128M,jNB:b'eOU
        set-variable    = thread_concurrency=8LL wx!cg}
        set-variable    = myisam_sort_buffer_size=128M
'lcg4yo$U'hK
BY8x3HW*K         你可以根據“show status”命令返回的狀態進行微調。我主要注意以下變量的數值,越小越好,最好為零:)*D ?#o7c{4U$ci
        Created_tmp_disk_tables
[6i2z`&S2G         Created_tmp_tablesVQ_E1}_$pV oK Ho
        Created_tmp_files
.^ b7vj(K|YA%[8K         Slow_querIEs1S+Nc ~I9~-e0~M
另外 MySQL wait_timeout 那個值設置大了沒用 做10左右就可了 (大C說得)
)[-a]/{$d'b
.or fJx|:i7u wait_timeout是使用長久連線時 空閒進程的控制 只要數據庫在連接狀態 他是不進行干預的 不管是否有查詢或更新操作 把這個設置小一點 再使用pconnect就比較理想了 ;) nmK.H3b!p"_ D!f8k!~(Z,F timeout的時間,我的經驗值是5-20,看你的SERVER的訪問量了~~ (夢飛說的)
o.b(oxH"}l
[O2@-f/S9t m 訪問量越大 這個值就應該越小 否則留出的空閒進程太多 會占用不必要的內存)A)i XwO Qh \/`5Vt
在一個15分鐘在線3000人的論壇上 設置為3比較合適 同時打開pconnect
BR4U+^9Z'V 8x0y bB [URd
第三種;I*O#z0k5lsI
數據庫連接過多的錯誤,可能的原因分析及解決辦法
*B(i a W6k6LLd
F8y Qs{ QUOTE:
-XKO^,V%vI |d 分析 9[k^1O3|7i
)@y#\R?,am C f't p
系統不能連接數據庫,關鍵要看兩個數據: )hI"J*k `s:c'V(o"\
1、數據庫系統允許的最大可連接數max_connections。這個參數是可以設置的。如果不設置,默認是100。最大是16384。
%~]Q"_ S/n g4Qx_ 2、數據庫當前的連接線程數threads_connected。這是動態變化的。 ,e"gd,dd'@*}u
查看max_connections、max_connections的辦法見後。
2b Wu!Mx F n }5|!gE}x"B:i
    如果 threads_connected == max_connections 時,數據庫系統就不能提供更多的連接數了,這時,如果程序還想新建連接線程,數據庫系統就會拒絕,如果程序沒做太多的錯誤處理,就會出現類似強壇的報錯信息。 r\}3bd8md TL#Q7G       因為創建和銷毀數據庫的連接,都會消耗系統的資源。而且為了避免在同一時間同時打開過多的連接線程,現在編程一般都使用所謂數據庫連接池技術。
!BZ}'l{ j!u /I%C/]WV%[
但數據庫連接池技術,並不能避免程序錯誤導致連接資源消耗殆盡。
k5q*}$z o$z7L0s [GelU8S
      這種情況通常發生在程序未能及時釋放數據庫連接資源或其他原因造成數據庫連接資源不能釋放,但強壇系統估計不會發生這種低級的編程錯誤。 _{%}%E*A]r `
      該錯誤的簡便的檢查辦法是,在刷新強壇頁面時,不斷監視threads_connected的變化。如果max_connections足夠大,而threads_connected值不斷增加以至達到max_connections,那麼,就應該檢查程序了。當然,如果采用數據庫連接池技術,threads_connected增長到數據庫連接池的最大連接線程數時,就不再增長了。
fw-kSA?l,SaR\x
xS v bd;?s(a&Et 從強壇出錯的情況看,更大的可能性是數據庫系統沒能進行適當地配置。下面提出一點建議。供參考 1j7q0k&h/\m}ft
;x_$B1dJUw#L8MT
讓你們的工程師把MySQL的最大允許連接數從默認的100調成32000。這就不會老出現連接過多的問題了。 :P5J |*m7t3v/y
V5u s0?O!E?(J9a
1O~KeB
查看max_connections
*g"F$R-s z/D4X
klB$Sg9a)x {"J 進入MySQL,用命令:show variables
abo0{?ik 查看數據庫最大可連接數的變量值:max_connections W)iI O9xm%Y,Fe*C e
)P9Z l+|!AL0TJS/J5Xp"QR(TH
x U*R EI 查看threads_connected
3rC5HeeN{8Ds@
W$W!CL/h}J 進入MySQL,用命令:show status e9Km5Y8Jo,q
查看當前活動的連接線程變量值:threads_connected
9IN m#E$G
VoJFK;A{ P!?CA+]-wL.X8G
設置max_connections
^3?(H(rE Z3N3^
X0Q0g9`ugB 設置辦法是在my.cnf文件中,添加下面的最後紅色的一行:
(?7jE4i`1@c
zG4b8v*z -------------------------------------------------------------------------------- zg-M3aS_:MJQi%U^r~.M [MySQLd] /s'|x%dd
port=3306
$\7]T \(Q.Rx [ ~ r8v_ #socket=MySQL c6o@9ryi
skip-locking 4QyLs]
set-variable = key_buffer=16K
!I0QQ]F`-W;U)q set-variable = max_allowed_packet=1M V)svKQ,?
set-variable = thread_stack=64K
-DzNSb9x5^ set-variable = table_cache=4 n(x6d^d
set-variable = sort_buffer=64K \fE&And
set-variable = net_buffer_length=2K ?4T&F"vs} uK
set-variable = max_connections=32000 8_d9`0m(Xw}1t;k+F^
4US$YG~%{J c/{H%x?w$E+~7};r -------------------------------------------------------------------------------- R e4\*woQ
g{4gUl3d
修改完畢後,重啟MySQL即可。當然,為了確保設置正確,應該查看一下max_connections。 RV x*B"JOV[
]!t(]7\&oC)r
注意: d b \h!o,O"?^A
1、雖然這裡寫的32000。但實際MySQL服務器允許的最大連接數16384;
6E\e)l#H+O M 2、除max_connections外,上述其他配置應該根據你們系統自身需要進行配置,不必拘泥;
T8u2b*Bo;a 3、添加了最大允許連接數,對系統消耗增加不大。 ;w6da.k6}~Sap
4、如果你的MySQL用的是my.ini作配置文件,設置類似,但設置的格式要稍作變通。
"WL4|8Q#GA 可見,MySQL的優化,是多樣化,且根據環境不同,必須靈活調整的,大家不可生搬硬套,自己慢慢體會吧

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved