一些mysql啟動參數的解釋和優化辦法。本站提示廣大學習愛好者:(一些mysql啟動參數的解釋和優化辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是一些mysql啟動參數的解釋和優化辦法正文
back_log值指出在MySQL臨時停滯答復新要求之前的短時光內若干個要求可以被存在客棧中。只要假如希冀在一個短時光內有許多銜接,你須要增長它,換句話說,這值對到來的TCP/IP銜接的偵聽隊列的年夜小。你的操作體系在這個隊列年夜小上有它本身的限制。 Unix listen(2)體系挪用的手冊頁應當有更多的細節。檢討你的OS文檔找出這個變量的最年夜值。試圖設定back_log高於你的操作體系的限制將是有效的。
connect_timeout
mysqld辦事器在用Bad handshake(蹩腳的握手)應對前正在期待一個銜接報文的秒數。
delayed_insert_timeout
一個INSERT DELAYED線程應當在終止之前期待INSERT語句的時光。
delayed_insert_limit
在拔出delayed_insert_limit行後,INSERT DELAYED處置器將檢討能否有任何SELECT語句未履行。假如如許,在持續前履行許可這些語句。
delayed_queue_size
應當為處置INSERT DELAYED分派多年夜一個隊列(以行數)。假如列隊滿了,任何停止INSERT DELAYED的客戶將期待直到隊列又有空間了。
flush_time
假如這被設置為非零值,那末每flush_time秒一切表將被封閉(以釋放資本和sync到磁盤)。
interactive_timeout
辦事器在打開它前在一個交互銜接上期待行為的秒數。一個交互的客戶被界說為對mysql_real_connect()應用CLIENT_INTERACTIVE選項的客戶。也可見wait_timeout。
join_buffer_size
用於全體聯絡(join)的緩沖區年夜小(不是用索引的聯絡)。緩沖區對2個表間的每一個全體聯絡分派一次緩沖區,當增長索引弗成能時,增長該值可獲得一個更快的全體聯絡。(平日獲得疾速聯絡的最好辦法是增長索引。)
key_buffer_size
索引塊是緩沖的而且被一切的線程同享。key_buffer_size是用於索引塊的緩沖區年夜小,增長它可獲得更利益理的索引(對一切讀和多重寫),到你能累贅得起那樣多。假如你使它太年夜,體系將開端換頁而且真的變慢了。記住既然MySQL不緩存讀取的數據,你將必需為OS文件體系緩存留下一些空間。為了在寫入多個行時獲得更多的速度,應用LOCK TABLES。見7.24LOCK TABLES/UNLOCK TABLES語法。
long_query_time
假如一個查詢所用時光跨越它(以秒計),Slow_queries記數器將被增長。
max_allowed_packet
一個包的最年夜尺寸。新聞緩沖區被初始化為net_buffer_length字節,然則可在須要時增長到max_allowed_packet個字節。缺省地,該值太小必能捕獲年夜的(能夠毛病)包。假如你正在應用年夜的BLOB列,你必需增長該值。它應當象你想要應用的最年夜BLOB的那末年夜。
max_connections
許可的同時客戶的數目。增長該值增長mysqld請求的文件描寫符的數目。見上面對文件描寫符限制的正文。見18.2.4 Too many connections毛病。
max_connect_errors
假如有多於該數目的從一台主機中止的銜接,這台主機阻攔進一步的銜接。你可用FLUSH HOSTS敕令疏浚一台主機。
max_delayed_threads
不要啟動多於的這個數字的線程來處置INSERT DELAYED語句。假如你試圖在一切INSERT DELAYED線程在用後向一張新表拔出數據,即將被拔出,就像DELAYED屬性沒被指定那樣。
max_join_size
能夠將要讀入多於max_join_size個記載的聯絡將前往一個毛病。假如你的用戶想要履行沒有一個WHERE子句、花很長時光而且前往百萬行的聯絡,設置它。
max_sort_length
在排序BLOB或TEXT值時應用的字節數(每一個值僅頭max_sort_length個字節被應用;其他的被疏忽)。
max_tmp_tables
(該選擇今朝還不做任何工作)。一個客戶能同時堅持翻開的暫時表的最年夜數目。
net_buffer_length
通訊緩沖區在查詢之間被重置到該年夜小。平日這不該該被轉變,然則假如你有很少的內存,你能將它設置為查詢希冀的年夜小。(即,客戶收回的SQL語句希冀的長度。假如語句跨越這個長度,緩沖區主動地被擴展,直到max_allowed_packet個字節。)
record_buffer
每一個停止一個次序掃描的線程為其掃描的每張表分派這個年夜小的一個緩沖區。假如你做許多次序掃描,你能夠想要增長該值。
sort_buffer
每一個須要停止排序的線程分派該年夜小的一個緩沖區。增長這值加快ORDER BY或GROUP BY操作。見18.5 MySQL在哪兒存儲暫時文件。
table_cache
為一切線程翻開表的數目。增長該值能增長mysqld請求的文件描寫符的數目。MySQL對每一個獨一翻開的表須要2個文件描寫符,見上面對文件描寫符限制的正文。關於表緩存若何任務的信息,見10.2.4 MySQL如何翻開和封閉表。
tmp_table_size
假如一張暫時表超越該年夜小,MySQL發生一個The table tbl_name is full情勢的毛病,假如你做許多高等GROUP BY查詢,增長tmp_table_size值。
thread_stack
每一個線程的棧年夜小。由crash-me測試檢測到的很多限制依附於該值。缺省隊普通的操作是足夠年夜了。見10.8 應用你本身的基准。
wait_timeout
辦事器在封閉它之前在一個銜接上期待行為的秒數。也可見interactive_timeout。
MySQL應用是很具伸縮性的算法,是以你平日能用很少的內存運轉或給MySQL更多的被存以獲得更好的機能。
假如你有許多內存和許多表而且有一個中等數目的客戶,想要最年夜的機能,你應當一些象如許的器械:
shell> safe_mysqld -O key_buffer=16M -O table_cache=128 \
-O sort_buffer=4M -O record_buffer=1M &
假如你有較少的內存和年夜量的銜接,應用如許一些器械:
shell> safe_mysqld -O key_buffer=512k -O sort_buffer=100k \
-O record_buffer=100k &
或乃至:
shell> safe_mysqld -O key_buffer=512k -O sort_buffer=16k \
-O table_cache=32 -O record_buffer=8k -O net_buffer=1K &
假如有許多銜接,“交流成績”能夠產生,除非mysqld曾經被設置裝備擺設每一個銜接應用很少的內存。固然假如你對一切銜接有足夠的內存,mysqld履行得更好。
留意,假如你轉變mysqld的一個選項,它現實上只對辦事器的誰人例子堅持。
為了明確一個參數變更的後果,如許做:
shell> mysqld -O key_buffer=32m --help
包管--help選項是最初一個;不然,敕令行上在它以後列出的任何選項的後果將不在反應在輸入中。
主要的MySQL啟動選項
back_log 假如須要年夜量新銜接,修正它。
thread_cache_size 假如須要年夜量新銜接,修正它。
key_buffer_size 索引頁池,可以設成很年夜。
bdb_cache_size BDB表應用的記載和鍵嗎高速緩存。
table_cache 假如有許多的表和並發銜接,修正它。
delay_key_write 假如須要緩存一切鍵碼寫入,設置它。
log_slow_queries 找出需花年夜量時光的查詢。
max_heap_table_size 用於GROUP BY
sort_buffer 用於ORDER BY和GROUP BY
myisam_sort_buffer_size 用於REPAIR TABLE
join_buffer_size 在停止無鍵嗎的聯絡時應用。
MySQL高速緩存(一切線程同享,一次性分派)
鍵碼緩存:key_buffer_size,默許8M。
表緩存:table_cache,默許64。
線程緩存:thread_cache_size,默許0。
主機名緩存:可在編譯時修正,默許128。
內存映照表:今朝僅用於緊縮表。
留意:MySQL沒有行高速緩存,而讓操作體系處置
MySQL緩存區變量(非同享,按需分派)
sort_buffer:ORDER BY/GROUP BY
record_buffer:掃描表。
join_buffer_size:無鍵聯絡
myisam_sort_buffer_size:REPAIR TABLE
net_buffer_length:關於讀SQL語句並緩存成果。
tmp_table_size:暫時成果的HEAP表年夜小。