最近在看 《 MySQL 实战 45 讲》,然后同时找了本 《 MySQL 技术内幕:InnoDB 存储引擎》来看。
但是在谈到关于 autocommit
的使用时,两位作者给出的意见基本是完全相左的。
内幕建议使用 set autocommit = 0
:
使用自动提交是初级 DBA 容易犯的错误,在编写应用程序时,最好事务的控制权限交给开发人员,即在程序端进行事务的开始和结束,同时开发人员必须了解自动提交可能带来的问题。
实战建议使用 set autocommit = 1
;
因为如果
autocommit=0
则意味着只执行一个 select 语句也会启动对应的事务,而且不会自动提交。这个事件会持续存在直到你主动执行 commit 或 rollback 语句,或者断开连接。如果是长连接则会导致长事务,而长事件会占用回滚段和锁资源。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.