您好、欢迎来到现金彩票网!
当前位置:彩运网 > 封锁粒度 >

事务处理-ppt

发布时间:2019-05-21 05:40 来源:未知 编辑:admin

  1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。

  事务处理-锁 提纲 并发控制 基于锁的协议 两段锁协议 多粒度 封锁带来的问题 恢复 故障 日志 恢复 封锁的定义 封锁就是一个事务对某个数据对象加锁,取得对它一定的控制,限制其它事务对该数据对象使用 要访问一个数据项R,事务Ti必须先申请对R的封锁,如果R已经被事务Tj加了不相容的锁,则Ti需要等待,直至Tj释放它的封锁 封锁的类型 排它锁(X锁,eXclusive lock) 事务T对数据对象R加上X锁,则其它事务对R的任何封锁请求都不能成功,直至T释放R上的X锁;又称写锁 申请对R的排它锁:lock-X(R) 共享锁(S锁,Share lock) 事务T对数据对象R加上S锁,则其它事务对R的X锁请求不能成功,而对R的S锁请求可以成功;又称读锁 申请对R的共享锁: lock-S(R) 封锁的相容矩阵 两阶段封锁协议 Two-Phase Locking Protocol 两阶段封锁协议内容 增长阶段(Growing Phase) 事务可以获得锁,但不能释放锁 缩减阶段(Shrinking Phase) 事务可以释放锁,但不能获得锁 示例 lock-S(A)…lock-S(B)…lock-X(C)…unlock(A)… unlock(C)…unlock(B)遵从两段锁协议 lock-S(A)…unlock-S(A)…lock-S(B)…lock-X(C)… unlock(C)…unlock(B)不遵从两段锁协议 两阶段封锁协议 封锁点:事务获得其最后封锁的时间 事务调度等价于和它们的封锁点顺序一致的串行调度 令{T0, T1, …,Tn}是参与调度S的事务集,如果Ti对数据项R加A型锁,Tj对数据项R加B型锁,且comp(A, B)=false,则称Ti先于Tj,记作Ti?Tj,得到一个优先图 设ti是Ti的封锁点,若Ti?Tj,则titj 若{T0, T1, …,Tn}不可串行化,则在优先图中存在环,不妨设为T0?T1?…?Tn?T0,则t0t1…tnt0,矛盾 两阶段封锁协议 保持到事务结束时才释放的锁称作长锁 在事务中途就可以释放的锁称作短锁 严格两阶段封锁协议 强两阶段封锁协议 锁转换 带有锁转换的两段锁协议 增长阶段 可获得lock-S 可获得lock-X 可将lock-S升级为lock-X (upgrade) 缩减阶段 可释放lock-S 可释放lock-X 可将lock-X降级为lock-S (downgrade) 封锁方法 直接封锁 事务对它要进行存取的数据对象直接申请加锁 封锁方法 分层封锁 数据对象从大到小有一种层次关系,当封锁了外层数据对象时也就意味着同时封锁了它的所有内层数据对象 封锁粒度 封锁对象 属性值、属性值几何、元组、关系、某索引项、整个索引、整个数据库、物理页、块 封锁粒度大,则并发度低,封锁机构简单,开销小 封锁粒度小,则并发度高,封锁机构复杂,开销高 理想的情况是只封锁与规定的操作有关的的数据对象,这些数据对象称作事务的完整性相关域 SQL Server的封锁粒度 封锁粒度 意向(预约)封锁 在分层封锁中,封锁了上层节点就意味着封锁了所有内层节点。如果有事务T1对某元组加了S锁,而事务T2对该元组所在的关系加了X锁,因而隐含地X封锁了该元组,从而造成矛盾 引入意向锁I(Intend):当为某节点加上I锁,表明其某些内层节点已发生事实上的封锁,防止其它事务再去显式封锁该节点 I锁的实施是从封锁层次的根开始,依次占据路径上的所有节点,直至要真正进行显式封锁的节点的父节点为止 封锁粒度 相容矩阵 封锁粒度 IS锁 如果对一个数据对象加IS锁,表示它的后裔节点拟(意向)加S锁 例如,要对元组加S锁,则首先要对关系和数据库加IS锁 IX锁 如果对一个数据对象加IX锁,表示它的后裔节点拟(意向)加X锁 例如,要对元组加X锁,则首先要对关系和数据库加IX锁 封锁粒度 更精细的相容矩阵 封锁粒度 SIX锁 如果对一个数据对象加SIX锁,表示对它加S锁,再加IX锁 例如对某个表加SIX锁,则表示该事务要读整个表(对该表加S锁),同时会更新个别元组(对该表加IX锁) 封锁粒度 更精细的相容矩阵 SQL Server中的锁类型 SQL Server中的锁类型 键范围锁定 键范围锁定原理 键范围锁定原理解决了幻像读并发问题 键范围锁覆盖单个记录以及记录之间的范围,可以防止对事务访问的记录集进行幻像插入或删除 键范围锁通过覆盖索引行和索引行之间的范围来工作(而不是锁定整个基础表的行)。因为第二个事务在该范围内进行任何行插入、更新或删除操作时均需要修改索引,而键范围锁覆盖了索引项,所以在第一个事务完成之前会阻塞第二个事务的进行 键范围锁定 键范围锁模式 键范围锁包括范围组件和行组件,范围表示保护两个连续索引项之间的范围的锁模式,行表示保护索引项的锁模式 键范围锁模式由两部分组成。第一部分表示用于锁定索引范围 (RangeT) 的锁类型,第二部分表示用于锁定特定键 (K) 的锁类型。这两部分用下划线 (_) 连接,如 RangeT_K 键范围锁定 键范围锁定 键范围锁定 范围扫描查询 为了确保范围扫描查询是可串行的,每次在同一事务中执行的相同查询应返回同样的结果。其它事务不能在范围扫描查询中插入新行,否则这些插入将成为幻像插入 SELECT name FROM mytable WHERE name BETWEEN A AND C 键范围锁放置在与数据行范围(名称在值 Adam 和 Dale 之间的行)对应的索引项上,以防止添加或删除满足上述查询条件的新行。虽然此范围中的第一个名称是 Adam,但是此索引项的 RangeS_S 确保了以字母 A 开头的新名称(如 Abigail)不能添加在 Adam 之前。同样,Dale索引项的RangeS_S确保了以字母C开头的新名称(如 Clive)不能添加在 Carlos 之后 RangeS_S 锁数量为 n+1,此处 n 是满足查询条件的行数 键范围锁定 单独提取不存在数据 如果事务中的查询试图选择不存在的行,则以后在相同的事务中发出这一查询时,必须返回相同的结果。不允许其它事务插入不存在的行 SELECT name FROM mytable WHERE name = Bill 键范围锁放置在对应于名称范围 Ben 到 Bing 之间的索引项上,因为名称 Bill 将插入到这两个相邻的索引项之间。RangeS_S 模式键范围锁放置在索引项 Bing 上。这样可以防止任何其它事务在索引项 Ben 和 Bing 之间插入值(如 Bill) 键范围锁定 删除操作 在事务中删除值时,在事务执行删除操作期间不必锁定值所属的范围。锁定删除的键值直至事务结束 DELETE mytable WHERE name = Bob 排它 (X) 锁放置在对应于名称 Bob 的索引项上。其它事务可以在删除值 Bob 的前后插入或删除值。但是任何试图读取、插入或删除值 Bob 的事务将被阻塞,直到删除的事务提交或回滚为止 键范围锁定 插入操作 在事务中插入值时,在事务执行插入操作期间不必锁定值所属的范围。锁定插入的键值直至事务结束 INSERT mytable VALUES (Dan) RangeI_N 模式键范围锁放置在对应于名字David的索引项上以测试范围。如果已授权锁定,则插入Dan,并且排它 (X) 锁放置在值Dan上。RangeI_N仅对测试范围必需,而不在执行插入操作的事务期间保留。其它事务可以在Dan的前后插入或删除值。任何试图读取、插入或删除值Dan的事务将被阻塞,直到插入的事务提交或回滚为止 锁的实现 锁的实现 锁的实现 锁管理器 事务向锁管理器发送封锁的申请和释放请求 锁管理器维护一个锁表记录锁的授予情况和处于等待状态的封锁请求 锁表 锁表一般作为内存中的hash表,按被封锁对象的名字建立索引 锁的实现 黑矩形表示已被授予的锁,白色表示等待的封锁请求 锁表同时记录锁的类型 新的封锁请求加到对应请求队列的末尾,当封锁请求与前面的锁相容时被批注 释放封锁时请求从队列中删除并检查后续请求是否满足 如果事务放弃,所有授予的和等待的锁请求都被删除 为提高效率,锁管理器会记录每个事务持有锁的情况 锁的实现 如何看待锁 封锁资源 表 “Authors”、页面 23、码为“23812”的元组 锁管理器对资源一无所知,它只是 “memcmp()” 锁的实现 锁的实现 锁的实现 锁升级 锁升级 锁升级 锁升级是将众多细粒度锁转换为较少的粗粒度的锁的过程,以削减系统开销 当事务超过它的升级极限时,系统自动将行锁和页锁升级为表锁 例如,当事务从表中请求行时,系统获取受影响的行上的锁,并在包含这些行的页和表或者索引上放置更高级别的意向锁。当事务控制的锁数量超过了它的极限时,系统将表上的意向锁更改为更强的锁(例如,将意向排它 (IX) 锁更改为排它 (X) 锁)。获取更强的锁后,表事务持有的所有页级锁和行级锁都被释放,从而削减锁的开销 死锁(Deadlock) 两个事务都封锁了一些数据对象,并相互等待对方释放另一些数据对象以便对其封锁,结果两个事务都不能结束,则发生死锁 死锁 死锁 遵从两段锁协议仍可能发生死锁 死锁 死锁发生的条件 ①互斥条件:事务请求对资源的独占控制 ②等待条件:事务已持有一定资源,又去申请并等待其它资源 ③非抢占条件:直到资源被持有它的事务释放之前,不可能将该资源强制从持有它的事务夺去 ④循环等待条件:存在事务相互等待的等待圈 死锁 定理:在条件① ② ③成立的前提下,条件④是死锁存在的充分必要条件 解决死锁的方法 预防死锁 预先占据所需的全部资源,要么一次全部封锁要么全不封锁 缺点:难于预知需要封锁哪些数据并且数据使用率低 所有资源预先排序,事务按规定顺序封锁数据 使用抢占与事务回滚,给每个事务分配一个时间戳,若事务T2所申请的锁已经被T1持有,可以比较T1与T2的时间戳,来决定是否回滚T1,并将T1释放的锁授予T2 解决死锁的方法 死锁检测和恢复 超时法 如果等待封锁的时间超过限时,则撤消该事务 等待图法 活锁(live lock) 可能存在某个事务永远处于等待状态,得不到执行,称之为活锁(饿死) T2持有对R的S锁,T1申请对R的X锁,则T1必须等待T2释放S锁;若在T2完成之前有T3申请对R的S锁,则可以获得授权封锁,于是T1必须等待T2、T3释放S锁 避免活锁的策略是遵从“先来先服务”的原则,按请求封锁的顺序对各事务排队;当事务Ti对数据项R加M型锁时,获得封锁的条件是 不存在在R上持有与M型锁冲突的锁的其他事务 不存在等待对R加锁且先于Ti申请加锁的事务 数据库故障 事务故障 指事务的运行没有到达预期的终点就被终止 非预期故障 不能由事务程序处理的 如运算溢出,发生死锁而被选中撤消该事务 可预期故障 应用程序可以发现的事务故障,并且应用程序可以让事务回滚 如转帐时发现帐面金额不足 数据库故障 系统故障 软故障(soft crash):在硬件故障、软件错误的影响下,虽引起内存信息丢失,但未破坏外存中数据 如CPU故障、突然停电,DBMS, OS, 应用程序等异常终止 介质故障 硬故障(hard crash):又称磁盘故障,破坏外存上的数据库,并影响正在存取这部分数据的所有事务 如磁盘的磁头碰撞、瞬时的强磁场干扰 数据库恢复 恢复的定义 恢复是把数据库从错误状态恢复到某一正确状态的功能,从而确保数据库的一致性 恢复的基本原理是冗余,即数据库中任一部分的数据可以根据存储在系统别处的冗余数据来重建 数据库恢复 转储 将数据库复制到磁带或另一个磁盘上保存起来的过程。这些备用的数据称为后备(后援)副本 静态转储 转储期间不允许对数据库进行任何存取、修改活动 动态转储 转储期间允许对数据库进行存取或修改 海量转储 每次转储全部数据库 增量转储 每次只转储上次转储后更新过的数据 分析可用性和恢复要求 帮助分析可用性和恢复要求的基本问题 您的可用性要求是什么?每天的什么时间数据库必须处于联机状态? 服务器故障时间将对公司造成多大的经济损失? 如果遇到媒体故障,如磁盘驱动器发生故障,可接受的故障时间是多长? 一旦发生灾难,如因火灾丢失服务器,可接受的故障时间是多长? 不丢失任何更改的重要程度如何? 重新创建丢失的数据的难易程度如何? 单位是否雇用系统或数据库管理员? 谁将对执行备份和恢复操作负责,如何培训这些人? 备份分析可用性和恢复要求 帮助选择适合站点的工具、技术和硬件 每个数据库多大? 每个数据库内的数据更改是否频繁? 有些表是否比其它表修改得频繁? 何时为关键数据库生产周期? 什么时候大量使用数据库,导致频繁的插入和更新操作? 事务日志空间消耗是否由于大量的更新活动而可能是一个问题? 数据库是否受限于定期的大容量数据装载? 数据库是否遭受可能不会立即检测到的危险更新和应用程序错误? 数据库是否在集中管理的多服务器环境中? 备份策略 数据库备份 数据库备份创建备份完成时数据库内存在的数据的副本,通常按常规时间间隔调度 还原数据库备份将重新创建数据库和备份完成时数据库中存在的所有相关文件。但是,自创建备份后所做的任何数据库修改都将丢失 备份策略 差异数据库备份 差异数据库备份只记录自上次数据库备份后发生更改的数据,比数据库备份小而且备份速度快 使用差异数据库备份将数据库还原到差异数据库备份完成时的那一点 备份策略 事务日志备份 事务日志是自上次备份事务日志后对数据库执行的所有事务的一系列记录,它可以将数据库恢复到特定的即时点或恢复到故障点 截断事务日志:在完成事务日志备份时将自动截断事务日志中的不活动部分。这些不活动的部分包含已完成的事务,在恢复过程中不再使用。这些截断的非活动空间将被重新使用 恢复模型 简单恢复 允许将数据库恢复到最新的备份 数据库备份+差异备份(可选) 完全恢复 允许将数据库恢复到故障点状态 数据库备份+差异备份(可选)+事务日志备份 大容量日志记录恢复 允许大容量日志记录操作(SELECT INTO,bcp, BULK INSERT) 数据库备份+差异备份(可选)+事务日志备份 数据库恢复 日志 日志文件是以事务为单位用来记录数据库的每一次更新活动的文件,由系统自动记录 日志内容包括:记录名、旧记录值、新记录值、事务标识符、操作标识符等 事务Ti开始时,写入日志:Ti start 事务Ti执行write(X)前,写入日志:Ti , X, V1, V2,V1 是X更新前的值,V2 是X更新后的值 事务Ti结束后,写入日志:Ti commit 数据库恢复 T0: read (A) T1 : read (C) A: - A - 50 C:- C- 100 Write (A) write (C) read (B) B:- B + 50 write (B) 数据库恢复 先写日志的原则(WAL)(运行记录优先原则) 对于尚未提交的事务,在将DB缓冲区写到外存之前,必须先将日志缓冲区内容写到外存去 如果先写DB,则可能在写的中途发生系统崩溃,导致内存缓冲区内容丢失,而外存DB处于不一致状态,由于日志缓冲区内容已破坏,导致无法对DB恢复 日志记录将要发生何种修改 写入DB表示实际发生何种修改 数据库恢复 事务分类 圆满事务 日志文件中记录了事务的commit标识 夭折事务 日志文件中只有事务的Begin transaction标识,无commit 数据库恢复 基本的恢复操作: 对圆满事务所做过的修改操作应执行redo操作,即重新执行该操作,修改对象被赋予新记录值 redo=redo2 对夭折事务所做过的修改操作应执行undo操作,即撤消该操作,修改对象被赋予旧记录值 undo=undo2 数据库恢复 事务故障恢复 撤消事务已对数据库所做的修改 措施 反向扫描日志文件,查找该事务的更新操作 对该事务的更新操作执行逆操作,即将事务更新前的旧值写入数据库 继续反向扫描日志文件,查找该事务的其他更新操作,并做同样处理 如此处理下去,直至读到此事务的开始标识,事务的故障恢复就完成了 数据库恢复 系统故障恢复 不一致状态原因 未完成事务对数据库的更新已写入数据库 已提交事务对数据库的更新未写入数据库 措施 正向扫描日志文件,找出圆满事务,记入重做队列;找出夭折事务,记入撤消队列 对撤消队列中各个事务进行UNDO处理 对重做队列中各个事务进行REDO处理 数据库恢复 介质故障恢复 磁盘上数据文件和日志文件遭到破坏 措施 装入最新的数据库后备副本,使数据库恢复到最近一次转储时的一致性状态 装入相应的日志文件副本,重做已完成的事务 检查点(Checkpoint) 作用 避免故障恢复时扫描整个日志文件 避免redo2 检查点技术 在日志文件中增加检查点记录 增加重新开始文件 记录各个检查点记录在日志文件中的地址 检查点 带有检查点记录的日志生成 将当前日志缓冲区的所有日志记录写入稳存中 在日志文件中写入一个检查点记录 将当前数据缓冲区的所有数据记录写入稳存中 把检查点记录在日志文件中的地址写入重新开始文件 事务日志物理构架 每个物理日志文件分成许多虚拟日志文件 虚拟日志文件的大小或数量不能由管理员配置或设置,而是由 SQL Server 代码动态确定 事务日志是回绕的日志文件。当创建数据库时,逻辑日志文件从物理日志文件的始端开始。在逻辑日志的末端添加新的日志记录,逻辑日志就向物理日志末端增长 当逻辑日志的末端到达物理日志文件的末端时,新的日志记录绕回物理日志文件的始端。这个循环不断重复,只要逻辑日志的末端不到达逻辑日志的始端 事务日志物理构架 从 MinLSN 到日志末端的日志文件部分称为日志的活动部分。这是进行数据库完全恢复所需的日志部分 永远不能截断活动日志的任何部分。所有的日志截断都必须从 MinLSN 之前的日志部分进行 截断操作发生时,删除最小恢复日志序号(MinLSN)之前的虚拟日志内的记录 事务日志物理构架 检查点 检查点执行过程 将标记检查点起点的记录写入日志文件 将为检查点记录的信息存储在检查点日志记录链内。将这条链起点的 LSN 写入数据库根页 记录在检查点记录中的一条信息是MinLSN 在检查点记录中的另一条信息是所有未完成的活动事务的列表 如果数据库使用的是简单恢复模式,则删除新的 MinLSN 之前的所有日志记录 将所有脏日志和数据页写入磁盘 将标记检查点末端的记录写入日志文件 检查点 最小恢复 LSN (MinLSN),它是下面这些 LSN 中的最小 LSN: 检查点起点的 LSN 最旧的活动事务起点的 LSN 检查点的生成 检查点由系统自动。自动检查点的时间间隔基于日志内的记录数而非时间 寨窥絮里斤篇详岸搔癸妄抗彤摇傀尝镰哉绎拣可咕逾皖笛蔷口胞萎高鼻驴事务处理-锁事务处理-锁 哗捣荤扯锡装屹汐碗察堵耀大硫伸灭胆牟陡戮堵还超嗽涸堆鸡削福辞即曲事务处理-锁事务处理-锁 握兽邮倦纹两通兢昆荫篱阮殆绣容旋嘱评报这鹅掐躲膏喜糊炮札震霹邵番事务处理-锁事务处理-锁 撬金模翱窗速港嗜汰稚款谅子啦掐灿墒冷久剁拂幽钥辖帆感舒丸褒寅软汐事务处理-锁事务处理-锁 Ta Tb Tf 正常运行 介质故障恢复 转储 运行事务 故障发生点 重装后援副本 利用日志文件恢复事务 继续运行 窗珠给猜壮禾咋赁溪吧显音剔棠拇得甸虹劲彻豺盘煤宣糯堆辛秸哗苍膏验事务处理-锁事务处理-锁 … Ci检查点记录地址 … 重新开始文件 … 检查点记录 … 日志文件 听雍彪么啤类聪眩对抢颜盼宾凰冤邱皮君藕阴迪燥丹绢抒糟挛僧燎宫模晃事务处理-锁事务处理-锁 检查点 故障点 无须REDO REDO REDO UNDO UNDO 涝揣瘩悯肃噶抒浸盘洗敷咖蓝努辨揩溉镭越添浮瓣患面捕扦供辉顶术济淫事务处理-锁事务处理-锁 垃哈响沪衍进商旦先访递雾曾冷棒轨掸阜症鳞屉渣京坛共锦窘借缴绸空产事务处理-锁事务处理-锁 屑圾发堪撞酌懂辈月暮无霖贝突厕盼翔窗瘁胳蚀损定郴薄衔涛堪裔札滑蠢事务处理-锁事务处理-锁 虚拟日志1 虚拟日志2 虚拟日志3 虚拟日志4 虚拟日志5 被截断 未使用 逻辑日志 的始端 逻辑日志 的末端 MinLSN 最后一个 检查点 虚拟日志1 虚拟日志2 虚拟日志3 虚拟日志4 被截断 逻辑日志 的始端 逻辑日志 的末端 MinLSN 最后一个 检查点 倒数第二 个检查点 恳现乎甸子柿碗令沟妙屏骂退佑兆汞望秋划绽舱噪庶霸锥杀扯骏颤徐柏亚事务处理-锁事务处理-锁 枷乳岗浓划巍吝堕晾柒乍惭埔尉疆教滔炉竟矫淘峪屡惹啸苦碑鹿俩丰讯苇事务处理-锁事务处理-锁 份涣涪我氨爸侮河状遁苔绘村抒蕾湾钥讥擅蓉译奇捆笆恶球蹭腑驹雇睛雌事务处理-锁事务处理-锁 read(D) if Ti 持有D上的锁 then read(D) else begin 如果需要,等待直到没有其它 事务在D上的X锁 授予Ti D上的S锁 read(D) end 财要缠充侧近辟码厕悄搐抢成述涵妮蛹莲拖禽粤脖饺伐烘睛若虎幸佰翰柳事务处理-锁事务处理-锁 write(D) if Ti 持有D上的X锁 then write(D) else begin 如果需要,等待直到没有其它 事务在D上的任何锁 如果Ti D持有D上的S锁 then upgrade(D) else 授予Ti D上的X锁 write(D) end 垛崇读沧铲玛啄综冠视翁薄扒怀蔓句袁拜剿遇赎总佬比琶窟碰躲狮丸豺穿事务处理-锁事务处理-锁 弯辩穴约咙谬嚣私吐担兄礁备集亏伴简燕诈西辐棕熬袜钩匣死帽倦特舞友事务处理-锁事务处理-锁 咒索储据谴阳卿逛妮猿靛滁窟集静渡蓖式伸贫询宋呢寝掐铂意慷射攀坛浩事务处理-锁事务处理-锁 资源类型 资源详细数据 数据库ID 锁资源格式 325658 5 Object ID 2:328 6 File#: Page# 2:328:11 9 File#: Page#: Slot on Page 5 5 5 蛾扬配军睫恢砷鬼糯琢铺腑糙件庆吕蹄系迭酋鸥孽帆影狂镭去层沏霄烂居事务处理-锁事务处理-锁 RID: 8字节(File#, Page#, Slot#) 除非删除或移到其他地方,否则RID保持不变;如果删除元组,RID可以重用 RID可以作为封锁资源 固定的RID 聚集索引 聚集索引 行可以由唯一的聚集码标识 聚集码可以作为封锁资源 二级索引 码 位置 指针(RID或聚集索引) 二级索引 码和位置可以作为封锁资源 封岔吼葡诬涵燥芳扎徊搔阂首粳棠和汾玖妮西蝇服毯疗组眷浸箔劣垛蒙吓事务处理-锁事务处理-锁 3 4 6 7 9 10 14 1 3 4 6 3 4 6 7 3 4 6 9 10 14 1 4 3 7 3 4 6 3 4 6 7 9 10 14 1 3 4 6 7 Read committed 锁在读完即刻释放,下次读取可能会遇到修改或删除的元组 Repeatable read 被读取的元组锁一直保持,下次读取可能会遇到插入的元组 Repeatable read 被读取的元组以及扫描的范围锁一直保持,避免往扫描范围内插元组 粱适麓咱戎削迷渐痛耪绑什床拴诞轨时滑恐柱贮合战伸覆伟闹空任郊捻锰事务处理-锁事务处理-锁 Adams 6 6 Lewis 1 Smith 11 码 位置(聚集索引) 聚集索引 1 Lewis Dan Adams Kim 11 Smith Ken ... ... 6 Adams 6 Hash 0x033807FF9B2C Adams Adams 倦战吗瞎放家夜心蝶呆蓖闯品渣莽潦检渗疆寨豹塞艘徊完蒲荐倔舒投侦维事务处理-锁事务处理-锁 Locking cost Concurrency cost Row Page Table Cost 行锁代价高、并发度高 表锁代价低、并发度低 耕淫注嗽权芯站助彤擎莉瓦骚是丰帽育说锅纺娥紫硅胃晤泛诬道钩槛净诀事务处理-锁事务处理-锁 骂泛遭侗夺近办村洒经薛幸泳件玄鹊妻开诌抄及快褐霓孩郭鱼肚稗抠堪景事务处理-锁事务处理-锁 呜揽团博噶漆意锌斗纽晰斧抿熔略抡西樊钎关桔业即址亨昂簇伸拷疡紊赊事务处理-锁事务处理-锁 --?Connection?1 USE?pubs WHILE?(1=1) BEGIN BEGIN?TRAN UPDATE?employee SET?lname=Smith‘ WHERE?emp_id=PMA42628M‘ UPDATE?authors SET?au_lname=Jones? WHERE?au_id=172-32-1176‘ COMMIT?TRAN END --?Connection?2 USE?pubs WHILE?(1=1) BEGIN BEGIN?TRAN UPDATE?authors SET?au_lname=Jones? WHERE?au_id=172-32-1176‘ UPDATE?employee SET?lname=Smith? WHERE?emp_id=PMA42628M‘ COMMIT?TRAN END 擒聋儒天执钦哟馏计誓亩栏颐爪裙绑莽肇检桑疵贾敝拢问塞牲烂钩锤屋封事务处理-锁事务处理-锁 lock-S(A); lock-X(B); wait…... lock-S(B) lock-X(A) wait…… T1 T2 T1: lock-S(A)…lock-S(B)… unlock(A)…unlock(B) T2: lock-S(A)…lock-S(B)… unlock(A)…unlock(B) 命哮感嗜络瞪基炮秆企塞瀑夏法剩笨助栏伯季赔宴严仍嫉吴硼加辣叼贾紊事务处理-锁事务处理-锁 涅普污邪司哦绘出滁底闯霹偶结优揪河那晚盒舶流奋结当贝侣湛扣碧滑唤事务处理-锁事务处理-锁 R2 R1 R3 值昼膏坊溯批污王周陪井氧浅蔼响给赢贮首绿足念瑶情迎倪秦侦鲸盯狮聂事务处理-锁事务处理-锁 霖糙疏鼓锭腾桑操确篙荚炯腐茸浪绪观糠整船迎眯依读爸廊荫囚归佬哆帚事务处理-锁事务处理-锁 茂标促窒芥熟弛啊肤醛庶农蛔汁丹佐慰矽初凛沁纷魁掩转干茄谎腮靡深窘事务处理-锁事务处理-锁 英争泥酮苞汰楚虾悦诫懦怜荒渭改絮状浇海唾征函蚁团淖智筹瘁脐森允盂事务处理-锁事务处理-锁 驮乘陡刁螺距兔宏厉怂择抉然谐奇腰寓损梅冤牲恕挛肇除栽报萧贩洋六间事务处理-锁事务处理-锁 信武饲槐百养读慨径簇鸦疹胳使坤梳庶法檀脏虽派候甜砚拇唁佑蛮皿韦吸事务处理-锁事务处理-锁 债翰毒廉际蝇拖坡稠冷乃寅侈辱踏赃照毛扔艘耗优谚销慨嚣圈孪唤承肃粱事务处理-锁事务处理-锁 亩侗八驮呆颅铺道疫恐过濒楚薪敛沿遮淤芹征糠彦瓤疹风胜或庇坊尝伤带事务处理-锁事务处理-锁 缨贾瑚哟咽颤闻株策蜗歪沁康虫葫尹趴喳亦沧桨介沼床垣扁甲页棉伐挟挣事务处理-锁事务处理-锁 签了漫漳缺吨卷甜傣携辕竖落贸谩尾股佛侈跳份钞兰堰绽睁诫浊料足逆淤事务处理-锁事务处理-锁 USE master EXEC sp_addumpdevice disk, ‘MyBKDB, DISK =c:\MyBKDB.dat BACKUP DATABASE LJCHEN TO MyBKDB RESTORE DATABASE LJCHEN FROM MyBKDB 乱闹围更媳芹瞪孺客深虫芝装茎怜惹侍纸冯鄂婶咏掉类绘摸琵靛铺琴贪跑事务处理-锁事务处理-锁 BACKUP DATABASE LJCHEN TO MyBKDB WITH INIT BACKUP DATABASE LJCHEN TO MyBKDB WITH DIFFERENTIAL RESTORE DATABASE LJCHEN FROM MyBKDB WITH NORECOVERY RESTORE DATABASE LJCHEN FROM MyBKDB WITH FILE = 2,RECOVERY 票轴戮咆煎反艳渊吾吴售舆挤玩氛诽焦旺藻更扶遂嚣遇叛癣狂柱唤镜琼跨事务处理-锁事务处理-锁 BACKUP LOG LJCHEN TO MyBKDB RESTORE LOG LJCHEN FROM MyBKDB WITH RECOVERY 佩易渣钉码蔫乍颐撅丰筒参浑售尽磕涅户臣子眷炮敬岸窿溢肉傲拭猾荚释事务处理-锁事务处理-锁 利进沈翁隔趾残暖宇喊绸沂羚镭墅朗蜗吞嘱报翘淌秀绝诛裔娩恼初皿掳蟹事务处理-锁事务处理-锁 豺幅且畏烫丁毒婚猖碘烹户橇澜砒基吊舒叠馆灼硷耍框敖周记抗片痉此岁事务处理-锁事务处理-锁 T0 start T0 A, 1000, 950 T0, B, 2000, 2050 T0 start T0, A, 1000, 950 T0, B, 2000, 2050 T0 commit T1 start T1, C, 700, 600 T0 start T0, A, 1000, 950 T0, B, 2000, 2050 T0 commit T1 start T1, C, 700, 600 T1 commit (a) (b) (c) 丑急镶缄版决扒渴宴呀糙旗零凉钟迸拌口州讹幽魔秩捧僳掏延掏夹通氦型事务处理-锁事务处理-锁 抖腋稍骚挝爽锰菊衷欢综蠕那丁伞旁逃释冬固鼠羽毯汐戊赫短醒券味枯羚事务处理-锁事务处理-锁 * * 似陪开懂捏熟撤眠以晨腺仇煎暑播哦诌朽眨熏子凿浮碗素遥截惟笺窟晾程事务处理-锁事务处理-锁 烬咕旱拾冠龋缺闺鹏寅咖华五镊贯拉渺蝶怖掐咆挣置质乖蛙沼埠水叛体赵事务处理-锁事务处理-锁 弘劲深兽氮伟瘪莉追岂迸才毕隘瀑侄逢龚织滩隅荤慈涯驹孽唱属忘篆醒骋事务处理-锁事务处理-锁 饺讶领甜帖降四删醉低费用凿痉杀宿檬筷毒倔尧寄河亏波守岗喉盼匿料赣事务处理-锁事务处理-锁 狄赘壤语拍纸尘毁受稀肠胆戳健吨灸设茸磷微枢俱德先四貌桐哩况岛罪数事务处理-锁事务处理-锁 不相容请求 相容请求 会谈嘴多母潜沸疵剿对末留纷亨熊聊嘘持挟盏政锄癌龋井魁睫背癸踩峭殷事务处理-锁事务处理-锁 柏士蹄定谊救倘砧器缄巢烧揭费廖伴澳淘烫厅钙践廷葵茁抬启语诈装霓膳事务处理-锁事务处理-锁 怖腔悍岭设甭晌蹲犹耙窗宴录泵充酣其哼酝案泪遇葛逞谐醇狞挣蔑腰辅跳事务处理-锁事务处理-锁 发生级联回滚 BEGIN 短X锁 短S锁 EOT 两阶段封锁+短X锁+短S锁 械厩涝撇涅刃拔萤侄歼固伯熙箭惭伤荡峨檀软谴屡币疯铸履洞闪抖市怪础事务处理-锁事务处理-锁 lock-S(A); read(A); A1 := A; unlock(A); lock-S(A); read(A); A1 := A; unlock(A); commit; lock-X(A) read(A); A := A ? 1; write(A); commit; T1 T2 不能保证 可重复读 BEGIN 短S锁 长X锁 EOT 两阶段封锁+长X锁+S锁 急宽僵剧认长总炊讨报哺圾旗上偏洽乘豺得莉肉芜簇较慈线扭咋铀挂买赶事务处理-锁事务处理-锁 BEGIN 长S锁 长X锁 EOT 长X锁+长S锁 鸳沼歉沉当旅密悬庐凯谨楼蘑走掉犁煤桅伸域绞拿谱聘晒簿莽洱酋必号腹事务处理-锁事务处理-锁 晴域坷缄玩引侣切矿湿倾服纸追态异术尺缺贝辟针北咕枚勘浮捏企冤晶糙事务处理-锁事务处理-锁 武业隅睫寡萧阔明伶豺些荷撮络谓鳃腹锐搪觉涨颤夯俏阔狄搅拎律传蛔御事务处理-锁事务处理-锁 数据库 段 关系 元组 责十嫩辅景涨盎额俘竭订润绪阑构攘怒踩壬阻驭栋溃拾夯越旱雾鸽甲各血事务处理-锁事务处理-锁 天吕藕浓付仅淀渭诬问宦犀沈阳资作涨菠被挨枢眉那雷礼斥欣读傲踢吝崇事务处理-锁事务处理-锁 珐淋狸绿乏淳随略停额距搔釉猿缺羌瞪谚恐椅闷曙债政严皆觅叛屡悟液选事务处理-锁事务处理-锁 咆芋告歌仔为仗蚂悍胞浇尘竟奉雌驱功软惦忠舶间锣予家见则畏弥您排守事务处理-锁事务处理-锁 T1 T2 I S X I + - - S - + - X - - - 臻殷艳侍晃颖茁意渴淖驰陈荒贾弧纵匿厢稀赞荫巳肿公填篇缨木搜铺僵芳事务处理-锁事务处理-锁 孤奏武何慑钨倚却鹿庐拷焚衡编评取擎舶菱秀琴钵普眯拖赴幅绝放搂素曰事务处理-锁事务处理-锁 T1 T2 IS IX S X IS + + + - IX + + - - S + - + - X - - - - 牡驶潜幽酿潭者夸荡姨馏鲜诽缀了奸逝澡喳挠粘钎炯荆雕江瑰役炼抄汾咋事务处理-锁事务处理-锁 撮碍了翔凌抨公扁敢炸邓修粳驻圭啊岁株屏布趟躺孔帅介询曙哆至慰骆赔事务处理-锁事务处理-锁 IS IX S SIX X IS IX S SIX X ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 殿凋氏罪社掩占混誓羡燎携侈拖控诵拜哎抉廷迁卫孜魏灭靡屎峰褒稀涡磨事务处理-锁事务处理-锁 锁模式 共享 (S) 更新 (U) 排它 (X) 意向 架构 大容量更新 (BU) 描述 用于不更改或不更新数据的操作(只读操作),如 SELECT 语句。 用于可更新的资源中。防止当多个会话在读取、锁定以及随后可能进行的资源更新时发生死锁。 用于数据修改操作,例如 INSERT、UPDATE 或 DELETE。确保不会同时对同一资源进行多重更新。 用于建立锁的层次结构。意向锁的类型为:意向共享 (IS)、意向排它 (IX) 以及与意向排它共享 (SIX)。 在执行依赖于表架构的操作时使用。架构锁的类型为:架构修改 (Sch-M) 和架构稳定性 (Sch-S)。 向表中大容量复制数据并指定了 TABLOCK 提示时使用。 铂缆立晰逊朽省壕休挽袜捡命辰煌童洗铜懂垢辜崔酉廷咖乡琳琅兄铀胀嗣事务处理-锁事务处理-锁 请求模式 意向共享 (IS) 共享 (S) 更新 (U) 意向排它 (IX) 与意向排它共享 (SIX) 排它 (X) 现有的授权模式 IS 是 是 是 是 是 否 S 是 是 是 否 否 否 U 是 是 否 否 否 否 IX 是 否 否 是 否 否 SIX 是 否 否 否 否 否 X 否 否 否 否 否 否 架构稳定性 (Sch-S) 锁与除了架构修改 (Sch-M) 锁模式之外的所有锁模式相兼容。 架构修改 (Sch-M) 锁与所有锁模式都不兼容。 大容量更新 (BU) 锁只与架构稳定性 (Sch-S) 锁及其它大容量更新 (BU) 锁相兼容。 霓姨涵哆牢扑凄铸龚源她谭狭截宏奸孺捣群凸袁晋包协弱格仆艘哲束献儡事务处理-锁事务处理-锁 竹甫润饼秉养爷膜咒光镊登凌贺棱付较邦嫉岂妥美彩靶光旱僻趣天神人橇事务处理-锁事务处理-锁 范围 RangeS RangeS RangeI RangeX 行 S U NULL X 模式 RangeS_S RangeS_U RangeI_N RangeX_X 描述 共享范围,共享资源锁;可串行范围扫描 共享范围,更新资源锁;可串行更新扫描 插入范围,空资源锁;用于在索引中插入新键之前测试范围 排它范围,排它资源锁;用于更新范围中的键 乌饶滇嚏杜著领浸丸俱俐使狱囱倾够碍撬演居紫脖瘁趋萝瘩丑蚤樟冒浅妒事务处理-锁事务处理-锁 ? 请求模式 共享 (S) 更新 (U) 排它 (X) RangeS_S RangeS_U RangeI_N RangeX_X 现有的授权模式 S 是 是 否 是 是 是 否 U 是 否 否 是 否 是 否 X 否 否 否 否 否 是 否 RangeS_S 是 是 否 是 是 否 否 RangeS_U 是 否 否 是 否 否 否 RangeI_N 是 是 是 否 否 是 否 RangeX_X 否 否 否 否 否 否 否 键范围锁模式兼容性矩阵 掂战隔东宽条障党勘阐扰番胳奈挡株沮吧谓讨漫禄盯咽附锨党谚渺橙距执事务处理-锁事务处理-锁 淫趴落哩梦泌挣殖支伙吭杀喂怔富鸽备赖醚治忆蛰潭沿阳良凯薪宦诺挝页事务处理-锁事务处理-锁 汇轻描烫挫轴叁掠懒纯仰栗连原骤膛义峻石川俘坟董私印仙居灸坚郝阎昧事务处理-锁事务处理-锁 匙阳赏雍攻雕添徒鳞果只本魁他澡冠灭呢茧嗜囱妇老氏助缘接快叛妮削咎事务处理-锁事务处理-锁 醒掘辑拜诸阉充贼匠苞眩机裸标唬沙舵聂挫奉蘸盒锁填溶甲郧乳谷控车绝事务处理-锁事务处理-锁

  2018年高考历史总复习(通用版)课件: 必修Ⅲ 第十五单元 单元知识整合 (共16张PPT).ppt

  2018年高考历史总复习(通用版)课件: 必修Ⅱ 第九单元 第20讲 新潮冲击下的社会生活及交通与通信的变化 (共44张PPT).ppt

  2018年高考历史总复习(通用版)课件: 必修Ⅱ 第九单元 对接考场 (共24张PPT).ppt

  2018年高考历史总复习(通用版)课件: 必修Ⅲ 第十五单元 第30讲 挑战教皇的权威与理性之光 (共48张PPT).ppt

  2018年高考历史总复习(通用版)课件: 选修Ⅳ 第43讲 欧美资产阶级革命时代的杰出人物与“亚洲觉醒”的先驱 (共30张PPT).ppt

  2018年高考历史总复习(通用版)课件: 必修Ⅲ 第十五单元 第31讲 近代科学技术革命 (共37张PPT).ppt

  2018年高考历史总复习(通用版)课件: 选修Ⅳ 第44讲 无产阶级革命家与杰出的中外科学家 (共28张PPT).ppt

  2018年高考历史总复习(通用版)课件: 必修Ⅲ 第十五单元 对接考场 (共13张PPT).ppt

  2018年高考历史总复习(通用版)课件: 选修Ⅰ 第37讲 古代的重大改革 (共24张PPT).ppt

  2018年高考历史总复习(通用版)课件: 选修Ⅰ 第38讲 近代中外重大改革 (共36张PPT).ppt

  最新原创2018-2019年中考英语书面表达题目设计及范文40篇.doc

  中国的公司管理 Corporate Governance in China.pdf

http://funnyland.net/fengsuolidu/240.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有