我刚意识到我头疼好多年了。嗯,隐喻地说。实际上,我在查看我的数据库结构,不知怎么地,我才意识到我从来不使用事务。多伊尔。
互联网上有很多关于交易的数据(begin transaction,rollback,commit等),但令人惊讶的是,对于交易为什么重要,到底有多重要,却没有太多的细节吗?
如果出了问题,我理解处理的概念。当一个人正在进行多个更新时,这是有意义的,例如,一次在多个表中,但据我所知,这是一种糟糕的做法,而且我不这样做。我所有的查询都只是更新一个表。如果查询错误,则取消事务或不处理事务。除了我从服务器上拔出插头之外,还有什么可能出错或可能损坏一个表更新呢?
换句话说,我的问题是,
在我所有的表上实现事务到底有多重要--我完全亵渎没有它们,还是真的那么重要?
更新
+1 to invisal,他指出查询自动包装为事务,我不知道。在我的问题上指出了许多很好的参考资料。
发布于 2013-10-06 05:06:48
当一个人正在进行多个更新时,这是非常有意义的,例如,一次在多个表中。但是--基本上我所有的查询--一次只更新一个表,。如果查询错误,则取消事务或不处理事务。
在你的情况下,它什么也做不了。一个语句本身有它自己的事务。有关更多信息,您可以阅读现有的问题和答案:
发布于 2013-10-06 05:06:51
数据库最重要的属性是可靠地保存数据。
通过遵循酸原则(原子性、一致性、隔离性、持久性),可以确保数据库的可靠性。在数据库上下文中,对数据的单个逻辑操作称为事务。没有交易,这种可靠性就不可能实现。
除了可靠性之外,正确地使用事务还可以大大提高某些数据操作的性能。例如,您可以启动事务,插入大量数据(例如100 k行),然后才能提交。在调用commit之前,服务器不必实际写入磁盘,从而有效地对内存中的数据进行批处理。这样可以大大提高性能。
发布于 2013-10-06 05:13:46
您应该知道,对数据库的每个更新操作都是在事务内执行的,即使只有一个表( server会自动为它创建事务)。总是执行事务的原因是确保其他人提到的ACID。在这里,我想详细阐述一下隔离点。如果没有事务隔离,您可能会遇到以下问题:读取未提交的、不可重复的读取、幻影读取、.
https://stackoverflow.com/questions/19205562
复制相似问题