linux下mysql安裝相關參數的解釋說明

skip-locking
key_buffer = 384M
max_allowed_packet = 3M
read_buffer_size = 20M
myisam_sort_buffer_size = 128M
query_cache_size = 64M

thread_concurrency = 8

set-variable=back_log=1024
set-variable=interactive_timeout=7200
set-variable=wait_timeout=7200
set-variable=key_buffer_size=16773120
set-variable=max_connections=2048
set-variable=record_buffer=16773120
set-variable=sort_buffer=16773120
set-variable=table_cache=512
set-variable=thread_cache_size=80
set-variable=max_connect_errors=2048

set-variable=log_slow_queries=ON
set-variable=delay_key_write=ON
set-variable=join_buffer_size=16773120


skip-locking
避免MySQL的外部鎖定,減少出錯機率增強穩定性。
key_buffer_size:
索引塊是緩衝的並且被所有的線程共享。key_buffer_size是用於索引塊的緩衝區大小,增加它可得到更好處理的索引(對所有讀和多重寫),到你能負擔得起那樣多。如果你使它太大,系統將開始換頁並且真的變慢了。默認數值是8388600(8M),我的MySQL主機有2GB內存,所以我把它改爲402649088(400MB)。
max_allowed_packet

read_buffer_size=6M
讀查詢操作所能使用的緩衝區大小,該參數對應的分配內存是每連接獨佔!如果有100個連接,那麼實際分配的總共排序緩衝區大小爲100 × 6 = 600MB。所以,對於內存在4GB左右的服務器推薦設置爲6-8M。
myisam_sort_buffer_size

query_cache_size
指定MySQL查詢緩衝區的大小。可以通過在MySQL控制檯執行以下命令觀察:
# > SHOW VARIABLES LIKE '%query_cache%';
# > SHOW STATUS LIKE 'Qcache%';
# 如果Qcache_lowmem_prunes的值非常大,則表明經常出現緩衝不夠的情況;
如果Qcache_hits的值非常大,則表明查詢緩衝使用非常頻繁,如果該值較小反而會影響效率,那麼可以考慮不用查詢緩衝;Qcache_free_blocks,如果該值非常大,則表明緩衝區中碎片很多。


thread_concurrency
該參數取值爲服務器邏輯CPU數量×2,在本例中,服務器有2顆物理CPU,而每顆物理CPU又支持H.T超線程,所以實際取值爲4 × 2 = 8

back_log:
要求 MySQL 能有的連接數量。當主要MySQL線程在一個很短時間內得到非常多的連接請求,這就起作用,然後主線程花些時間(儘管很短)檢查連接並且啓動一個新線程。 back_log值指出在MySQL暫時停止回答新請求之前的短時間內多少個請求可以被存在堆棧中。只有如果期望在一個短時間內有很多連接,你需要增加它,換句話說,這值對到來的TCP/IP連接的偵聽隊列的大小。你的操作系統在這個隊列大小上有它自己的限制。 試圖設定back_log高於你的操作系統的限制將是無效的。當你觀察你的主機進程列表,發現大量 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是用於索引塊的緩衝區大小,增加它可得到更好處理的索引(對所有讀和多重寫),到你能負擔得起那樣多。如果你使它太大,系統將開始換頁並且真的變慢了。默認數值是8388600(8M),我的MySQL主機有2GB內存,所以我把它改爲402649088(400MB)。
max_connections:
允許的同時客戶的數量。增加該值增加 mysqld 要求的文件描述符的數量。這個數字應該增加,否則,你將經常看到 Too many connections 錯誤。 默認數值是100,我把它改爲1024 。
record_buffer:
每個進行一個順序掃描的線程爲其掃描的每張表分配這個大小的一個緩衝區。如果你做很多順序掃描,你可能想要增加該值。默認數值是131072(128K),我把它改爲16773120 (16M)
sort_buffer:
每個需要進行排序的線程分配該大小的一個緩衝區。增加這值加速ORDER BY或GROUP BY操作。默認數值是2097144(2M),我把它改爲 16777208 (16M)。
table_cache:
爲所有線程打開表的數量。增加該值能增加mysqld要求的文件描述符的數量。MySQL對每個唯一打開的表需要2個文件描述符。默認數值是64,我把它改爲512。
thread_cache_size:
可以複用的保存在中的線程的數量。如果有,新的線程從緩存中取得,當斷開連接的時候如果有空間,客戶的線置在緩存中。如果有很多新的線程,爲了提高性能可以這個變量值。通過比較 Connections 和 Threads_created 狀態的變量,可以看到這個變量的作用。我把它設置爲 80。
max_connect_errors
允許的中斷連接請求的數量。當超出max_connect_errors規定的連接請求時,mysqld將認爲某處出錯(例如,某人正試圖插入),並屏蔽主機的進一步連接請求,直至執行了mysqladmin flush-hosts命令,或發出了FLUSH HOSTS語句爲止。

log_slow_queries
開啓慢查詢日誌( slow query log ) 慢查詢日誌對於跟蹤有問題的查詢非常有用。它記錄所有查過long_query_time的查詢,如果需要,還可以記錄不使用索引的記錄。


join_buffer_size
聯合查詢操作所能使用的緩衝區大小,和sort_buffer_size一樣,該參數對應的分配內存也是每連接獨享!

SHOW STATUS LIKE 'Qcache%';

Qcache queries in cache 12737 表明目前緩存的條數
Qcache inserts 20649006
Qcache hits 79060095  看來重複查詢率還挺高的
Qcache lowmem prunes 617913 有這麼多次出現緩存過低的情況
Qcache not cached 189896   
Qcache free memory 18573912  目前剩餘緩存空間
Qcache free blocks 5328 這個數字似乎有點大 碎片不少
Qcache total blocks 30953
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章