操做系統:SUSE11
數據庫版本:MySQL 5.5.28
硬件信息:HP G7 460刀片機
2顆 Intel(R) Xeon(R) CPU E5645 @ 2.40GHz,每顆CPU 6核
64G內存
壓力測試工具:sysbench 0.5
[mysqld]
port = 3306
socket = /tmp/mysql.sock
skip-name-resolve
skip-external-locking
key_buffer_size = 160M
max_allowed_packet = 10M
table_open_cache = 5000
sort_buffer_size = 1K
net_buffer_length = 8K
read_buffer_size = 100M
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
max_connections = 20000
max_user_connections = 20000
innodb_log_file_size = 1G
innodb_flush_method=O_DIRECT
innodb_buffer_pool_size = 42G
innodb_additional_mem_pool_size = 10M
innodb_log_buffer_size = 3G
innodb_flush_log_at_trx_commit = 2
innodb_lock_wait_timeout = 50
innodb_io_capacity = 2000
innodb_read_io_threads = 4
innodb_write_io_threads = 20
innodb_adaptive_hash_index = OFF
innodb_buffer_pool_instances = 12
thread_cache_size = 512
thread_concurrency = 24
innodb_stats_on_metadata = OFF
innodb_spin_wait_delay
自旋(spin)是一種經過不間斷地測試來查看一個資源是否變爲可用狀態的等待操做,用於僅須要等待很短的時間等待所需資源的場景。使用自旋這種「空閒循環(busy-loop)」來完成資源等待的方式要比經過上下文切換使線程轉入睡眠狀態的方式要高效得多。但若是自旋了一個很短的時間後其依然沒法獲取資源,則仍然會轉入前述第二種資源等待方式。此變量則正是用於定義InnoDB自旋操做的空閒循環轉數,默認爲6轉。做用範圍爲全局級別,可用於選項文件,屬動態變量。
使用sysbench測試工具,對數據庫逐步加壓測試,鏈接的進程數有40個逐步增長到128個,每次增長8個,共20個測試結果。對這20個測試結果進行分析,得出以下結論。
系統默認值爲6。能夠看到,當該參數爲0時,TPS最低,當該參數大於5時,TPS差異不大,所以建議取默認值。