2011-07-15 14 views
1

1回の挿入でmysql innoDBテーブルに連続して、1秒あたりの挿入率が遅くなります。 いくつかの動作があります - シャットダウンデータインサータ(java)アプリケーションの場合、mysqlはしばらくI/O操作を行います。 - いくつかの挿入を追加し、その後、シャットダウン操作の期間が長すぎます。挿入しないでmysqlを起動して停止する場合は、操作を速く開始して停止してください。 - 挿入速度はテーブル上のデータ量に依存しません。 mysqlサーバを再起動する場合、1秒あたりの挿入は、最後の再起動の挿入/秒値と似ています。InnoDB挿入カウントが遅い

私はフォーラムでいくつかのコメントを読んで、連続して追加しないでください、2つの挿入の間にギャップがあります。それは意味がありますか?なぜSQLは遅くなっていますか? 'INNOの%'結果LIKE

クエリSHOW変数は、すべてのインサートが、二回のディスクへの書き込みを要求する意味自動コミットモードでInnoDBがデフォルトで動作します

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 

おかげ

答えて

0

スローダウンの理由は、キャッシュ(ダーティページ)と定期的に書き込まれたハードドライブに保存された挿入操作です。ダーティ・ページ・メモリがいっぱいになるまで、挿入操作は高速であり、キャッシュはいっぱいになり、速度ボトルネック・ディスク書き込み(I/O)が挿入されます。 あなたは私のコードconn.setAutoCommitから汚れたページサイズ「修飾デシベルページ」を表示するには、SQLの下(偽)

show engine innodb status 
0

を下回っています。拡張された挿入(a.k.a複数行挿入)を使用し、いくつかの連続する挿入をトランザクションに囲むことは、性能を向上させる。

+0

を使用することができます。 –

+0

しかし、eeryシングルコミット後、またはより大きなバッチ後にコミットしていますか? – Mchl

+0

ところで:大量のデータを一括アップロードする最も速い方法は、「LOAD DATA INFILE」 – Mchl

関連する問題