- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经进行了几次试验,如果将 autocommit
设置为 False
,速度似乎会有所提高。
但是,我担心在我的代码末尾进行一次提交,数据库行将不会更新。因此,例如,我对数据库进行了几次更新,但都没有提交,查询数据库会给我旧数据吗?或者,它知道应该先提交吗?
或者,我是否完全误解了 commit
的实际作用?
注意:我正在使用 pyodbc 和 MySQL。另外,我使用的表是 InnoDB,这有什么不同吗?
最佳答案
有些情况会触发 implicit commit .然而,在大多数情况下,不提交意味着其他连接将无法使用数据。
这也意味着,如果另一个连接试图执行与正在进行的事务冲突的操作(另一个连接锁定了该资源),最后一个请求将不得不等待锁被释放。
至于性能问题,autocommit
会导致每个更改立即生效。性能下降在大表上会非常明显,因为在每个 commit
索引和约束也需要更新/检查。如果您仅在一系列查询后才提交,则索引/约束只会在那时更新。
另一方面,没有足够频繁地提交可能会导致服务器有太多的工作试图保持两组数据之间的一致性。因此需要权衡取舍。
是的,使用 InnoDB
会有所不同。例如,如果您使用的是 MyISAM
,则根本不会有事务,因此任何更改都是永久性的(类似于 autocommit=True)。在 MyISAM 上你可以使用 delay-key-write option .
有关交易的更多信息,请查看 official documentation .有关优化的更多提示,请查看 this article .
关于python - 将 autocommit 设置为 true 是否比批量提交花费的时间更长?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10803012/
所以我的问题是: 为什么(以及如何避免)C# 中的 Is 运算符的生命周期比 if 中使用的更长? 例子: Animal a = new Cat(); if (a is Cat c) { Co
我遇到了这个问题,我已经尝试解决了很长一段时间。理想情况下,我希望 particles.js 的“生成框”向下延伸到页面底部(由 fullpage.js 计算的 7 x viewport),这样当使用
我想让一个 div(我的侧边栏)延伸到页面底部。我知道我需要添加“高度:100%;”为了做到这一点。 但是当我添加 height: 100%; 时,内容少于侧边栏的页面会降低侧边栏的高度,然后您就看不
只有我这么认为吗,还是在 SQL Server 2008 Management Studio 中扩展数据库列表比在 SQL Server 2005 Management Studio 中扩展数据库列表
我是一名优秀的程序员,十分优秀!