数据库事务隔离级别定义

数据库事务隔离级别定义

  • Read Uncommitted(可以读到未提交数据):
    • 如果一个事务已经开始读取数据,但是未提交,则另外一个事务无论是读还是写,都允许继续访问该数据;
    • 如果一个事务已经开始写数据,但是未提交,则另外一个事不允许同时进行写操作,但允许事务读此数据。

事务1(早发起,但仍未提交)

事务2(晚发起,但针对同一块数据)

读 →

读 √

写 √

写 →

读 √

写 ×


  • Read Committed(只能读到已提交数据):
    • 如果一个事务已经开始读取数据,但是未提交,则另外一个事务可以读该数据,也可以写该数据;
    • 如果一个事务已经开始写数据,但是未提交,则禁止其他事务写数据和读取该数据。

事务1(早发起,但仍未提交)

事务2(晚发起,但针对同一块数据)

读 →

读 √

写 √

写 →

读 ×

写 ×

 

  • Repeatable Read(可重复读取数据):
    • 如果一个事务已经开始读取数据,但是未提交,则另外的事务不允许同时写该数据,但允许读该数据;
    • 如果一个事务已经开始写数据,但是未提交,则禁止其他事务读或写该数据。

事务1(早发起,但仍未提交)

事务2(晚发起,但针对同一块数据)

读 →

读 √

写 ×

写 →

读 ×

写 ×

 

  • Serializable(序列化):
    • 事务只能一个接着一个地执行,不能并发执行。

事务1(早发起,但仍未提交)

事务2(晚发起,但针对同一块数据)

读 →

读 ×

写 ×

写 →

读 ×

写 ×

 

隔离级别越高,越能保证数据的完整性和一致性,但是对并发性能的影响也越大。

对于多数应用程序,可以优先考虑把数据库系统的隔离级别设为Read Committed

它能够避免脏读取,而且具有较好的并发性能。

提高隔离级别会导致并发问题,在可能出现这类问题的场合,可以由应用程序采用悲观锁或乐观锁来控制。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值