MySQL系統變量中有哪些會影響到數據庫的性能呢?下面就為您列舉了一些影響數據庫性能的MySQL系統變量,希望可以讓您對MySQL系統變量有更深的了解。
bulk_insert_buffer_size
批量插入緩存大小, 這個參數是針對MyISAM存儲引擎來說的.適用於在一次性插入100-1000+條記錄時, 提高效率.默認值是8M.可以針對數據量的大小,翻倍增加.
concurrent_insert
並發插入, 當表沒有空洞(刪除過記錄), 在某進程獲取讀鎖的情況下,其他進程可以在表尾部進行插入.
值可以設0不允許並發插入,1當表沒有空洞時,執行並發插入,2.不管是否有空洞都執行並發插入.
默認是1.針對表的刪除頻率來設置.
delay_key_write
針對MyISAM存儲引擎,延遲更新索引.意思是說,update記錄時,先將數據up到磁盤,但不up索引,將索引存在內存裡,當表關閉時,將內存索引,寫到磁盤. 值為 0不開啟, 1開啟. 默認開啟.
delayed_insert_limit, delayed_insert_timeout, delayed_queue_size
延遲插入, 將數據先交給內存隊列, 然後慢慢地插入.但是這些配置,不是所有的存儲引擎都支持, 目前來看, 常用的InnoDB不支持, MyISAM支持. 根據實際情況調大, 一般默認夠用了.
expire_logs_days
自動刪除超過指定天數的日志. 建議為0,表示“不自動刪除”.
flush, flush_time
是否啟用, 同步表數據到磁盤.以及自動同步的間隔時間.
針對flush_time, 官方建議只在Windows 9x或Me,或有最小資源的系統中使用該選項.所以,建議關閉.
ft_boolean_syntax, ft_max_word_len, ft_min_word_len,ft_query_expansion_limit, ft_stopword_file
針對MyISAM設置的參數, 全文搜索特性. 如果你不使用 FULLTEXT 索引,就不需要優化了. 詳見mysql參考手冊.
join_buffer_size
用於表間關聯(join)的緩存大小.建議設為 131072.(128K)
key_buffer_size
索引塊緩存區大小, 針對MyISAM存儲引擎,該值越大,性能越好.但是超過操作系統能承受的最大值,反而會使mysql變得不穩定.
如果不是MyISAM存儲引擎,一般設置為 4-32M大小.
key_cache_age_threshold, key_cache_block_size, key_cache_division_limit
鍵值緩存的相關設置.需要針對實際情況調優.只是針對MyISAM儲存引擎.
large_pages
是否啟動大頁面支持.意思是,可以一些緩存分配更大的空間.這個特性已經被InnoDB, MyISAM等常用存儲引擎支持.
low_priority_updates
低優先級更新.意思是, 所有的寫操作(表寫鎖), 包括update,delete,insert等都需要等待讀操作完成後才執行 (表讀鎖解開).
因為是針對表的鎖,所以,這裡僅支持MyISAM.
max_write_lock_count
最大寫鎖數量.這個變量的含義是, 當寫鎖達到一定數量後, 就不限制讀鎖, 允許一部分讀鎖進入.(可以讀數據了,否則需要等待寫鎖釋放後,才能讀)
因為是針對表的鎖,所以,這裡僅支持MyISAM.
preload_buffer_size
重載索引時分配的緩沖區大小, 該變量僅支持MyISAM.
read_buffer_size, read_rnd_buffer_size
每個線程連續掃描時為掃描的每個表分配的緩沖區的大小(字節)。如果進行多次連續掃描,可能需要增加該值, 默認值為131072。
sort_buffer_size
每個排序線程分配的緩沖區的大小。增加該值可以加快ORDER BY或GROUP BY操作.默認數值是2097144(2M),建議加大到 16777208 (16M)。
timed_mutexes
顯示mutexes的統計信息, 默認關閉OFF
tmp_table_size
臨時表的大小,在未超過大小之前進行的操作是在內存中的, 當超過後,mysql會自動轉換到硬盤上.
NULL與MySQL空字符串的區別
深入研究MySQL結果字符串
MySQL截取字符串函數方法
MySQL分割字符串的實現
深入了解MySQL字符串比較函數