SQL Server 数据库事务模拟器

事务隔离级别

隔离级别说明:

  • 读未提交:最低的隔离级别,允许脏读。一个事务可以读取另一个未提交事务的数据。
  • 读已提交:防止脏读,但允许不可重复读和幻读。只能读取已经提交的数据。
  • 可重复读:防止脏读和不可重复读,但允许幻读。确保在事务期间读取的数据不会改变。
  • 串行化:最高的隔离级别,防止脏读、不可重复读和幻读。事务完全隔离执行。

当前隔离级别下的问题防护:

数据库表

账户表 (Accounts)
账号ID
用户名
余额
交易记录表 (Transactions)
交易ID
账号ID
金额
类型
状态

事务模拟 (事务1和事务2 中的更新账户均为向账户1中存入100元)

事务 1
事务 2
事务1状态
状态: 未开始
读取数据:
修改数据:
未开始
事务2状态
状态: 未开始
读取数据:
修改数据:
未开始
事务1
事务2
数据库
账户1: ¥1000
选择隔离级别,然后点击"开始事务"开始模拟。

并发问题演示

并发问题说明:

  • 脏读:当一个事务读取了另一个事务未提交的数据,如果该事务回滚,则读取的数据无效。
  • 不可重复读:当一个事务多次读取同一数据,但在这期间另一个事务修改了数据并提交,导致第一个事务两次读取的结果不一致。
  • 幻读:当一个事务第一次查询得到一些数据,但第二次同样的查询得到了不同的结果集(有新增或删除的行)。
  • 丢失更新:当两个事务同时读取然后更新相同的数据,后提交的事务会覆盖先提交事务的更新。