Linux下MySQL安裝相關參數詳述 |
發(fā)布時間: 2012/8/9 17:48:47 |
skip-locking set-variable=interactive_timeout=7200 避免MySQL的外部鎖定,減少出錯幾率增強穩(wěn)定性。 key_buffer_size: 索引塊是緩沖的并且被所有的線程共享。key_buffer_size是用于索引塊的緩沖區(qū)大小,增加它可得到更好處理的索引(對所有讀和多重寫),到你能負擔得起那樣多。如果你使它太大,系統(tǒng)將開始換頁并且真的變慢了。默認數值是8388600(8M),我的MySQL主機有2GB內存,所以我把它改為402649088(400MB)。 max_allowed_packet read_buffer_size=6M 讀查詢操作所能使用的緩沖區(qū)大小,該參數對應的分配內存是每連接獨占!如果有100個連接,那么實際分配的總共排序緩沖區(qū)大小為100 × 6 = 600MB。所以,對于內存在4GB左右的服務器推薦設置為6-8M。 myisam_sort_buffer_size query_cache_size 指定MySQL查詢緩沖區(qū)的大小。可以通過在MySQL控制臺執(zhí)行以下命令觀察: # > SHOW VARIABLES LIKE '%query_cache%'; # > SHOW STATUS LIKE 'Qcache%'; # 如果Qcache_lowmem_prunes的值非常大,則表明經常出現(xiàn)緩沖不夠的情況; 如果Qcache_hits的值非常大,則表明查詢緩沖使用非常頻繁,如果該值較小反而會影響效率,那么可以考慮不用查詢緩沖;Qcache_free_blocks,如果該值非常大,則表明緩沖區(qū)中碎片很多。 thread_concurrency 該參數取值為服務器邏輯CPU數量×2,在本例中,服務器有2顆物理CPU,而每顆物理CPU又支持H.T超線程,所以實際取值為4 × 2 = 8 back_log: 要求 MySQL 能有的連接數量。當主要MySQL線程在一個很短時間內得到非常多的連接請求,這就起作用,然后主線程花些時間(盡管很短)檢查連接并且啟動一個新線程。 back_log值指出在MySQL暫時停止回答新請求之前的短時間內多少個請求可以被存在堆棧中。只有如果期望在一個短時間內有很多連接,你需要增加它,換句話說,這值對到來的TCP/IP連接的偵聽隊列的大小。你的操作系統(tǒng)在這個隊列大小上有它自己的限制。 試圖設定back_log高于你的操作系統(tǒng)的限制將是無效的。當你觀察你的主機進程列表,發(fā)現(xiàn)大量 264084 | unauthenticated user | xxx.xxx.xxx.xxx | NULL | Connect | NULL | login | NULL 的待連接進程時,就要加大 back_log 的值了。默認數值是50,我把它改為500。 interactive_timeout 服務器在關閉它前在一個交互連接上等待行動的秒數。一個交互的客戶被定義為對 mysql_real_connect()使用 CLIENT_INTERACTIVE 選項的客戶。 默認數值是28800,我把它改為7200。 wait_timeout 服務器在關閉它之前在一個連接上等待行動的秒數。 默認數值是28800,我把它改為7200。 key_buffer_size 索引塊是緩沖的并且被所有的線程共享。key_buffer_size是用于索引塊的緩沖區(qū)大小,增加它可得到更好處理的索引(對所有讀和多重寫),到你能負擔得起那樣多。如果你使它太大,系統(tǒng)將開始換頁并且真的變慢了。默認數值是8388600(8M),我的MySQL主機有2GB內存,所以我把它改為402649088(400MB)。 max_connections: 允許的同時客戶的數量。增加該值增加 mysqld 要求的文件描述符的數量。這個數字應該增加,否則,你將經?吹 Too many connections 錯誤。 默認數值是100,我把它改為1024 。 record_buffer: 每個進行一個順序掃描的線程為其掃描的每張表分配這個大小的一個緩沖區(qū)。如果你做很多順序掃描,你可能想要增加該值。默認數值是131072(128K),我把它改為16773120 (16M) sort_buffer: 每個需要進行排序的線程分配該大小的一個緩沖區(qū)。增加這值加速ORDER BY或GROUP BY操作。默認數值是2097144(2M),我把它改為 16777208 (16M)。 table_cache: 為所有線程打開表的數量。增加該值能增加mysqld要求的文件描述符的數量。MySQL對每個唯一打開的表需要2個文件描述符。默認數值是64,我把它改為512。 thread_cache_size: 可以復用的保存在中的線程的數量。如果有,新的線程從緩存中取得,當斷開連接的時候如果有空間,客戶的線置在緩存中。如果有很多新的線程,為了提高性能可以這個變量值。通過比較 Connections 和 Threads_created 狀態(tài)的變量,可以看到這個變量的作用。我把它設置為 80。 max_connect_errors 允許的中斷連接請求的數量。當超出max_connect_errors規(guī)定的連接請求時,mysqld將認為某處出錯(例如,某人正試圖插入),并屏蔽主機的進一步連接請求,直至執(zhí)行了mysqladmin flush-hosts命令,或發(fā)出了FLUSH HOSTS語句為止。 log_slow_queries 開啟慢查詢日志( slow query log ) 慢查詢日志對于跟蹤有問題的查詢非常有用。它記錄所有查過long_query_time的查詢,如果需要,還可以記錄不使用索引的記錄。 join_buffer_size 聯(lián)合查詢操作所能使用的緩沖區(qū)大小,和sort_buffer_size一樣,該參數對應的分配內存也是每連接獨享! SHOW STATUS LIKE 'Qcache%'; Qcache queries in cache 12737 表明目前緩存的條數 Qcache inserts 20649006 Qcache hits 79060095 看來重復查詢率還挺高的 Qcache lowmem prunes 617913 有這么多次出現(xiàn)緩存過低的情況 Qcache not cached 189896 Qcache free memory 18573912 目前剩余緩存空間 Qcache free blocks 5328 這個數字似乎有點大 碎片不少 Qcache total blocks 30953 本文出自:億恩科技【www.allwellnessguide.com】 |