Следующая статья была первоначально написана в MySQL Performance Blog
MySQL 5.6.7 RC есть, поэтому я решил проверить, как он работает в рабочей нагрузке tpcc-mysql с точки зрения производительности и стабильности.
Я не могу сказать, что мой опыт был абсолютно безупречен, я столкнулся с двумя ошибками:
Но, в конце концов, разве это не RC? И Oracle запросил отзыв , так что я делаю свое дело.
- Контрольная дата: октябрь-2012
- Цель теста: протестировать работу MySQL 5.6.7
- Спецификация оборудования
- Сервер: Dell PowerEdge R710
- Процессор: 2x Intel (R) Xeon (R) CPU E5-2660 0 @ 2,20 ГГц
- Память: 192 ГБ
- Память: очень быстрая флешка PCIe
- Файловая система: ext4
- Программного обеспечения
- ОС: CentOS 6.3
- Версия MySQL: 5.6.7-RC
- Спецификация эталона
- Название теста: tpcc-mysql
- Коэффициент масштабирования: 2500 Вт (~ 250 ГБ данных)
- Длительность эталонного теста: 4000 с, но результат берется только за последние 2000 с для удаления фазы прогрева Измерения проводятся каждую секунду.
- Изменяемые параметры: мы варьируем innodb_buffer_pool_size : 13, 25, 50, 75, 100, 125 ГБ, чтобы иметь различное соотношение памяти и данных. Мы различаем innodb_buffer_pool_instances : 1 и 8 и innodb_log_file_size : 2x4GB и 2x8GB .
Полученные результаты
Первый результат — файлы журнала innodb 2×4 ГБ
Мы можем видеть, что innodb_buffer_pool_instances = 8 имеет большое значение для небольших размеров buffer_pool, в то время как для больших buffer_pool более предпочтительным является innodb_buffer_pool_instances = 1 .
Результаты с большим значением buffer_pool довольно нестабильны, и причина в том, что InnoDB переходит в режим асинхронной очистки, проблема, которая должна была быть исправлена в новом механизме очистки InnoDB. Однако Димитрий сказал мне, что нам могут потребоваться большие файлы журнала innodb, чтобы получить более стабильные результаты.
Так что это с 2x4GB против 2x8GB журналов innodb.
Очевидно, что с большими бревнами результат намного лучше, поэтому размер имеет значение.
Заключение Параметр
innodb_buffer_pool_instances может значительно изменить результат, особенно в интенсивных рабочих нагрузках ввода-вывода.
В MySQL 5.6 наконец возможно достичь стабильной пропускной способности без провалов, но адаптивная очистка все еще требует больших файлов журнала.
Конфигурация MySQL:
[mysqld] gdb innodb_file_per_table = true innodb_data_file_path = ibdata1:100M:autoextend innodb_flush_method = O_DIRECT innodb_log_buffer_size = 256M innodb_flush_log_at_trx_commit = 1 innodb_buffer_pool_size = 125G innodb_buffer_pool_instances=8 innodb_log_file_size = 4G innodb_log_files_in_group = 2 #####plugin options innodb_read_io_threads = 16 innodb_write_io_threads = 16 innodb_io_capacity = 20000 innodb_io_capacity_max = 40000 #not innodb options (fixed) port = 3306 back_log = 50 max_connections = 2000 max_prepared_stmt_count=500000 max_connect_errors = 10 table_open_cache = 2048 max_allowed_packet = 16M binlog_cache_size = 16M max_heap_table_size = 64M sort_buffer_size = 4M join_buffer_size = 4M thread_cache_size = 1000 query_cache_size = 0 query_cache_type = 0 ft_min_word_len = 4 thread_stack = 192K tmp_table_size = 64M server-id = 10 #*** MyISAM Specific options key_buffer_size = 8M read_buffer_size = 1M read_rnd_buffer_size = 4M bulk_insert_buffer_size = 8M myisam_sort_buffer_size = 8M myisam_max_sort_file_size = 10G myisam_repair_threads = 1 myisam_recover user=root skip-grant-tables