数据库并发控制技术

简介: 数据库并发控制技术

事务是并发控制的基本单位。并发是指多个事务同时执行,这样就有可能破坏事务的ACID特性,DBMS的并发控制技术就是对并发操作进行正确调度以保证事务的隔离性和一致性。

举个列子,A,B同时买票:二者同时读到票共16张,A买了票,票减一为15;B买了票,但由于先前读的票数是16,再执行票减一为15。

实质上这样A进行的操作就被覆盖了,与实际不符。

上面数据不一致的原因主要在于并发操作破坏了数据的隔离性,并发控制就是要用正确的方式调度并发操作,保证事务隔离性从而保证一致性,主要是通过封锁技术。


封锁


封锁是指某事务处理某数据时进行加锁,在该事务未释放锁时其他事务不可对该数据进行更新。

基本封锁类型有:

排他锁(X/写锁):事务加上X锁后未释放任何事务不可再加锁。

共享锁(S/读锁):事务加上S锁后未释放其他事务最多只能加S锁。

以上两种锁可以保证隔离性,但也会引发一些问题,比如活锁和死锁。

活锁是指一个事务对一个数据的封锁申请一直在等待(因为其他事务也在申请),这只需要按先来先服务的策略即可。

死锁就比较麻烦,产生死锁的原因是多个事务都已经封锁了一些数据对象,然后又同时请求为其他事务封锁的数据对象加锁,从而出现死等待。这样问题一般通过预防或者解除等操作解决。预防一般有一次封锁法和顺序封锁法,实际上,数据库用的更多是诊断和解除的操作。诊断有超时法(通过设定时间判断)和等待图法(通过回路判断),解除代价最小的是撤销。


并发调度的可串行性


我们会有疑问:

什么样的并发调度是正确的?

可串行化的调度是正确的。

什么样的调度又是可串行化的调度呢?

充分条件是指其可冲突可串行化调度。

那什么是冲突可串行化调度?

首先明白,冲突操作是指不同事务对同一个数据的读写和写写操作,如果一个调度在保证冲突操作次序不变的条件下交换两个事务的不冲突操作得另一个调度,若得的调度结果一致,认为其为冲突可串行化调度,该调度也是可串行化调度。

介绍完了这些,可以了解通过在加锁上面加一些封锁协议,可以保证可串行化调度,比如两段锁协议(选均加锁,再均解锁),不过注意,这也是充分条件。

相关文章
|
1天前
|
Java 关系型数据库 MySQL
"解锁Java Web传奇之旅:从JDK1.8到Tomcat,再到MariaDB,一场跨越数据库的冒险安装盛宴,挑战你的技术极限!"
【8月更文挑战第19天】在Linux上搭建Java Web应用环境,需安装JDK 1.8、Tomcat及MariaDB。本指南详述了使用apt-get安装OpenJDK 1.8的方法,并验证其版本。接着下载与解压Tomcat至`/usr/local/`目录,并启动服务。最后,通过apt-get安装MariaDB,设置基本安全配置。完成这些步骤后,即可验证各组件的状态,为部署Java Web应用打下基础。
7 1
|
18天前
|
存储 测试技术 数据处理
【计算机三级数据库技术】第2章 信息系统需求分析完整知识体系--附思维导图
本文详细介绍了信息系统需求分析的知识体系,包括需求分析的概念和意义、需求获取的方法、需求分析的过程,以及需求分析方法,如DFD数据流图、IDEF0、UML等。文章通过结构化分析和功能建模方法,帮助读者理解如何标识问题、建立需求模型、描述和确认需求,并比较了DFD与IDEF0两种方法的异同,同时提供了思维导图以辅助理解。
45 12
|
18天前
|
存储 监控 安全
【计算机三级数据库技术】第1章 数据库应用系统生命周期下知识体系--附思维导图
本文提供了数据库应用系统生命周期下的知识体系概述,并附有思维导图,帮助读者更好地理解数据库技术及应用的第一章内容,涵盖了数据库系统的规划、分析、设计、实现、测试、运行和维护等各个阶段。
34 12
|
14天前
|
存储 关系型数据库 数据库
数据库技术深度解析与未来趋势展望
数据库,简而言之,就是存储数据的仓库。它可以按照一定的规则存储和管理数据,提供数据的增删改查(CRUD)等基本操作。数据库不仅限于存储功能,还具备数据的共享性、持久性和安全性等特点。通过数据库管理系统(DBMS),用户可以方便地对数据进行管理和访问。
44 3
|
16天前
|
NoSQL 大数据 数据处理
现代数据库技术的演进与挑战
传统的数据库管理系统在处理大数据和实时应用方面面临挑战。本文探讨了现代数据库技术如何应对这些挑战,重点关注了分布式数据库、NoSQL 数据库和内存数据库等新兴技术的发展与应用。
|
18天前
|
SQL 数据库
【计算机三级数据库技术】第6章 高级数据查询--附思维导图
提供了SQL查询的高级概念和应用,包括一般数据查询(如使用TOP、CASE和INTO关键字)、查询结构的并、交、差运算(UNION、INTERSECT、EXCEPT),相关子查询,替代子查询和派生表,以及开窗函数和公用表表达式(CTE)。文中还包含了思维导图,帮助读者更好地理解SELECT单表查询语句的要点。
15 4
|
18天前
|
数据可视化 架构师 测试技术
【计算机三级数据库技术】第5章 UML与数据库应用系统--附思维导图
本文提供了UML在数据库应用系统设计中的应用概览,包括UML建模框架、视图、四大图的介绍,以及如何使用活动图、用例图、类图、顺序图等UML图来表达业务流程、系统需求和内部结构,最后还涉及了系统微观和宏观设计的UML表达方式。
25 4
|
16天前
|
人工智能 NoSQL 关系型数据库
现代数据库技术发展趋势与应用前景探析
在当今数字化时代,数据库技术正日益成为信息管理与应用开发的核心。本文从现代数据库技术的发展趋势出发,探讨了关系型数据库、NoSQL数据库以及新兴的分布式数据库技术,分析它们在各自领域的优势与挑战。结合实际应用场景,探索现代数据库技术的应用前景,为技术从业者提供思路与参考。
|
18天前
|
存储 监控 数据挖掘
【计算机三级数据库技术】第14章 数据仓库与数据挖掘-
文章概述了数据仓库和数据挖掘技术的基本概念、决策支持系统的发展、数据仓库的设计与建造、运行与维护,以及联机分析处理(OLAP)与多维数据模型和数据挖掘技术的步骤及常见任务。
19 3
|
17天前
|
存储 负载均衡 中间件
构建可扩展的分布式数据库:技术策略与实践
【8月更文挑战第3天】构建可扩展的分布式数据库是一个复杂而具有挑战性的任务。通过采用数据分片、复制与一致性模型、分布式事务管理和负载均衡与自动扩展等关键技术策略,并合理设计节点、架构模式和网络拓扑等关键组件,可以构建出高可用性、高性能和可扩展的分布式数据库系统。然而,在实际应用中还需要注意解决数据一致性、故障恢复与容错性以及分布式事务的复杂性等挑战。随着技术的不断发展和创新,相信分布式数据库系统将在未来发挥更加重要的作用。