mysql 事务隔离级别示例
mysql transaction isolation levels with example
谁能用好的例子向我解释 "TRANSACTION" 和 "transaction isolation levels"。我对在我的应用程序中使用它感到非常困惑。我在存储过程中做了很多 Insert/Update/Select 事务,所以请在这方面进行解释(也考虑自动提交)。我也在我的应用程序服务器上使用连接池。
谢谢。
这些不同的概念可以很好地结合在一起。事务是我每天使用的数据库中一个非常基本和重要的概念。您可以在此处阅读有关事务最重要的属性 ACID 的大量内容:http://en.wikipedia.org/wiki/ACID
但我会尝试用我自己的话给你一个概述:
事务可以看作是一组命令的组合。如果您 change/add/delete 事务中数据库中的任何内容,根据隔离级别,该事务之外的任何人都无法看到这些更改。如果您回滚事务(例如,如果发生错误),则根本不会对数据库应用任何更改。如果您以其他方式决定提交您的事务,事务中发生的所有事情都会立即执行。因此,作为一个好习惯,将每个逻辑操作组合在一个事务中是一个绝妙的主意。
自动提交则相反:每个 update/insert/delete 都 implicitly/directly 作为事务提交。所以它仍然可以看作是一个事务,但是你省略了它末尾的显式提交。
连接池只有在您确保只使用一个连接进行事务时才能工作。但通常你必须先从池中获取连接才能执行你的语句,所以这不是问题。
准备好的语句与事务有点无关。您当然可以在准备好的语句中使用事务并且必须考虑到这一点,因为嵌套事务在 MySQL.
中是不可能的
谁能用好的例子向我解释 "TRANSACTION" 和 "transaction isolation levels"。我对在我的应用程序中使用它感到非常困惑。我在存储过程中做了很多 Insert/Update/Select 事务,所以请在这方面进行解释(也考虑自动提交)。我也在我的应用程序服务器上使用连接池。
谢谢。
这些不同的概念可以很好地结合在一起。事务是我每天使用的数据库中一个非常基本和重要的概念。您可以在此处阅读有关事务最重要的属性 ACID 的大量内容:http://en.wikipedia.org/wiki/ACID
但我会尝试用我自己的话给你一个概述:
事务可以看作是一组命令的组合。如果您 change/add/delete 事务中数据库中的任何内容,根据隔离级别,该事务之外的任何人都无法看到这些更改。如果您回滚事务(例如,如果发生错误),则根本不会对数据库应用任何更改。如果您以其他方式决定提交您的事务,事务中发生的所有事情都会立即执行。因此,作为一个好习惯,将每个逻辑操作组合在一个事务中是一个绝妙的主意。
自动提交则相反:每个 update/insert/delete 都 implicitly/directly 作为事务提交。所以它仍然可以看作是一个事务,但是你省略了它末尾的显式提交。
连接池只有在您确保只使用一个连接进行事务时才能工作。但通常你必须先从池中获取连接才能执行你的语句,所以这不是问题。
准备好的语句与事务有点无关。您当然可以在准备好的语句中使用事务并且必须考虑到这一点,因为嵌套事务在 MySQL.
中是不可能的