数据科学每日总结--Day10--数据库

数据库

事务调度

定义:事务指的就是用户对数据库的操作。而事务调度主要指的是在实际应用中,多个用户可能同时对数据库进行操作,产生多个事务并发执行。如果不合理调度,可能会出现数据冲突、丢失更新、脏读等问题,影响数据的正确性

ACID属性:

  • 原子性(Atomocity):事务中的所有操作要么全部完成,要么全部不做,不会出现部分完成的情况。比如银行转账,A账户扣钱、B账户加钱,这两个操作要么都成功,要么都失败,不能只完成其中一个。

  • 一致性(Consistency):事务执行前后,数据库都处于一致的状态。事务不能破坏数据库的完整性约束。例如转账后,账户总金额不变,数据不会出现错误或违反约束的情况。

  • 隔离性(Isolation):并发执行多个事务时,各事务之间互不影响,每个事务的中间状态对其他事务不可见。比如,两个用户同时转账,彼此的操作不会互相干扰,最终结果和串行执行一样。

  • 持久性(Durability):事务一旦提交,对数据库的修改就是永久性的,即使系统故障也不会丢失。以转账为例,转账成功后,即使断电或系统崩溃,数据也不会回滚或丢失。

冲突

在事务调度中,冲突指的是两个操作(通常属于不同事务)在同一个数据项上,且至少有一个是写操作时,它们的执行顺序会影响最终结果。

常见的冲突类型:

  • 读-写冲突(RW):一个事务读,另一个事务写同一数据项。

  • 写-读冲突(WR):一个事务写,另一个事务读同一数据项。

  • 写-写冲突(WW):两个事务都写同一数据项。

依赖

依赖是指事务之间由于操作顺序而形成的先后关系。比如,事务T1的某个操作必须在事务T2的某个操作之前执行,否则会影响结果,这就是依赖关系。 依赖通常由冲突产生,如果两个操作冲突,为了保证正确性,必须规定它们的执行顺序,这就形成了依赖。

冲突可串行化

一个调度是冲突可串行化的,指的就是它可以通过交换非冲突操作的顺序,变换成某个串行调度(即所有事务一个一个顺序执行),且结果一致。 一般来说,判断的依据是将所有的冲突指出来,并且写下事务之间的依赖关系,如果事务的依赖关系形成了一个环,即A依赖于B,C依赖于A,B依赖于C,则证明不是冲突可串行化的

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值