数据库并发控制

数据库并发控制是为了解决多用户同时访问数据库可能导致的数据不一致问题,如丢失更新、不可重复读和脏读等。并发控制通过封锁、时间戳、乐观控制和多版本并发控制等技术确保事务的隔离性和一致性。并行处理则通过将任务分解为子任务,提高系统吞吐量和减少响应时间。两者在数据库系统中协同工作,以实现高效且可靠的多用户访问。
摘要由CSDN通过智能技术生成

数据库是一个资源库,可以供多个用户使用. 允许多个用户同时使用同一个数据库的数据库系统称为多用户数据库系统.
例如飞机订票数据库系统、银行数据库系统. 在多用户数据库系统中同一个时刻会有很多个并发运行的事务.

为什么数据库系统要采用并发控制?

1.提高吞吐量和资源利用率: 一个事务由多个步骤组成,一些步骤涉及I/O活动,另一些涉及CPU活动。计算机系统中CPU与磁盘可以并行运作。 因此,I/O活动可以与CPU处理并行执行。利用CPU与I/O系统的并行性,多个事务可以并行执行。当一个事务在一个磁盘上
进行读写时,另一个事务可在CPU上运行,同时第三个事务由可以在另一个磁盘上进行读写。从而系统的吞吐量(throughout)增加,
即给定时间内执行的事务数增加。相应的处理器与磁盘利用率也提高;处理器与磁盘空闲时间较少。

2.减少等待时间: 系统中可能运行着各种各样的事务,短事务,长事务。如果事务串行执行,短事务可能要等待它前面的长事务完成,这可能导致难以预测的延迟。
如果哥哥事务是针对数据库的不同部分进行操作,事务并发执行会更好,各个事务可以共享CPU周期与磁盘存取。并发执行可以减少不可预测的事务延迟执行。
并行执行也可以减少平均响应时间(average response time),即一个事务从开始到完成所需的平均时间。

世界是矛盾的。串行方式工作效率低,所以人们想到了并发方式,但是所有的并发都会在某种情况下带来问题。也就是所谓的并发问题。例如,在数据库中有第一类丢失更新问题,脏读问题、不可重复读问题、虚读问题、第二类丢失更新问题。所以,需要我们在开发程序的时候需要处理某些并发带来的问题。也就是说使用并发操作,但是不能有问题。通常采用总体并发,局部串行的方式。

并发和并行的区别

并发(concurrent)和并行(parallel)这两个概念,在数据库系统的资料中经常出现,然而有关它们的定义和区别却没有明确的说法。这里,我们根据这两个概念在资料中的使用,对它们的不同做一个说明。
并发是指多个任务的同时执行,任务与任务之间没有联系。由于数据库系统要同时为许多用户提供服务,每个用户都可以发出自己的访问请求,一个请求就是一个任务。在一个时间点,数据库系统可能要同时处理多个任务。因此,数据库系统一定要具备并发处理能力。
并行是指将一个任务划分为多个子任务,这些子任务同时执行。在所有子任务处理完成后,将它们的结果进行合并,就得到该任务的最终处理结果。在数据库系统中,如果要执行一个大的数据查询,为了提高速度、降低响应时间,用户可以通过系统配置或者在命令中,要求对该大数据量查询进行并行处理,将该查询划分成多个子查询。这些子查询同时执行,最后系统将所有子查询的处理结果进行合并,作为该查询处理的最终结果。现有的大型数据库系统都支持并行处理。
需要说明的是,并发和并行与数据库系统采用多进程还是多线程体系结构无关。对采用多进程结构的数据库系统,所有的任务、子任务通过进程来处理;而对采用多线程结构的数据库系统,这些工作是由线程来完成。
数据库系统的并发控制,涉及到任务的调度、数据的一致性及可靠性等,而数据库系统的并行处理,主要涉及任务的处理速度、系统性能等方面。

并发控制概述

事务是并发控制的基本单位. 数据库的并发操作可能会破坏食物的ACID特性. 为了保证食物的隔离性和一致性, 所以数据库管理系统需要对并发操作进行正确的调度.

并发操作带来的数据不一致性(问题)

1.丢失修改过的数据
2.不可重复读
3.读“脏”数据

1.丢失修改过的数据

事务T1和事物T2 同时并发读入一个数据num = 0, T1把num + 1 后num 为 1, T2 把num也加1, 原则上说num应该是2, 但是!!! num 还是1, 因为T2 和T1读入的num 都是0.

2.不可重复读

不可重复是指事物T1读取数据后,事务T2执行更新操作,使得T1无法再现前一次读取结果,(结果发生了改变,增加了,减少了,或者是丢失了)
2.1事务T1 读取某一数据后,事务T2对其进行了修改,当事务T1再次读取该数据时,得到的与前一次不同的值。
2.2事务T1安一定条件从数据库中读取了某些数据记录后,事务T2删除了其中部分记录,当T1再次按相同条件读取数据时,发现原来的数据中的某些记录消失了。
2.3事务T1按一定条件从数据库中读取某些数据记录后,事务T2插入了一些记录,当T1再次按相同条件读取数据时,发现数据多了一些记录。

3.读“脏”数据

读“脏”数据是指事物T1修改某一数据并将其写回磁盘,事务T2读取同一数据后,T1 由于某种原因被撤销, 这是T1修改过的数据又恢复了原来的值,但是T2之前已经读了之前修改完但是没撤销的数据, 这就导致T2读到的数据和数据库中的数据不一致。 我们称T2读取到的数据为“脏”数据。

产生上述三种问题的主要原因是并发操作破坏了事务的隔离性。 并发控制机制就是要用正确的方式调度并发操作,使一个用户事务的执行不受其他事务的干扰。 并发控制的主要技术包括:封锁(locking)、时间戳(timestamp)、乐观控制发(optimistic scheduler)和多版本并发控制(multi-version concurrency control, MVCC)等

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘璐菲

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值