搜鞥都哦 发表于 2018-10-1 13:14:08

MySQL 5.5 innodb_spin_wait_delay参数测试

1.测试环境
  操作系统:SUSE11
  数据库版本:MySQL 5.5.28
  硬件信息:HP G7 460刀片机
  2颗 Intel(R) Xeon(R) CPUE5645@ 2.40GHz,每颗CPU 6核
  64G内存
  压力测试工具:sysbench 0.5
2.数据库配置
  
  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
3.测试参数
  innodb_spin_wait_delay
参数简介
  自旋(spin)是一种通过不间断地测试来查看一个资源是否变为可用状态的等待操作,用于仅需要等待很短的时间等待所需资源的场景。使用自旋这种“空闲循环(busy-loop)”来完成资源等待的方式要比通过上下文切换使线程转入睡眠状态的方式要高效得多。但如果自旋了一个很短的时间后其依然无法获取资源,则仍然会转入前述第二种资源等待方式。此变量则正是用于定义InnoDB自旋操作的空闲循环转数,默认为6转。作用范围为全局级别,可用于选项文件,属动态变量。
测试过程
  使用sysbench测试工具,对数据库逐步加压测试,连接的进程数有40个逐步增加到128个,每次增加8个,共20个测试结果。对这20个测试结果进行分析,得出如下结论。
测试结果

  系统默认值为6。可以看到,当该参数为0时,TPS最低,当该参数大于5时,TPS差别不大,因此建议取默认值。file:///C:%5CUsers%5CADMINI~1%5CAppData%5CLocal%5CTemp%5CC204ACFE36AE4EB384C3BC0C561905D9.png
  

页: [1]
查看完整版本: MySQL 5.5 innodb_spin_wait_delay参数测试