18143453325 在线咨询 在线咨询
18143453325 在线咨询
所在位置: 首页 > 营销资讯 > 信息时代 > 并发控制(数据库)

并发控制(数据库)

时间:2022-12-11 08:30:01 | 来源:信息时代

时间:2022-12-11 08:30:01 来源:信息时代

    并发控制 : 在数据库管理系统层面上,多个用户程序(事务)之间的协调和控制。
并发(concurrency)是指多个程序交替地在一个处理器上执行。如果对这些程序的执行不加控制,会造成意想不到的结果。这种控制就称为并发控制。
在冯·诺依曼结构计算机上,指令在CPU中是一条一条串行执行的。如果每次只有一个程序在计算机上执行,就没有并发控制的问题。但是,如果有多个程序并发地在计算机上交错执行,则必须实行并发控制以保证正确性。
数据库必须是客观世界的“正确的”反映。但我们不可能随时随地将数据库记载的信息与客观世界对比,看它们之间是否是一致的。所幸的是,人们发现只要规范了对数据库的操作行为,就可以保证数据库的正确性。为此,引入了事务(transaction)的概念,事务是指一个数据库的操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位,它的执行能够保证数据库从一个正确的状态转移到另一个正确的状态。可见,事务是一个语义概念,它的语义上的正确性(事务的执行一定能保证数据库从一个正确的状态转移到另一个正确的状态)是由数据库应用的设计开发人员来保证的。
在SQL语言中,定义事务开始和结束的语句有三条:
BEGIN TRANSACTION
COMMIT
ROLLBACK
其中,BEGIN TRANSACTION是一个事务开始的标志,COMMIT是事务结束的标志,意思是系统要将所有该事务的操作真正作用到磁盘上的物理数据库上去。ROLLBACK是一个例外处理语句,表示回滚操作(也称回退操作),即在事务运行的过程中发生了某些故障,事务不能继续执行,系统需要将该事务中所有已经发生的对数据库的操作的影响全部撤消,滚回到事务开始的状态。
一个事务要满足如下的四个性质(称为ACID性质):
(1)原子性(atomicity): 构成事务的全部操作要么全部正确地执行要么根本没有执行。
(2) 一致性(consistency): 事务的执行应保持数据库描述真实的状态。
(3)隔离性(isolation): 每个事务都感觉不到系统中有其他事务在并发执行。
(4)持久性(durability): 一个事务成功完成后,它对数据库的改变必须是永久的,即使系统出现故障时也是这样。
并发控制是事务管理器的最重要的功能。它确保数据库在多个用户同时访问共享数据库的时候,仍然能够“正确高效”地执行。按照事务的定义,在没有其他事务干扰的情况下,一个事务的执行应能保证数据库仍处于一致性的状态。按照一致性的定义,多个事务任何串行的执行结果都是合理的。假定有m个并发执行的事务,每个事务平均有n个操作,那么可能的串行调度的数量有(m!)个,这些调度都是正确的,尽管实际情况下,最多只有一种情况会发生。但是,随机调度数量级是O(mmn),远远大于m! 这个数目。在这些随机调度中,哪些是正确的呢?为此,需要给出事务并发执行(调度)的正确性判定标准——可串行性(serializability)。多个事务的一个并发调度是正确的,当且仅当其结果与按某一串行调度的结果是相同的,称这个调度是可串行化的(serializable)。
可串行性可以作为判定并发事务调度正确性的准则。虽然这个定义不能直接用于实际判定一个调度是否正确(因为不可能计算出全部可能的串行调度的结果),但是,毕竟我们有了一个判定的准则。理论上讲,一个事务执行的时候,禁止其他事务执行的调度肯定是可串行化的调度,但是,这样的调度策略实际上是不可取的,因为,它实际上就是禁止事务的并发执行。
我们需要设计一些调度策略并证明这些策略是正确的,也就是由这些调度策略产生的调度是满足可串行性准则的,在此基础上要尽可能地提高执行的并发度,提高系统的效率。人们已经发明了多种调度方法来达到上述目的。这些方法包括,基于封锁的调度方法,基于时间戳的方法,基于检验的方法(乐观的方法),以及多版本的方法等。
另外,需要说明的是,并发(concurrency)与并行(parallel)是两个紧密相关但是不同的概念。并行的意思是指一个程序在多个处理器上同时执行。而并发是指多个程序在单个处理器上交替执行。

74
73
25
news

版权所有© 亿企邦 1997-2022 保留一切法律许可权利。

为了最佳展示效果,本站不支持IE9及以下版本的浏览器,建议您使用谷歌Chrome浏览器。 点击下载Chrome浏览器
关闭