MySQL 5.5 和 5.6 默認參數值的差異

http://www.kankanews.com/ICkengine/archives/451.shtml

作爲 MySQL 5.5 和 5.6 性能比較的一部分,我研究了下兩個版本默認參數的差異,爲了瞭解差異內容,我使用如下的 SQL 語句分別在 MySQL 5.5 和 5.6 版本進行查詢,得出下表(點擊圖片查看大圖):

讓我們來看看這些差異的配置中最重要的也是影響最大的部分:

performance_schema 在 MySQL 5.6 中默認是開啓的,但相關的很多參數相比 MySQL 5.5 卻是降低了,例如 performance_schema 自動調整到 445 個表和 224 線程,比 MySQL 5.5 低。儘管默認 max_connections 只是 150 ,比 200 還小。

innodb_stats_on_metadata 在 MySQL 5.6 默認關閉,使得 information_schema 的查詢速度快很多。

innodb_log_file_size – 默認值從 5MB 提升到 50MB,這是一個好的改變,雖然我覺得這個默認數值還可以再大些。對於寫負載高的情況下,默認配置的 MySQL 5.6 性能更好。

back_log 改動比較小,從 50 改爲 80。如果系統每秒處理的連接數很高,還需要繼續提高這個配置的值。

open_files_limit 由原來的 1024 改爲 5000

innodb_auto_extend_increment 由 8MB 改爲 64MB,可幫助降低碎片。

max_connect_errors 從 10 改爲 100,可降低潛在的連接堵塞,但還可以更高些。

sort_buffer_size 從 2M 將爲 256K,這可避免小排序導致的資源浪費,但是對大的排序有負面的影響。

max_allowed_packet 從 1MB 改爲 4MB 讓 MySQL 可處理更大的查詢。

join_buffer_size 從 128K 改爲 256K,我覺得這個改動影響不大。

table_open_cache 從 400 提高到 2000,挺好!

innodb_buffer_pool_instances 從 1 改爲 8,用於優化更高併發的負載。

query_cache_type 和 query_cache_size. The behavior is “no cache” by default still but it is achieved differently now. The query_cache_type is now off by default with default size of 1MB while in MySQL 5.5 and before it was “ON” by default with query cache size of 0 which makes it disabled. I wish query_cache_size though would be larger by default as value of 1M is too small to be practical if someone tries to enable it.

sql_mode has NO_ENGINE_SUBSTITUTION value by default which is good change as trying to create Innodb table but getting MyISAM because Innodb was disabled for some reason was very error prone gotcha. Note this is as far as MySQL 5.6 goes – STRICT_MODE and other safer behaviors are not enabled by default.

innodb_old_blocks_time 設置爲 1000,很好的改變,默認掃描 InnoDB 緩衝池大小。

thread_cache_size 默認啓用,對很多連接和斷開連接操作的情況下有幫助。

sync_relay_log_info and sync_master_info 默認值有原來的 0 改爲 10000. 該改動幾乎不會影響負載。

secure_auth 默認開啓,要求新的密碼握手,特別是阻止老的不安全的做法,很好!

innodb_concurrency_tickets has been increased from 500 to 5000. If you’re using innodb_thread_concurrency this will reduce overhead associated with grabbing and releasing innodb_thread_concurrency slot but will increase potential starvation of queued threads especially for IO bound workloads. Most users will not be affected though as innodb_thread_concurrency is 0 by default so this queuing feature is disabled.

innodb_purge_threads 默認爲 1 ,使用專用的後臺 purge 線程,好!

innodb_open_files 由 300 改爲 2000,好!

innodb_data_file_path got a small change with starting ibdata1 size raised from 10M to 12M. I’m not sure what is the purpose of this change but it is unlikely to have any practical meaning for users. Considering the default innodb_auto_extend_increment is 64 starting with 64M might have made more sense.

innodb_purge_patch_size 從 20 改爲 300.

innodb_file_per_table 默認啓用,這個改變很大,而且很棒。特別是當你的表非常大的時候。

optimizer_switch is the catch all variable for a lot of optimizer options. I wonder why was not it implemented as number of different variables which would make more sense in my opinion. MySQL 5.6 adds a lot more optimizer switches which you can play with:


1
2
3
4
5
6
7
8
9
10
11
mysql [localhost] {msandbox} (test) > select* fromvar55 wherevariable_name='OPTIMIZER_SWITCH'\G
*************************** 1. row ***************************
VARIABLE_NAME: OPTIMIZER_SWITCH
VARIABLE_VALUE: index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=on
1 row inset(0.00 sec)
mysql [localhost] {msandbox} (test) > select* fromvar56 wherevariable_name='OPTIMIZER_SWITCH'\G
*************************** 1. row ***************************
VARIABLE_NAME: OPTIMIZER_SWITCH
VARIABLE_VALUE: index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=on,index_condition_pushdown=on,mrr=on,mrr_cost_based=on,block_nested_loop=on,batched_key_access=off,materialization=on,semijoin=on,loosescan=on,firstmatch=on,subquery_materialization_cost_based=on,use_index_extensions=on
1 row inset(0.00 sec)


總結: MySQL 5.6 對默認配置進行了一些微調,這些調整大多數都非常不錯。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章