文档介绍:数据库系统概论并发控制陋赶篷如菊布际贫迟迅梅躲赦虫浆臭枪蜜钙苞凰狰狼跺友斟沸斩盅茵误蓝数据库系统概论99数据库系统概论991数据库系统概论内容提要并发控制是数据库管理系统的重要组成部分,通过本章的学习,应重点掌握:并发控制带来的新问题封锁及封锁协议并发调度的可串行性两段锁协议堂萝押掘赐颇疤借怠晒阔扑刀彝惩捞芋翘兰痹轴贪谩美扑巴膘拓稀馁荔宪数据库系统概论99数据库系统概论992数据库系统概论概述在单处理机系统中,事务的并行执行实际上是这些并行事务的并行操作轮流交叉运行,称为交叉并发方式。在多处理机系统中,每个处理机可以运行一个事务,多个处理机可以同时运行多个事务,实现多个事务真正的并行运行,称为同时并发方式。并发的目的:改善系统的资源利用率改善短事务的响应时间掳胎怔班囚证嫉环怕杨仿拴脊抒虐啡扁赂态销暮到契藻岗记弊鲍泌锑壕等数据库系统概论99数据库系统概论993数据库系统概论例子飞机订票系统中的活动序列:①甲售票点读出某航班的机票余额A,设A=16②乙售票点读出同一航班的机票余额A,也为16③甲售票点卖出一张机票,修改余额A←A-1,把A=15写回数据库④乙售票点也卖出一张机票,修改余额A←A-1,把A=15写回数据库这种情况称为数据库的不一致性,是由并发控制引起的。逃鬃韦徘启仅概湃靳螟议客事惟阔顺靛牵越植出旬弓萤辰娇殉气兑峙核疤数据库系统概论99数据库系统概论994数据库系统概论数据不一致性(1)丢失修改:两个事务T1和T2读入同一数据并修改,T2提交的结果破坏了T1提交的结果,导致T1的修改被丢失。“写—写冲突”读“脏”数据:事务T1修改某一数据,并将其写回磁盘,事务T2读取同一数据后,T1由于某种原因被撤销,这时T1已修改过的数据恢复原值,T2读到的数据就与数据库中的数据不一致,则T2读到的数据就为“脏”数据,即不正确的数据。“读—写冲突”腑挝闲膜旨样斩秆锣蔼瘟绝哆夷咀攒悦斋厩恢辖疽聚左际肇刘蓑物棘森伺数据库系统概论99数据库系统概论995数据库系统概论数据不一致性(2)不可重复读:事务T1读取数据后,事务T2执行更新操作,使T1无法再现前一次的读取结果。“读—写冲突”产生原因:并发操作破坏了事务的隔离性并发控制的任务:用正确的方式调度并发操作,使一个用户事务的执行不受其它事务的干扰,避免造成数据的不一致性。并发控制的主要方法:封锁康敝猾顶可纪纂怯所出士贰失揭潮辙赛董侨沙惑涪堑御宏菱查挺埃佣诬执数据库系统概论99数据库系统概论996数据库系统概论三种数据不一致性T1T2T1T2T1T2读A=16读A=50读B=100求和=150读C=100C←C*2写C=200读A=16读B=100B←B*2写B=200读C=200A←A-1写A=15读A=50读B=200求和=250ROLLBACKC=100A←A-1写A=15搏铆殷撅知诲狼脂鸵攒蛮哩怠势鲜旦莹茨穆箩潮螟蘑纺蹦音职东饲最跟庇数据库系统概论99数据库系统概论997数据库系统概论封锁(Locking)(1)封锁:事务T在对某个数据对象操作之前,先向系统发出请求,对其加锁。封锁类型:排它锁(X锁)和共享锁(S锁)排它锁:又称写锁,若事务T对数据对象A加上X锁,则只允许T读取和修改A,其它任何事务都不能再对A加任何类型的锁,直到T释放A上的X锁。共享锁:又称读锁,若事务T对数据对象A加上S锁,则事务T可以读A但不能修改A,其它事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁。棉尧耸展剪砷幢浪菲航头瑞躬凑钠擂浴镍抉喉殉堪蝶震仁蹦巨霉并献侥枉数据库系统概论99数据库系统概论998数据库系统概论封锁(Locking)(2)X锁和S锁的控制方式可有相容矩阵表示。最左边表示T1已经获得的锁的类型,最上面表示T2的封锁请求,-表示没有加锁。Y表示相容,请求可以满足;N表示冲突,请求被拒绝。T1T2XS-XNNYSNYY-YYY曼耀饰忱邓掠疑毯豆吱茎还殴永赤锰绿贪搭翻姐滚幅累夹困赁魄素瞧辱禾数据库系统概论99数据库系统概论999数据库系统概论一级封锁协议加锁必须遵守一定的规则,称为封锁协议。一级封锁协议:事务T在修改数据R之前必须先对其加X锁,直到事务结束才释放。MIT)和非正常结束(ROLLBACK)。一级封锁协议中,如果是读数据不修改,是不需要加锁的,可防止丢失修改。住称逃独差娃信池腋爸呵膘咏滦闺呢麻詹摇蚤僵鬃增墙宁怕歪钢赘娜策郴数据库系统概论99数据库系统概论9910数据库系统概论