我正在使用Percona服务器(MySQL),目前正在开发一个网络桌面应用程序,其中包含多个使用该应用程序的用户。 我的应用程序数据库innodb有交易,但我在选择我必须使用的 交易 - 隔离 时遇到问题,我的应用程序是敏感的,因为它有财务记录。 那么,有人可以帮我决定我必须使用哪个事务隔离?
答案 0 :(得分:5)
@deceze和@zerkms是正确的 - 确定最佳事务隔离的数据性质不是。这是您的应用程序及其查询的本质。您甚至可能会发现在同一个应用程序中使用两个隔离级别的情况。
可重复读取事务确保您可以在给定事务期间多次查询相同数据,并且您的查询将返回不变的数据 - 即使数据被其他会话更改与此同时。在会话开始新事务之前,您的会话将不会看到这些更改,即使它们已提交。例如,这对于所有数据的逻辑转储很有用。此外,复杂的报告需要多个步骤,您需要多次读取相同的表格。
Read-committed 还允许其他会话同时更改数据,但您的事务将始终看到最新提交的数据状态。因此,即使在同一事务中,相同的查询也可以返回不同的(更新的)结果。这很有用,因为它为了长时间运行的事务而减少了数据库保留旧行版本的需要。
还有可序列化的和读取未提交的隔离级别,但这些级别很少使用。