教学 第10章 事务和锁PPT课件

上传人:文库****9 文档编号:156829917 上传时间:2020-12-20 格式:PPT 页数:20 大小:175KB
返回 下载 相关 举报
教学 第10章 事务和锁PPT课件_第1页
第1页 / 共20页
教学 第10章 事务和锁PPT课件_第2页
第2页 / 共20页
教学 第10章 事务和锁PPT课件_第3页
第3页 / 共20页
教学 第10章 事务和锁PPT课件_第4页
第4页 / 共20页
教学 第10章 事务和锁PPT课件_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《教学 第10章 事务和锁PPT课件》由会员分享,可在线阅读,更多相关《教学 第10章 事务和锁PPT课件(20页珍藏版)》请在金锄头文库上搜索。

1、第10章 事务和锁,微软最有价值专家(MVP) IT集成课程视频教学下载地址 ,本章内容,10.1 事务(Transact)介绍 10.2 事务的特性 10.3 事务的类型 10.4 事务控制语句 10.5 事务并发产生的问题 10.6 锁 表级锁 行级锁 10.7 事务和锁综合练习,10.1事务(Transact)介绍,事务是指一个逻辑单元的工作任务,这些工作任务要么全做,要么全部放弃。 它必须同时满足四个特性: 原子性 一致性 隔离性 持久性,10.2事务特性1,原子性(Atomic) 表示组成一个事务的多个数据库操作是一个不可分隔的原子单元,只有所有的操作执行成功,整个事务才提交,事务中

2、任何一个数据库操作失败,已经执行的任何操作都必须撤销,让数据库返回到初始状态。 一致性(Consistency) 事务操作成功后,数据库所处的状态和它的业务规则是一致的,即数据不会被破坏。,事务特性2,隔离性(Isolation) 在并发数据操作时,不同的事务拥有各自数据空间,它们的操作不会对对方产生干扰。数据库规定了多种事务隔离级别,不同隔离级别对应不同的干扰程度,隔离级别越高,数据一致性越好,但并发性越弱。 持久性(Durabiliy) 一旦事务提交成功后,事务中所有的数据操作都必须被持久化到数据库中,即使提交事务后,数据库马上崩溃,在数据库重启时,也必须能保证能够通过某种机制恢复数据。,

3、10.3事务类型1,自动提交事务 系统默认每个TRANSACTSQL命令都是一个事务处理,由系统自动开始并提交 隐式事务:不需要显示开始事务,需要显示提交 该类事务是任何单独的 INSERT、UPDATE 或者DELETE语句构成。当有大量的DDL和DML命令执行时会自动开始,并一直保持到用户明确提交为止。,事务类型2,显式事务 该类事务是用户自定义事务,是以START TRANSACTION(事务开始)开头,以 COMMIT TRANSACTION(事务提交)或者 ROLLBACK TRANSACTION(回滚事务)语句结束的。 分布式事务 跨越多个服务器的事务称为分布式事务。自从mySQL

4、5.03就开始支持分布式事务。,10.4事务控制1,START TRANSACTION 该语句标记一个显式事务的开始点,即事务开始。其语法如下: START TRAN | TRANSACTION transaction_name | tran_name_variable WITH MARK description ; COMMIT TRANSACTION 该语句标志一个成功的隐性事务或显式事务的结束,即事务提交。其语法如下: COMMIT TRAN | TRANSACTION transaction_name | tran_name_variable ; ,.事务控制2,ROLLBACK TR

5、ANSACTION 该语句将显式事务或隐性事务回滚到事务的起点或事务内的某个保存点。其语法如下: ROLLBACK TRAN | TRANSACTION transaction_name | tran_name_variable | savepoint_name | savepoint_variable ; SET AUTOCOMMIT 可以修改当前连接事务提交方式。 SET AUTOCOMMIT=0,则需要明确的命令进行提交或者回滚。,10.5 数据并发的问题1,1.脏读(Dirty Read) 脏读是指某个事务(A)读取另外事务(B)尚未提交的更改数据,并在这个数据的基础上操作。如果恰巧

6、B事务回滚,那么 A事务读到的数据根本是不被承认的。 2.不可重复读(Unrepeatable Read) 不可重复读是指 A事务读取了 B事务已经提交的更改数据。,数据并发的问题2,3. 幻象读(Phantom Read) A事务读取B事务提交的新增数据,这时 A事务将出现幻象读的问题。 4. 第一类丢失更新 A事务撤销时,把已经提交的B事务的更新数据覆盖了。 5. 第二类丢失更新 A事务覆盖B事务已经提交的数据,造成 B事务所做操作丢失。,10.6 锁(Lock),数据库中的锁是指一种软件机制,用来控制防止某个用户(进程会话)在已经占用了某种数据资源时,其他用户做出影响本用户数据操作或导致

7、数据非完整性和非一致性问题发生的手段。 锁概述 MySQL锁和数据库引擎 InnoDB和MyISAM支持表级锁 InnoDB事务实现的行级锁,MySQL锁和数据库引擎,相对于其他数据库而言,MySQL的锁机制比较简单,最显著的特点是不同的存储引擎支持不同的锁机制。 MyISAM和MEMORY存储引擎采用表级锁 DBD存储引擎采用的是页面锁和表级锁。 InnoDB支持行级锁、表级锁,默认情况采用行级锁。,三种粒度锁的特性,表级锁 开销小,加锁快,不会出现死锁,锁定力度大,发生冲突所的概率高,并发度低。 行级锁 开销大,加锁慢,会出现死锁,锁定力度最小,发生锁冲突的概率最低,并发度高。 页面锁 开

8、销和加锁时间介于表锁和行锁之间,会出现死锁,锁定力度介于表和行行级锁之间,并发度一般。,MySQL表级锁的锁模式,表共享锁(Table Read Lock) 表独占锁(Table Write),表级锁,给TStudent表和TScore表添加读锁 lock tables TStudent read,TScore read; lock tables TStudent read local ,TScore read local; Local参数允许在表尾并发插入 如果加的read锁,只能读取不能够更改数据,并且只能访问加锁的表。 解锁表 unlock tables,添加表级写锁,给TStudent

9、表添加写锁 lock tables TStudent write,MySQL的InnoDB引擎行的锁,共享锁(S) InnoDB引擎,共享锁用于所有的只读数据操作 独占锁(X) 为修改数据而保留的,它所锁定的资源,其他事务不能读取也不能修改。 意向共享锁(IS) 意向独占锁(IX) 意向锁是InnoDB内部使用的,这两种意向锁都是表锁,比如事务打算给行加共享锁,先在表上添加IS锁,锁与SQl语句,对于Update Delete和Insert语句 InnoDB会自动给涉及数据集加排它锁 对于select语句InnoDB不加任何锁,可以显示加锁。 Select * from TStudent2 where studentid=00001 for update Select * from TStudent2 where studentid=00001 lock in share mode Lock in share mode 是共享锁,如果加锁记录后进行更改使用for update,综合,在myISAM引擎上的表锁 在InnoDB引擎上的事务产生的锁,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > 其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号