Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql InnoDB插入计数减慢_Mysql_Performance_Innodb - Fatal编程技术网

Mysql InnoDB插入计数减慢

Mysql InnoDB插入计数减慢,mysql,performance,innodb,Mysql,Performance,Innodb,我连续批量插入mysql innoDB表,每秒插入的速度变慢。 有些行为是 -如果关闭数据插入器(java)应用程序,mysql将执行一些i/o操作一段时间。 -添加一些insert然后关闭mysql服务器,关闭操作持续时间太长。如果在没有任何插入的情况下启动和停止mysql,那么启动和停止操作的速度将非常快。 -插入速度并不(在很大程度上)取决于表上的数据量。若重新启动mysql服务器,则每秒插入次数类似于上次重新启动每秒插入次数的值 我在论坛上读到一些评论,不连续添加,在2个插入之间有间隙。

我连续批量插入mysql innoDB表,每秒插入的速度变慢。 有些行为是 -如果关闭数据插入器(java)应用程序,mysql将执行一些i/o操作一段时间。 -添加一些insert然后关闭mysql服务器,关闭操作持续时间太长。如果在没有任何插入的情况下启动和停止mysql,那么启动和停止操作的速度将非常快。 -插入速度并不(在很大程度上)取决于表上的数据量。若重新启动mysql服务器,则每秒插入次数类似于上次重新启动每秒插入次数的值

我在论坛上读到一些评论,不连续添加,在2个插入之间有间隙。它有意义吗?为什么sql会变慢

查询显示变量,如“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

谢谢,InnoDB默认在自动提交模式下工作,这意味着每次插入都需要写入磁盘两次。使用扩展插入(也称为多行插入)并将多个连续插入包含到事务中可提高性能。

降低速度的原因是插入操作存储在缓存(脏页)和定期写入的硬盘驱动器上。在脏页内存满之前,插入操作很快,然后缓存满,插入速度瓶颈磁盘写入(I/O)。 您可以使用下面的sql显示脏页大小“修改的db页”


但是您是在每次提交后提交,还是在更大的批量之后提交?顺便说一句:批量上传大量数据的最快方法是使用
LOAD data infle
code是add multiple insert。事实上,问题不在于速度,而是速度变慢了。您介意运行这个查询吗
显示像“inno%”这样的变量并用结果更新您的问题?
show engine innodb status