首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用AUTOCOMMIT =0好吗?

使用AUTOCOMMIT =0好吗?
EN

Database Administration用户
提问于 2013-05-15 15:34:41
回答 4查看 15.3K关注 0票数 5

如果插入查询看起来像这样,那么在批量插入数据之前使用(用于性能调优) AUTOCOMMIT = 0更好吗?

INSERT INTO SomeTable (column1, column2) VALUES (val1,val2),(val3,val4),...

EN

回答 4

Database Administration用户

发布于 2013-05-15 15:37:14

根据文档AUTOCOMMIT应该在InnoDB中关闭。

当将数据导入InnoDB时,关闭自动提交模式,因为它对每个插入执行日志刷新到磁盘。将大容量插入到具有自动增量列的表中时,将innodb_autoinc_lock_mode设置为2,而不是默认值1。

票数 7
EN

Database Administration用户

发布于 2013-05-21 16:25:03

你有一个需要注意的交易。

诚然,与INSERT相关的每个autocommit=1都会发生日志刷新。然而,设置autocommit=0是否会产生任何后果?

想想重做日志(ib )吧。更改信息必须存储在某个地方,以便在崩溃后需要回滚插入或启动恢复。

无论哪种方式,都会有一些磁盘I/O需要处理。

另外,考虑一下诺姆b

  • 更小的日志缓冲区意味着更频繁的刷新
  • 更大的日志缓冲区意味着您将在磁盘上保存I/O刷新,但提交将挂起更长时间
  • 在大多数情况下,默认值应该足够了。

这些都是事实。让买家小心点。

票数 4
EN

Database Administration用户

发布于 2016-08-01 09:09:26

如果innodb_flush_log_at_trx_commit设置为1,则关闭绝对有帮助。

表:

代码语言:javascript
复制
CREATE TABLE tab1
(col1 INT, col2 VARCHAR(20), col3 INT, KEY idx_tab1_col1(col1))ENGINE = INNODB;

测试:

  • 硬件:带有SSD的MAC。
  • 插入100万条已关闭自动提交的记录。
  • 插入启用自动提交的100万条记录。

结果:

  • 自动提交: 4+分钟;
  • 自动关闭:30秒。
票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/42704

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档