数据库第十章(数据库恢复技术)十一章(并发控制)

目录

1.事务

2.并发控制


1.事务

事务的特点:ACID

原子性   atom

一致性   consistent

隔离性   isolation

持久性   durable

故障的种类

1.事务内部故障

        措施:采取redo重做和undo撤销技术

2.系统故障DBMS

        措施:重启

3.介质故障

        硬件损坏

4.计算机病毒

 

数据恢复技术

数据转储:

        对执行失败的数据重新执行一遍

日志文件:

        记录事务对数据的更改操作的文件

恢复的策略

事务故障:那么就撤销之前所有的操作

系统故障:还没执行完的事务undo,丢失的事务redo

介质故障的恢复:

系统故障:重装数据库,重做已经完成的事务数据库第十章(数据库恢复技术)十一章(并发控制)_第1张图片

 系统故障的话,只有故障的时候还在执行着的撤销,其他都是重做

2.并发控制

并发带来的问题

问题:

1.丢失修改

我修改的东西丢失了,我把int a=3,a++ ,当同时执行多次的时候就会出现丢失修改(执行了n次++实际上小于加了n次),因为a++位三部,第一步读取的时候可能读的是老数据

2.脏读

        读的是已经撤回的无效的数据

        PDD商家600元iphon13 店员打错少打一个0,上架了,立刻发现撤回。

        这时候某位消费者趁机下了10单,6000元,这就是脏读,读了无效的数据

3.不可重复读 

        在同一个事务中,连续两次读到的数据是不一致的

 

并发解决方案

引入锁

1.排他锁:

写锁,X锁    (加写锁的时候其他人不可以读,写)

2.共享锁

读锁 ,S锁    (加读锁的话其他人只能读)

封锁协议

一级封锁协议:

修改时候必须加X锁(排他锁),直到结束

二级封锁协议

读的时候必须加共享锁(S锁),读完结束

三级封锁协议

读的时候必须加S锁,直到结束

一级封锁协议解决,修改丢失

二级封锁协议解决脏读

二级封锁协议解决不可重复读

死锁和活锁

 死锁:两个锁,你等我,我等你,相互谦让,咱俩卡在这

活锁:我等你,你做完了我开始,如果前者一直执行,可能一直等待

可串行性:

并发调动的某一次的结果与串行的结果一致

可串行性是正确调度的准则

两段锁协议
先上锁的先解锁

数据库第十章(数据库恢复技术)十一章(并发控制)_第2张图片

 

封锁的粒度

封锁的粒度大并发就小,开销小。成反比

 

你可能感兴趣的:(数据库,mysql,sql)