意歐库发制8的详爱座制萄 10.1事务及并发控制的基本概念 10.2封锁机制 10.3 SQL Server的并发控制机制 2021/1/21
第10章数据库并发控制及SQL Server的并发控制机制 2021/1/21 10.1 事务及并发控制的基本概念 10.2 封锁机制 10.3 SQL Server的并发控制机制
意歐库发制8的详爱座制萄 在多用户和网络环境下,数据库是一个共享资源,多个 用户或应用程序同时对数据库的同一数据对象进行读写操 作,这种现象称为对数据库的并发操作。显然并发操作可 以充分利用系统资源,提高系统效率。虽然如此,但是如 果对并发操作不进行控制会造成一些错误。对并发操作进 行的控制称为并发控制。并发控制机制是衡量一个DBMS的 重要性能指标之 2021/1/21
第10章数据库并发控制及SQL Server的并发控制机制 2021/1/21 在多用户和网络环境下,数据库是一个共享资源,多个 用户或应用程序同时对数据库的同一数据对象进行读写操 作,这种现象称为对数据库的并发操作。显然并发操作可 以充分利用系统资源,提高系统效率。虽然如此,但是如 果对并发操作不进行控制会造成一些错误。对并发操作进 行的控制称为并发控制。并发控制机制是衡量一个DBMS的 重要性能指标之一
意歐库发制8的详爱座制萄 10.1事务及并发控制的基本概念 10.11事务的概念 所谓事务是用户定义的一个数据库操作序列,这些操作要么全做要 么全不做,是一个不可分割的工作单位 事务的开始与结束可以由用户显式定义。如果用户没有显式地定义事 务,则由DBMS按默认自动划分事务。 在SQL语言中,定义事务的语句有三条: BEGINTRANSACTION: 事务通常是以 BEGINTRANSACTI0N开始, COMMIT COMMIT的作用是提交事务的所有操作,事务提交是将事务中所有 对数据的更新写回到磁盘上的物理数据库中去,事务正常结束。 ■ ROllbacK; ROLLBACK的作用是回滚,即在事务运行的过程中发生了某种故障, 事务不能继续执行,系统将事务中对数据库的所有已完成的操作全 部撤消,回滚到事务开始时的状态。 2021/1/21
第10章数据库并发控制及SQL Server的并发控制机制 2021/1/21 10.1 事务及并发控制的基本概念 10.1.1 事务的概念 所谓事务是用户定义的一个数据库操作序列,这些操作要么全做要 么全不做,是一个不可分割的工作单位。 事务的开始与结束可以由用户显式定义。如果用户没有显式地定义事 务,则由DBMS按默认自动划分事务。 在SQL语言中,定义事务的语句有三条: ▪ BEGINTRANSACTION; 事务通常是以BEGINTRANSACTION开始, ▪ COMMIT; COMMIT的作用是提交事务的所有操作,事务提交是将事务中所有 对数据的更新写回到磁盘上的物理数据库中去,事务正常结束。 ▪ ROLLBACK ; ROLLBACK的作用是回滚,即在事务运行的过程中发生了某种故障, 事务不能继续执行,系统将事务中对数据库的所有已完成的操作全 部撤消,回滚到事务开始时的状态
意歐库发制8的详爱座制萄 10.12事务的特性 事务具有4个特性,即原子性、一致性、隔离性和持续性 令原子性( Atomicity) 事务中包括的诸操作要么都做,要么都不做。也就是说,事务是作为 个整体单位被处理,不可以被分割。 令一致性( Consistency) 事务执行的结果必须使数据库处于一个一致性状态。当数据库中只包 含成功事务提交的结果时,就说数据库处于一致性状态。 令隔离性(1 solation) 个事务的执行不能被其他事务干扰,即一个事务内部的操作及使用 的数据对其他并发事务是隔离的,并发执行的各个事务之间不能互相干 令持续性( Durability) 持续性也称永久性( Permanence)。持续性指一个事务一旦提交,它对 数据库中数据的改变就是永久性的,接下来的其他操作或故障不应该对 其执行结果有任何影响。 2021/1/21
第10章数据库并发控制及SQL Server的并发控制机制 2021/1/21 10.1.2 事务的特性 事务具有4个特性,即原子性、一致性、隔离性和持续性。 ❖ 原子性(Atomicity) 事务中包括的诸操作要么都做,要么都不做。也就是说,事务是作为 一个整体单位被处理,不可以被分割。 ❖ 一致性(Consistency) 事务执行的结果必须使数据库处于一个一致性状态。当数据库中只包 含成功事务提交的结果时,就说数据库处于一致性状态。 ❖ 隔离性(1solation) 一个事务的执行不能被其他事务干扰,即一个事务内部的操作及使用 的数据对其他并发事务是隔离的,并发执行的各个事务之间不能互相干 扰。 ❖ 持续性(Durability) 持续性也称永久性(Permanence)。持续性指一个事务一旦提交,它对 数据库中数据的改变就是永久性的,接下来的其他操作或故障不应该对 其执行结果有任何影响
意歐库发制8的详爱座制萄 10.1.3并发操作可能产生的问题 并发操作不加以限制,会产生数据不一致性问题,这种问题共 有三类 令丢失更新 假设某产品库存量为50,现在购入该产品100个,执行入库操 作,库存量加10;用掉40个,执行出库操作,库存量减40。分别 用T1和T2表示入库和出库操作任务 例如,同时发生入库(T1)和出库(T2)操作,这就形成并发 操作。∏1读取库存后,T2也读取了同一个库存;T1修改库存,回 写更新后的值;T2修改库存,也回写更新后的值。此时库存为T2 回写的值,T1对库存的更新丢失。如表10.1所示T1和T2的并发操 作执行顺序,发生了“丢失更新”错误。 2021/1/21
第10章数据库并发控制及SQL Server的并发控制机制 2021/1/21 10.1.3 并发操作可能产生的问题 并发操作不加以限制,会产生数据不一致性问题,这种问题共 有三类。 ❖ 丢失更新 假设某产品库存量为50,现在购入该产品100个,执行入库操 作,库存量加100;用掉40个,执行出库操作,库存量减40。分别 用T1和T2表示入库和出库操作任务。 例如,同时发生入库(T1)和出库(T2)操作,这就形成并发 操作。T1读取库存后,T2也读取了同一个库存;T1修改库存,回 写更新后的值;T2修改库存,也回写更新后的值。此时库存为T2 回写的值,T1对库存的更新丢失。如表10.1所示T1和T2的并发操 作执行顺序,发生了“丢失更新”错误
意歐库发制8的详爱座制萄 表10.1发生丢失更新的过程 顺序 任务 操作 库存量 T1读库存量 50 T2读库存量 50 T1库存量=50+100 3456 T2库存量50-40 T1写库存量 150 T2写库存量 2021/1/21
第10章数据库并发控制及SQL Server的并发控制机制 2021/1/21 顺序 任务 操作 库存量 1 T1 读库存量 50 2 T2 读库存量 50 3 T1 库存量=50+100 4 T2 库存量=50-40 5 T1 写库存量 150 6 T2 写库存量 10 表10.1 发生丢失更新的过程
意歐库发制8的详爱座制萄 令读“脏数据” 当T1和T2并发执行时,在T1对数据库更新的结果没有提交之前,T2 使用了T1的结果,而在T2操作之后T1又回滚,这时引起的错误是T2读取 了T1的“脏数据” 表10.2发生读“脏数据”的过程 顺序 任务 操作 库存量 50 123 T1读库存 库存量=50+100 T1写库存量 150 读库存量 150 577 T2库存量150-40 T1 ROLLBACK T2写库存量 10 2021/1/21
第10章数据库并发控制及SQL Server的并发控制机制 2021/1/21 ❖ 读“脏数据” 当T1和T2并发执行时,在T1对数据库更新的结果没有提交之前,T2 使用了T1的结果,而在T2操作之后T1又回滚,这时引起的错误是T2读取 了T1的“脏数据”。 表10.2 发生读“脏数据”的过程 顺序 任务 操作 库存量 1 T1 读库存量 50 2 T1 库存量=50+100 3 T1 写库存量 150 4 T2 读库存量 150 5 T2 库存量=150-40 7 T1 ROLLBACK 7 T2 写库存量 10
意歐库发制8的详爱座制萄 令不可重复读 读取数据A后,T2执行了对A的更新,当T1再次读取数据A(希 望与第一次是相同的值)时,得到的数据与前一次不同,这时引起的错 误称为“不可重复读”。 表10.3发生“不可重复读”的过程 顺序任务 操作 库存量A入库量B T1读A=50 100 T1读B=100 求和=50+100 3456789 T2读B=100 T2执行BB米4 T2回写B=400 50 400 T1|读A=50 50 TI 读B=400 400 T1求和=450(验算不对) 2021/1/21
第10章数据库并发控制及SQL Server的并发控制机制 2021/1/21 ❖ 不可重复读 当T1读取数据A后,T2执行了对A的更新,当T1 再次读取数据A(希 望与第一次是相同的值)时,得到的数据与前一次不同,这时引起的错 误称为“不可重复读”。 表10.3 发生“不可重复读”的过程 顺序 任务 操作 库存量A 入库量B 1 T1 读A=50 50 100 2 T1 读B=100 3 T1 求和=50+100 4 T2 读B=100 50 5 T2 执行B=B*4 6 T2 回写B=400 50 400 7 T1 读A=50 50 8 T1 读B=400 400 9 T1 求和=450(验算不对)
意歐库发制8的详爱座制萄 并发操作之所以产生错误,是因为任务执行期间相互干扰造 成的。当将任务定义成事务,事务具有的特性(特别是隔离性) 得以保证时,就会避免上述错误的发生。但是,如果只允许事务 串行操作会降低系统的效率。所以,多数DBMS采用事务机制和封 锁杋制进行并发控制,既保证了数据的一致性,又保障了系统效 2021/1/21
第10章数据库并发控制及SQL Server的并发控制机制 2021/1/21 并发操作之所以产生错误,是因为任务执行期间相互干扰造 成的。当将任务定义成事务,事务具有的特性(特别是隔离性) 得以保证时,就会避免上述错误的发生。但是,如果只允许事务 串行操作会降低系统的效率。所以,多数DBMS采用事务机制和封 锁机制进行并发控制,既保证了数据的一致性,又保障了系统效 率
意歐库发制8的详爱座制萄 10.2封锁机制 10.21封锁及锁的类型 封锁机制是并发控制的主要手段。封锁具有3个环节:第一个环节是 申请加锁;第二个环节是获得锁;第三个环节是释放锁。为了达到封锁 的目的,在使用时事务应选择合适的锁,并要遵从一定的封锁协议。 基本的封锁类型有两种:排它锁( Exclusive locks,简称X锁)和共享 锁( Share locks,简称S锁) 令排它锁 排它锁也称为独占锁或写锁。一旦事务T对数据对象A加上排它锁( 锁),则只允许T读取和修改A,其他任何事务既不能读取和修改A,也不 能再对A加任何类型的锁,直到T释放A上的锁为止。 令共享锁 共享锁又称读锁。如果事务T对数据对象A加上共享锁(S锁),其他事 务对A只能再加S锁,不能加X锁,直到事务T释放A上的S锁为止。 2021/1/21
第10章数据库并发控制及SQL Server的并发控制机制 2021/1/21 10.2 封锁机制 10.2.1 封锁及锁的类型 封锁机制是并发控制的主要手段。封锁具有3个环节:第一个环节是 申请加锁;第二个环节是获得锁;第三个环节是释放锁。为了达到封锁 的目的,在使用时事务应选择合适的锁,并要遵从一定的封锁协议。 基本的封锁类型有两种:排它锁(Exclusive Locks,简称X锁)和共享 锁(Share Locks,简称S锁)。 ❖ 排它锁 排它锁也称为独占锁或写锁。一旦事务T对数据对象A加上排它锁(X 锁),则只允许T读取和修改A,其他任何事务既不能读取和修改A,也不 能再对A加任何类型的锁,直到T释放A上的锁为止。 ❖ 共享锁 共享锁又称读锁。如果事务T对数据对象A加上共享锁(S锁),其他事 务对A只能再加S锁,不能加X锁,直到事务T释放A上的S锁为止