【发布时间】:2015-03-17 18:44:39
【问题描述】:
有人可以用很好的例子解释一下“事务”和“事务隔离级别”吗?我对在我的应用程序中使用它感到非常困惑。我在存储过程中做了很多插入/更新/选择事务,所以请在这个上下文中解释一下,(也考虑自动提交)。我也在我的应用服务器上使用连接池。
谢谢。
【问题讨论】:
标签: mysql transactions isolation-level
有人可以用很好的例子解释一下“事务”和“事务隔离级别”吗?我对在我的应用程序中使用它感到非常困惑。我在存储过程中做了很多插入/更新/选择事务,所以请在这个上下文中解释一下,(也考虑自动提交)。我也在我的应用服务器上使用连接池。
谢谢。
【问题讨论】:
标签: mysql transactions isolation-level
这些不同的概念可以很好地结合在一起。事务是我每天使用的数据库中一个非常基本且重要的概念。您可以在此处阅读有关事务最重要属性 ACID 的大量信息:http://en.wikipedia.org/wiki/ACID
但我会试着用我自己的话给你一个概述:
事务可以看作是将一组命令组合在一起。如果您在事务中更改/添加/删除数据库中的任何内容,则取决于该事务之外的任何人都无法看到这些更改的隔离级别。如果您回滚事务(例如,如果发生错误),则根本不会对数据库进行任何更改。如果您决定提交您的事务,则事务中发生的所有事情都会立即执行。因此,作为一个好习惯,将每个逻辑操作组合到一个事务中是一个绝妙的主意。
自动提交则相反:每个更新/插入/删除都隐式/直接作为事务提交。所以它仍然可以被视为一个事务,但是你在它的末尾省略了显式提交。
只有在确保事务只使用一个连接的情况下,连接池才能工作。但通常你必须先从池中获得一个连接才能执行你的语句,所以这不是问题。
准备好的语句有点与事务无关。您当然可以在准备好的语句中使用事务,并且必须考虑到这一点,因为在 MySQL 中不可能使用嵌套事务。
【讨论】: