欢迎来到天天文库
浏览记录
ID:39336897
大小:265.25 KB
页数:20页
时间:2019-07-01
《mySQL教学第10章事务和锁》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第10章事务和锁微软最有价值专家(MVP)IT集成课程视频教学下载地址http://www.91xueit.com本章内容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自动提交事务系统默认每个TRANSACT-SQL命令都是一个事务处理,由系统自动开始并提交隐式事务:不需要显示开始事务,需要显示提交该类事务是任何单独的INSERT、UPDATE或者DELETE语句构成。当有大量的DDL和DML命令执行时会自动开始,并一直保持到用户明确提交为止。事务类型2显式事务该类事务是用户自定义事务,是以STARTTRANSACTION(事务开始)开头,以COMMITTRAN
4、SACTION(事务提交)或者ROLLBACKTRANSACTION(回滚事务)语句结束的。分布式事务跨越多个服务器的事务称为分布式事务。自从mySQL5.03就开始支持分布式事务。10.4事务控制1STARTTRANSACTION该语句标记一个显式事务的开始点,即事务开始。其语法如下:START{TRAN
5、TRANSACTION}[{transaction_name
6、@tran_name_variable}[WITHMARK['description']] ][;]COMMITTRANSACTION该语句标志一个成
7、功的隐性事务或显式事务的结束,即事务提交。其语法如下:COMMIT{TRAN
8、TRANSACTION}[transaction_name
9、@tran_name_variable]][;].事务控制2ROLLBACKTRANSACTION该语句将显式事务或隐性事务回滚到事务的起点或事务内的某个保存点。其语法如下:ROLLBACK{TRAN
10、TRANSACTION}[transaction_name
11、@tran_name_variable
12、savepoint_name
13、@savepoint_variable][;]SETAUT
14、OCOMMIT可以修改当前连接事务提交方式。SETAUTOCOMMIT=0,则需要明确的命令进行提交或者回滚。10.5数据并发的问题11.脏读(DirtyRead)脏读是指某个事务(A)读取另外事务(B)尚未提交的更改数据,并在这个数据的基础上操作。如果恰巧B事务回滚,那么A事务读到的数据根本是不被承认的。2.不可重复读(UnrepeatableRead)不可重复读是指A事务读取了B事务已经提交的更改数据。数据并发的问题23.幻象读(PhantomRead)A事务读取B事务提交的新增数据,这时A事务将出现幻象读的问题。4.
15、第一类丢失更新A事务撤销时,把已经提交的B事务的更新数据覆盖了。5.第二类丢失更新A事务覆盖B事务已经提交的数据,造成B事务所做操作丢失。10.6锁(Lock)数据库中的锁是指一种软件机制,用来控制防止某个用户(进程会话)在已经占用了某种数据资源时,其他用户做出影响本用户数据操作或导致数据非完整性和非一致性问题发生的手段。锁概述MySQL锁和数据库引擎InnoDB和MyISAM支持表级锁InnoDB事务实现的行级锁MySQL锁和数据库引擎相对于其他数据库而言,MySQL的锁机制比较简单,最显著的特点是不同的存储引擎支持不同
16、的锁机制。MyISAM和MEMORY存储引擎采用表级锁DBD存储引擎采用的是页面锁和表级锁。InnoDB支持行级锁、表级锁,默认情况采用行级锁。三种粒度锁的特性表级锁开销小,加锁快,不会出现死锁,锁定力度大,发生冲突所的概率高,并发度低。行级锁开销大,加锁慢,会出现死锁,锁定力度最小,发生锁冲突的概率最
此文档下载收益归作者所有