好吧,我得到了一个任务 [迷你项目],其中最重要的问题之一是数据库一致性。该项目是一个 Web 应用程序,允许多个用户访问和使用它。我可以期待并发查询和更新请求到一小组表中,其中一些表相互连接(使用外键)。
为了保持数据库尽可能一致,我们被建议使用隔离级别。在阅读了一些(可能还不够?)关于它们的信息后,我认为对我来说最有用的是 READ COMMITTED 和 SERIALIZABLE。
我可以将查询分为三种:
- 获取查询
- 更新查询
- 组合
对于第一个,我当然需要数据是一致的,我不想呈现脏数据,或者未提交的数据等。因此,我想对这些查询使用 READ COMMITTED。对于更新查询,我认为使用 SERIALIZABLE 将是最好的选择,但是在阅读了一下之后,我发现自己迷路了。在组合中,我可能不得不从数据库中读取数据,并决定我是否需要/可以更新,这 2-3 个调用将在同一个事务下。
想征求一些建议,在这些查询选项中使用哪种隔离级别。我是否应该为每种类型考虑不同的隔离级别?还是坚持一个?
我正在使用 MySQL 5.1.53,以及 MySQL JDBC 3.1.14 驱动程序(要求...没有选择 JDBC 版本)
非常感谢您的见解!
编辑:
我决定我将使用REPEATABLE READ,这似乎是默认级别。我不确定这是否是正确的方法,但我想REPEATABLE READ以及LOCK IN SHARE MODE和FOR UPDATE查询应该可以正常工作......
你们有什么感想?