![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据库
文章平均质量分 57
Dream_Ryoma
这个作者很懒,什么都没留下…
展开
-
并发控制一(概述)
数据库是一个共享资源,可以供多个用户使用。允许多个用户同时使用同一个数据库的数据库系统称为多用户数据库系统。例如飞机订票数据库系统、银行数据库系统等都是多用户数据库系统。在这样的系统中,在同一时刻并发运行的事务数可达数百上千个。事务可以一个一个地串行执行,即每个时刻只有一个事务运行,其他事务必须等到这个事务结束以后方能运行。事务在执行过程中需要不同的资源,有时需要CPU,有时需要存取数据库,有...原创 2018-08-22 16:00:03 · 632 阅读 · 0 评论 -
并发控制二(封锁)
封锁是实现并发控制的一个非常重要的技术。所谓封锁就是事务T在对某个数据对象例如表、记录等操作之前,先向系统发出请求,对其加锁。加锁后事务T就对该数据对象有了一定的控制,在事务T释放它的锁之前,其他事务不能更新此数据对象。确切的控制由封锁的类型决定。基本的封锁类型有两种:排他锁(exclusive locks,X锁)和共享锁(share locks,S锁)。排他锁又称为写锁。若事务T对数据对...原创 2018-08-22 16:17:41 · 858 阅读 · 0 评论 -
并发控制三(封锁协议)
在运用排他锁和共享锁这两种基本封锁对数据对象加锁时,还需要约定一些规则。如:何时申请X锁或S锁、持锁时间、何时释放等,这些规则被称为封锁协议。对封锁方式指定不同的规则,就形成了各种不同的封锁协议。常用的是三级封锁协议,三级封锁协议在不同程度上解决了并发操作的不正确调度带来的丢失修改、不可重复读和读“脏”数据等不一致性问题。(1)一级封锁协议:事务T在修改数据R之前必须先对其加X锁,直到事务...原创 2018-08-22 16:56:40 · 1180 阅读 · 1 评论 -
并发控制四(活锁和死锁)
和操作系统一样,封锁的方法可能引起活锁和死锁等问题。活锁如果事务T1封锁了数据R,事务T2又请求封锁R,于是T2等待;T3也请求封锁R,当T1释放了R上的封锁之后系统首先批准了T3的请求,T2仍然等待;然后T4又请求封锁R,当T3释放了R之后系统又批准了T4的请求,T2可能永远都处于等待,这就是活锁。避免活锁的简单方法是采用先来先服务的策略。当多个事务请求封锁统一数据对象时,封锁子系统按...原创 2018-08-22 18:10:27 · 1091 阅读 · 0 评论 -
并发控制五(封锁的粒度)
封锁对象的大小称为封锁粒度。封锁对象可以是逻辑单元,也可以是物理单元。以关系数据库为例,封锁对象可以是这样一些逻辑单元:属性值、属性值的集合、元组、关系、索引项、整个索引直至整个数据库;也可以是这样一些物理单元:页(数据页或索引页)、物理记录等。封锁粒度与系统的并发度和并发控制的开销密切相关。直观地看,封锁的粒度越大,数据库所能够封锁的数据单元就越少,并发度就越小,系统开销也越小;反之,封锁的...原创 2018-08-23 09:10:35 · 3657 阅读 · 1 评论 -
并发控制六(其他并发控制机制)
并发控制的方法除了封锁技术以外,还有时间戳方法、乐观控制法和多版本并发控制等。时间戳方法给每一个事务盖上一个时标,即事务开始执行的时间。每个事务具有唯一的时间戳,并按照这个时间戳来解决事务的冲突操作。如果发生冲突操作,就回滚具有较早时间戳的事务,以保证其他事务的正常执行。被回滚的事务被赋予新的时间戳从头开始执行。乐观控制法认为事务执行时很少发生冲突,因此不对事务进行特殊的管制,而是让它...原创 2018-08-23 10:27:58 · 855 阅读 · 0 评论