有人能用一个很好的例子向我解释“TRANSACTION”和“事务隔离级别”。我非常困惑在我的应用程序中使用它。我在存储过程中做了很多插入/更新/选择事务,所以请在这个上下文中解释,(考虑自动提交)。我也在我的应用服务器上使用连接池。
感谢。
答案 0 :(得分:0)
这些是不同的概念,所有这些都很好地结合在一起。事务是我每天使用的数据库中一个非常基本和重要的概念。您可以在这里阅读相当多的关于交易最重要的属性ACID:http://en.wikipedia.org/wiki/ACID
但我会尝试用自己的话语给你一个概述:
交易可以看作是将一组命令组合在一起。如果在事务中更改/添加/删除数据库中的任何内容,则根据隔离级别,该事务外部的任何人都可以看到这些更改。如果您回滚事务(例如,如果发生错误),则根本不会对数据库应用任何更改。如果您决定提交您的交易,则事务中发生的所有事情都会立即执行 。因此,作为一个好习惯,在一次交易中将每个逻辑行为组合在一起是一个绝妙的主意。
自动提交正好相反:每次更新/插入/删除都是隐式/直接提交为事务。所以它仍然可以被视为一个事务,但是你在它的末尾省略了显式提交。
只有在确保仅为事务使用一个连接时,才能使用连接池。但通常你必须首先从池中获取连接来执行你的语句,所以这不是问题。
准备好的陈述与交易有点不相关。您当然可以在预准备语句中使用事务,并且必须考虑这一点,因为在MySQL中无法实现嵌套事务。