含義:用于索引塊的緩沖區(qū)大小,增加它可得到更好處理的索引(對所有讀和多重寫)。
影響:對于MyISAM表的影響不是很大,MyISAM會使用系統(tǒng)的緩存來存儲數(shù)據(jù),所以大量使用MyISAM表的機器內(nèi)存很快就會耗盡。但是,如果你將該值設(shè)得過大(例如,大于總內(nèi)存的50%),系統(tǒng)將轉(zhuǎn)換為頁并變得極慢。MySQL依賴操作系統(tǒng)來執(zhí)行數(shù)據(jù)讀取時的文件系統(tǒng)緩存,因此你必須為文件系統(tǒng)緩存留一些空間。
建議:先設(shè)置為內(nèi)存的25%,觀察性能變化。
table_open_cache
含義:為所有線程打開表的數(shù)量。
影響:增加該值能增加mysqld要求的文件描述符的數(shù)量。可以避免頻繁的打開數(shù)據(jù)表產(chǎn)生的開銷。打開一個表的開銷可能很大,因為MyISAM會把MYI文件的文件頭標(biāo)識為正在使用,所以在內(nèi)存中做這個操作比較好。,因為每個線程都需要打開表,連接數(shù)越大這個值要越大。
建議:我們有300多個表的話,大約2048差不多了。
thread_cache_size
含義:緩存可重用的線程數(shù)。
影響:這個參數(shù)設(shè)置線程的緩存,線程的創(chuàng)建和銷毀的開銷可能很大,因為每個線程的連接/斷開都需要。如果應(yīng)用程序中有大量的跳躍并發(fā)連接并且線程較多的話,就要加大它的值。它的目的是在通常的操作中無需創(chuàng)建新線程。
建議:通常至少設(shè)置為16。
query_cache_size
含義:指定MySQL查詢結(jié)果緩沖區(qū)的大小。
影響:如果應(yīng)用程序有大量讀,而且沒有應(yīng)用程序級別的緩存,那么這很有用。不過不要設(shè)置太大,因為維護它也需要不少開銷,這會導(dǎo)致MySQL變慢。
建議:通常設(shè)置為
query_cache_limit
含義:緩存單條SQL的結(jié)果集上限。默認4KB。
影響:當(dāng)一條SQL返回的結(jié)果集大于這個限制的時候,將不被MySQL緩存。
建議:設(shè)置為1M即可。
query_cache_min_res_unit
含義:緩存為每個數(shù)據(jù)集存放的最小內(nèi)存大小,默認4KB。
影響:如果太小的話,將會導(dǎo)致MySQL經(jīng)常訪問內(nèi)存塊去獲取信息,如果設(shè)置太大則浪費內(nèi)存。
建議:如果SQL返回的結(jié)果集都很小的話,參數(shù)也可以調(diào)小一點,避免內(nèi)存浪費。如果結(jié)果集大部分都大于4KB的話,則考慮加大參數(shù)。
back_log
含義:在MySQL的連接請求等待隊列中允許存放的最大連接請求數(shù)。系統(tǒng)默認值為50。
影響:如果系統(tǒng)在一個短時間內(nèi)有很多連接,則需要增大該參數(shù)的值,該參數(shù)值指定到來的TCP/IP連接的偵聽隊列的大小。不同的操作系統(tǒng)在這個隊列大小上有它自
建議:對于Linux系統(tǒng)推薦設(shè)置為小于512的整數(shù)。
sort_buffer_size
含義:為每個需要進行排序的線程分配該大小的一個緩沖區(qū)。
影響:增加這值加速ORDER
建議:一般設(shè)置為2M觀察變化再調(diào)整。
read_buffer_size
含義:順序查詢操作所能使用的緩沖區(qū)大小。
影響:和sort_buffer_size一樣,該參數(shù)對應(yīng)的分配內(nèi)存也是每連接獨享。
建議:一般設(shè)置為2M再觀察變化。
read_rnd_buffer_size
含義:隨機查詢操作所能使用的緩沖區(qū)大小。
影響:每個線程獨享。
建議:一般設(shè)置為2M再觀察變化。
query_cache_type
含義:查詢緩沖類型。
影響:為1是使用緩沖,2是除非使用SQL_CACHE才進行緩沖。對于緩沖而言,數(shù)據(jù)并不是實時的,有一定的延時。但是對于實時性要求不高的查詢短時間內(nèi)多次執(zhí)行,是不劃算的,這個時候就需要緩存。并且緩存中是區(qū)分空格和大小寫的,如果大小寫不一致和空格不一致,也會認為是不同的SQL,不會利用到緩存。雖然不設(shè)置查詢緩沖,有時可能帶來性能上的損失,但有一些SQL語句需要實時地查詢數(shù)據(jù),或并不經(jīng)常使用(可能一天就執(zhí)行一兩次),這樣就需要把緩沖關(guān)了,可以采用臨時關(guān)閉的方法SELECT
建議:一般設(shè)置為1。
l
myisam_sort_buffer_size
MyISAM表發(fā)生變化時重新排序所需的緩沖。一般64M足矣。
l
innodb_buffer_pool_size
對InnoDB的效率影響很大。因為InnoDB會把盡可能多的數(shù)據(jù)和索引緩存在緩沖區(qū),這個類似與Oracle的Buffer
當(dāng)然,如果數(shù)據(jù)量不會暴增并且不是特別大,這個參數(shù)還是不要太大了,浪費空間。
innodb_additional_pool_size
對數(shù)據(jù)庫性能影響不是很大,至少內(nèi)存足夠的機器上不會有什么影響。
innodb_log_file_size
在高寫入負載尤其是數(shù)據(jù)集很大的時候,這個值非常重要,值越高性能越好,不過可能會增加數(shù)據(jù)恢復(fù)的時候。我設(shè)置為128M。
innodb_log_buffer_size
默認的設(shè)置在中等強度的寫入負載及短事物處理時,性能還可以。但是存在大量更新操作或者負載較大時,就要慢慢增加這個參數(shù)的值了。不過不要設(shè)置太大,會浪費內(nèi)存。它每秒都會刷新一次,所以不用設(shè)置超過1s所需的內(nèi)存空間,16M足夠了。
innodb_flush_logs_at_trx_commit
這個參數(shù)對InnoDB及其重要,設(shè)置不好的話會比MyISAM慢1000倍!默認是1,這就是說每次更新事務(wù)都會被提交到磁盤,這是非常消耗資源的,硬盤和內(nèi)存的速度是明顯數(shù)量級的差距。
設(shè)置為0是最快的,但是很不安全,全部在緩存中,一掉電全沒了。
設(shè)置為1很不好,每次都去寫硬盤,沒有必要。
設(shè)置為2是比較好的,日志不刷新到磁盤上,只刷新到操作系統(tǒng)緩存上。然后每秒鐘寫緩存。相對于現(xiàn)在數(shù)據(jù)庫每秒4K條左右的SQL,性能已經(jīng)可以提高不少。
下一篇 yii框架的部署方法