l 通用類: key_buffer_size 含義 :用于索引塊的緩沖區大小,增加它可得到更好處理的索引(對所有讀和多重寫)。 影響 :對于 MyISAM 表的影響不是很大, MyISAM 會使用系統的緩存來存儲數據,所以大量使用 MyISAM 表的機器內存很快就會耗
l 通用類:
key_buffer_size
含義:用于索引塊的緩沖區大小,增加它可得到更好處理的索引(對所有讀和多重寫)。
影響:對于MyISAM表的影響不是很大,MyISAM會使用系統的緩存來存儲數據,所以大量使用MyISAM表的機器內存很快就會耗盡。但是,如果你將該值設得過大(例如,大于總內存的50%),系統將轉換為頁并變得極慢。MySQL依賴操作系統來執行數據讀取時的文件系統緩存,因此你必須為文件系統緩存留一些空間。
建議:先設置為內存的25%,觀察性能變化。
table_open_cache
含義:為所有線程打開表的數量。
影響:增加該值能增加mysqld要求的文件描述符的數量??梢员苊忸l繁的打開數據表產生的開銷。打開一個表的開銷可能很大,因為MyISAM會把MYI文件的文件頭標識為正在使用,所以在內存中做這個操作比較好。,因為每個線程都需要打開表,連接數越大這個值要越大。
建議:我們有300多個表的話,大約2048差不多了。
thread_cache_size
含義:緩存可重用的線程數。
影響:這個參數設置線程的緩存,線程的創建和銷毀的開銷可能很大,因為每個線程的連接/斷開都需要。如果應用程序中有大量的跳躍并發連接并且線程較多的話,就要加大它的值。它的目的是在通常的操作中無需創建新線程。
建議:通常至少設置為16。
query_cache_size
含義:指定MySQL查詢結果緩沖區的大小。
影響:如果應用程序有大量讀,而且沒有應用程序級別的緩存,那么這很有用。不過不要設置太大,因為維護它也需要不少開銷,這會導致MySQL變慢。
建議:通常設置為 32-512Mb。設置完之后最好是跟蹤一段時間,查看是否運行良好。在一定的負載壓力下,如果緩存命中率太低了,就啟用它,如果命中率已經不錯了,就可以把他調小一點。對于2G的內存,先從16M開始,一倍一倍的增加,直到命中率比較穩定為止。
query_cache_limit
含義:緩存單條SQL的結果集上限。默認4KB。
影響:當一條SQL返回的結果集大于這個限制的時候,將不被MySQL緩存。
建議:設置為1M即可。
query_cache_min_res_unit
含義:緩存為每個數據集存放的最小內存大小,默認4KB。
影響:如果太小的話,將會導致MySQL經常訪問內存塊去獲取信息,如果設置太大則浪費內存。
建議:如果SQL返回的結果集都很小的話,參數也可以調小一點,避免內存浪費。如果結果集大部分都大于4KB的話,則考慮加大參數。
back_log
含義:在MySQL的連接請求等待隊列中允許存放的最大連接請求數。系統默認值為50。
影響:如果系統在一個短時間內有很多連接,則需要增大該參數的值,該參數值指定到來的TCP/IP連接的偵聽隊列的大小。不同的操作系統在這個隊列大小上有它自 己的限制。試圖設定back_log高于你的操作系統的限制將是無效的。
建議:對于Linux系統推薦設置為小于512的整數。
sort_buffer_size
含義:為每個需要進行排序的線程分配該大小的一個緩沖區。
影響:增加這值加速ORDER BY或GROUP BY操作。不過該參數對應的分配內存是每連接獨占的,如果有100個連接,那么實際分配的總共排序緩沖區大小為100×sort_buffer_size。
建議:一般設置為2M觀察變化再調整。
read_buffer_size
含義:順序查詢操作所能使用的緩沖區大小。
影響:和sort_buffer_size一樣,該參數對應的分配內存也是每連接獨享。
建議:一般設置為2M再觀察變化。
read_rnd_buffer_size
含義:隨機查詢操作所能使用的緩沖區大小。
影響:每個線程獨享。
建議:一般設置為2M再觀察變化。
query_cache_type
含義:查詢緩沖類型。
影響:為1是使用緩沖,2是除非使用SQL_CACHE才進行緩沖。對于緩沖而言,數據并不是實時的,有一定的延時。但是對于實時性要求不高的查詢短時間內多次執行,是不劃算的,這個時候就需要緩存。并且緩存中是區分空格和大小寫的,如果大小寫不一致和空格不一致,也會認為是不同的SQL,不會利用到緩存。雖然不設置查詢緩沖,有時可能帶來性能上的損失,但有一些SQL語句需要實時地查詢數據,或并不經常使用(可能一天就執行一兩次),這樣就需要把緩沖關了,可以采用臨時關閉的方法SELECT SQL_NO_CACHE。
建議:一般設置為1。
l MyISAM類:
myisam_sort_buffer_size
MyISAM表發生變化時重新排序所需的緩沖。一般64M足矣。
l InnoDB類:
innodb_buffer_pool_size
對InnoDB的效率影響很大。因為InnoDB會把盡可能多的數據和索引緩存在緩沖區,這個類似與Oracle的Buffer Pool:如果只采用InnoDB,可以把這個參數調大一點,大約內存的70%左右。
當然,如果數據量不會暴增并且不是特別大,這個參數還是不要太大了,浪費空間。
innodb_additional_pool_size
對數據庫性能影響不是很大,至少內存足夠的機器上不會有什么影響。
innodb_log_file_size
在高寫入負載尤其是數據集很大的時候,這個值非常重要,值越高性能越好,不過可能會增加數據恢復的時候。我設置為128M。
innodb_log_buffer_size
默認的設置在中等強度的寫入負載及短事物處理時,性能還可以。但是存在大量更新操作或者負載較大時,就要慢慢增加這個參數的值了。不過不要設置太大,會浪費內存。它每秒都會刷新一次,所以不用設置超過1s所需的內存空間,16M足夠了。
innodb_flush_logs_at_trx_commit
這個參數對InnoDB及其重要,設置不好的話會比MyISAM慢1000倍!默認是1,這就是說每次更新事務都會被提交到磁盤,這是非常消耗資源的,硬盤和內存的速度是明顯數量級的差距。
設置為0是最快的,但是很不安全,全部在緩存中,一掉電全沒了。
設置為1很不好,每次都去寫硬盤,沒有必要。
設置為2是比較好的,日志不刷新到磁盤上,只刷新到操作系統緩存上。然后每秒鐘寫緩存。相對于現在數據庫每秒4K條左右的SQL,性能已經可以提高不少。
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com