MySQL MyISAM優化設置點滴

先說一點問題:sql

 
Mysql中的InnoDB和MyISAM是在使用MySQL中最經常使用的兩個表類型,各有優缺點.兩種類型最主要的差異就是 InnoDB 支持事務處理與外鍵和行級鎖.而MyISAM不支持.因此Myisam每每就容易被人認爲只適合在小項目中使用。可是從數據庫需求角度講,要求99.9%的穩定性,方便的擴展性和高可用性來講的話,那MyISAM絕對應該是首選。MyISAM類型的表強調的是性能,其執行數度比InnoDB類型更快, 只是不提供事務支持.大部分項目是讀多寫少的項目,而Myisam的讀性能是比innodb強很多的.
 
優化設置:
key_buffer_size – 這對MyISAM表來講很是重要。若是隻是使用MyISAM表,能夠把它設置爲可用內存的 30-40%。可是注意,分多少內存應該是根據需求決 定,而不是無論什麼機器,都砍掉一半內存用做 key_buffer_size .合理的值取決於索引大小、數據量以及負載 — 記住,MyISAM表會使用操做系統的緩存來緩存數據,所以須要留出部份內存給它們,不少狀況下數據比索引大多了。能夠經過SHOW GLOBAL STATUS 時的 Key_blocks_unused來查看,只要還有剩餘,就說明 key_buffer_size 沒用滿。若是你不多使用MyISAM表,那麼也保留低於 16-32MB 的 key_buffer_size 以適應給予磁盤的臨時表索引所需。
 

query_cache — 若是你的應用程序有大量讀,並且沒有應用程序級別的緩存,那麼這頗有用。不要把它設置太大了,由於想要維護它也須要很多開銷,這會致使MySQL變慢。通 常設置爲 32-512Mb。設置完以後最好是跟蹤一段時間,查看是否運行良好。在必定的負載壓力下,若是緩存命中率過低了,就啓用它。數據庫

sort_buffer_size –若是你只有一些簡單的查詢,那麼就無需增長它的值了,儘管你有 64GB 的內存。搞很差也許會下降性能。
 
query_cache_size -查詢緩衝常被用來緩衝 SELECT 的結果而且在下一次一樣查詢的時候再也不執行直接返回結果.打開查詢緩衝能夠極大的提升服務器速度, 若是你有大量的相同的查詢而且不多修改表.查看 「Qcache_lowmem_prunes」 狀態變量來檢查是否當前值對於你的負載來講是否足夠高.注意: 在你表常常變化的狀況下或者若是你的查詢原文每次都不一樣,查詢緩衝也許引發性能降低而不是性能提高.注意:設置query_cache_limit,只有小於此設定值的結果纔會被緩衝, 此設置用來保護查詢緩衝,防止一個極大的結果集將其餘全部的查詢結果都覆蓋.
 
 
bulk_insert_buffer_size -MyISAM 使用特殊的相似樹的cache來使得突發插入, (這些插入是,INSERT … SELECT, INSERT … VALUES (…), (…), …, 以及 LOAD DATA INFILE) 更快. 此變量限制每一個進程中緩衝樹的字節數. 設置爲 0 會關閉此優化.爲了最優化不要將此值設置大於 「key_buffer_size」.當突發插入被檢測到時此緩衝將被分配.
 
 
read_rnd_buffer_size -當在排序以後,從一個已經排序好的序列中讀取行時,行數據將從這個緩衝中讀取來防止磁盤尋道.若是你增高此值,能夠提升不少ORDER BY的性能.當須要時由每一個線程分配
 
 
thread_cache_size - 咱們在cache中保留多少線程用於重用,當一個客戶端斷開鏈接後,若是cache中的線程還少於thread_cache_size,則客戶端線程被放入cache中.這能夠在你須要大量新鏈接的時候極大的減小線程建立的開銷
 
 
附錄:適用於日IP 50-100w,PV 100-300w的站點,針對Dell R710,雙至強E5620、16G內存的硬件配置。CentOS 5.6 64位系統,MySQL 5.5.x 穩定版的部分數據庫配置文件,供你們參考
 
back_log = 300
max_connections = 3000
max_connect_errors = 30
table_cache = 4096
max_allowed_packet = 32M
#external-locking
#skip-networking
binlog_cache_size = 4M
max_heap_table_size = 128M
sort_buffer_size = 16M
join_buffer_size = 16M
thread_cache_size = 16
thread_concurrency = 8
query_cache_size = 128M
ft_min_word_len = 8
#memlock
thread_stack = 512K
transaction_isolation = REPEATABLE-READ
tmp_table_size = 128M
#log_slave_updates
#log
#log_warnings
log_slow_queries
long_query_time = 6
log_long_format
相關文章
相關標籤/搜索