数据库的事务

数据库事务有4个属性

AICD

A:原子性,要嘛都成功要嘛都失败Atomicity;

C一致性,事务执行前、后数据库状态均一致 Consistency;

I隔离性,事务提交前,数据对其他用户不可见 Isolation

D持久性一旦事务成功,将进行永久的变更,记录与redo日志Durability;

 

数据库的隔离级别有4种

一种read uncommitted 事务未提交,其他的session 读取相同数据读取的是未提交的数据

一种read committed 事务需要提交其他session 才能读到修改后的数据

一种是 repeatable read 当前session 只会读到自己之前的数据

一种serializable 更新操作会加锁方式其他session 处理同一条数据

 

 

1、事务属性AICD:

原子性(Atomicity):整体不可分割性,要么全做要不全不做;一致性(Consistency) :事务执行前、后数据库状态均一致;隔离性(Isolation) :在事务未提交前,它操作的数据,对其它用户不可见(从其他session读取的数据还是commit之前的数据状态);持久性(Durability):一旦事务成功,将进行永久的变更,记录与redo日志;

2、并发与数据读写控制:

当多个会话session同时访问(操作)相同的数据时,将会出现一些超出预期的结果,包括但不限于:

脏读 (Dirty reads) : 当第二个事务select其它事务正在(update)的行时, 第二个事务正在读取的数据还没被确认且数据可能由更新此行的事务所更改,如下图所示:

不可重复度(Non-repeatable reads) :在一个事务过程中,同样的数据被2次读取,并得到不同的值,成为不可重复读,示例如下:

 

幻读 (Phantom reads):在一个事务中,同样的SQL执行两次时,得到的结果集不同;

3、事务隔离级别:

 

不同级别可能存在的并发问题
不同dbzhi支持的事务级别

4、分布式事务

发生在多台数据库之间的事务;通过dblink方式进行事务处理;分布式事务比单机事务要复杂的多;可能的风险:软件,服务器,网络等...不能保证数据一致性,如下:

分布式环境下,数据一致性协议:3PC :通过3个阶段提交方式防止因网络或者容错机制待优导致的脑裂、数据不一致等情况,对应还有2PC

Paxos:N个进程中大多数(超过一半) 进程都认为v是同一个值,例如c,那么我们称v被决定为c

 

CAP理论: 在一个分布式系统中, Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可得兼

 

posted @   八英里  阅读(172)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示