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