Количество вставок InnoDB замедляется - PullRequest
1 голос
/ 15 июля 2011

Я выполняю пакетную вставку в таблицу mysql innoDB непрерывно, соотношение вставок в секунду замедляется.Некоторое поведение: - Если приложение Java для вставки данных (shutdown) завершает работу, mysql некоторое время выполняет некоторые операции ввода-вывода.- Добавьте некоторую вставку, затем выключите MySQL-сервер, длительность операции выключения слишком велика.Если запуск и остановка mysql без какой-либо вставки, запускать и останавливать работу так быстро.- Скорость вставки не так сильно зависит от количества данных в таблице.Если перезапустить сервер mysql, вставка в секунду аналогична значению последней вставки в секунду при перезапуске.

Я прочитал некоторые комментарии на форуме, не добавляйте их непрерывно, между двумя вставками есть пробел.Это имеет смысл?Почему sql замедляется?

query ПОКАЗАТЬ ПЕРЕМЕННЫЕ НРАВИТСЯ 'inno%' результат ниже

innodb_adaptive_flushing = ON
innodb_adaptive_hash_index = ON
innodb_additional_mem_pool_size = 20971520
innodb_autoextend_increment = 8
innodb_autoinc_lock_mode = 1
innodb_buffer_pool_instances = 1
innodb_buffer_pool_size = 268435456
innodb_change_buffering = all
innodb_checksums = ON
innodb_commit_concurrency = 0
innodb_concurrency_tickets = 500
innodb_data_file_path = ibdata1:50M:autoextend
innodb_data_home_dir = 
innodb_doublewrite = ON
innodb_fast_shutdown = 1
innodb_file_format = Barracuda
innodb_file_format_check = ON
innodb_file_format_max = Antelope
innodb_file_per_table = ON
innodb_flush_log_at_trx_commit = 2
innodb_flush_method = O_DSYNC
innodb_force_recovery = 0
innodb_io_capacity = 200
innodb_lock_wait_timeout = 50
innodb_locks_unsafe_for_binlog = OFF
innodb_log_buffer_size = 8388608
innodb_log_file_size = 268435456
innodb_log_files_in_group = 2
innodb_log_group_home_dir = ./
innodb_max_dirty_pages_pct = 75
innodb_max_purge_lag = 0
innodb_mirrored_log_groups = 1
innodb_old_blocks_pct = 37
innodb_old_blocks_time = 0
innodb_open_files = 300
innodb_purge_batch_size = 20
innodb_purge_threads = 0
innodb_read_ahead_threshold = 56
innodb_read_io_threads = 4
innodb_replication_delay = 0
innodb_rollback_on_timeout = OFF
innodb_spin_wait_delay = 6
innodb_stats_on_metadata = ON
innodb_stats_sample_pages = 8
innodb_strict_mode = ON
innodb_support_xa = ON
innodb_sync_spin_loops = 30
innodb_table_locks = ON
innodb_thread_concurrency = 0
innodb_thread_sleep_delay = 10000
innodb_use_native_aio = OFF
innodb_use_sys_malloc = ON
innodb_version = 1.1.1
innodb_write_io_threads = 4

Спасибо

Ответы [ 2 ]

0 голосов
/ 21 июля 2011

Причина замедления - операция вставки, хранящаяся в кеше (грязная страница) и периодически записываемый жесткий диск. До тех пор, пока не будет заполнена грязная страница памяти, операции вставки будут быстрыми, тогда кеш заполнится и будет записан диск с узким местом для скорости (I / O). Вы можете использовать ниже sql, чтобы показать грязную страницу размером «Модифицированные страницы БД»

show engine innodb status
0 голосов
/ 15 июля 2011

InnoDB по умолчанию работает в режиме автоматической фиксации, что означает, что каждая вставка требует записи на диск дважды. Использование расширенных вставок (например, многострочных вставок) и включение нескольких последовательных вставок в транзакцию повышает производительность.

...