- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第6章 事务管理
实践与练习
单选题:
B
C
B
C
D
简答题:
事务的开启、回滚和提交命令是什么?
使用命令“start transaction;”可以开启一个事务,该命令开启事务的同时会隐式地关闭MySQL自动提交。
当MySQL关闭自动提交后,可以使用COMMIT命令来完成事务的提交。
使用rollback命令可以完成事务的回滚,事务的回滚可以撤销未提交的事务所做的各种修改操作,并结束当前这个事务。
事务的四大特性及其含义?
数据库中的事务具有ACID属性,即原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持永性(Durability)。
原子性意味着每个事务都必须被认为是一个不可分割的单元,事务中的操作必须同时成功事务才是成功的。如果事务中的任何一个操作失败,则前面执行的操作都将回滚,以保证数据的整体性没有受到影响。
事务的一致性保证了事务完成后,数据库能够处于一致性状态。如果事务执行过程中出现错误,那么数据库中的所有变化将自动地回滚,回滚到另一种一致性状态。在MySQL中一致性主要由MySQL的日志机制处理,它记录了数据库的所有变化,为事务恢复提供了跟踪记录。如果系统在事务处理中发生错误,MySQL恢复过程将使用这些日志来发现事务是否已经完全成功地执行,是否需要返回。一致性保证了数据库从不返回一个未处理完的事务。
事务的隔离性确保多个事务并发访问数据时,各个事务不能相互干扰。系统中的每个事务在自己的空间执行,并且事务的执行结果只有在事务执行完才能看到。即使系统中同时执行多个事务,事务在完全执行完之前,其他事务是看不到结果的。在多数事务系统中,可以使用页级锁定或行级锁定来隔离不同事务的执行。
事务的持久性意味着事务一旦提交,其改变会永久生效,不能再被撤销。即使系统崩溃,一个提交的事务仍然存在。MySQL通过保存所有行为的日志来保证数据的持久性,数据库日志记录了所有对于表的更新操作。
事务的隔离级别及其含义?
事务的隔离级别是事务并发控制的整体解决方案,是综合利用各种类型的锁机制解决并发问题。每个事务都有一个隔离级,它定义了事务彼此之间隔离和交互的程度。在MySQL中提供了4种隔离级别:read uncommitted(读取未提交的数据)、read committed(读取提交的数据)、repeatable read(可重复读)和serializable(串行化)。其中,read uncommitted的隔离级别最低,serializable的隔离级别最高, 4种隔离级别逐渐增加。
read uncommitted(读取未提交的数据):提供了事务之间的最小隔离程度,处于这个隔离级别的事务可以读到其他事务还没有提交的数据。
read committed(读取提交的数据):处于这一级别的事务可以看见已经提交事务所做的改变,这一隔离级别要低于repeatable read(可重复读)。
repeatable read(可重复读):这是MySQL默认的事务隔离级别,它确保在同一事务内相同的查询语句其执行结果总是相同的。
serializable(串行化):这是最高级别的隔离,它强制事务排序,使事务一个接一个地顺序执行。
什么是脏读、不可重复读和幻读?
一个事务可以读到另一个事务未提交的数据则为脏读。如果将事务的隔离级别设置为read uncommitted,则可能出现脏读、不可重复读和幻读等问题。将事务的隔离级别设置为read committed则可以避免脏读,但可能出现不可重复读以及幻读等问题。
在同一个事务中,两条相同的查询语句其查询结果不一致。当一个事务访问数据时,另一个事务对该数据进行修改并提交,导致第一个事务两次读到的数据不一样。当事务的隔离级别设置为read committed时可以避免脏读,但可能会出现不可重复读。将事务的隔离级别设置为repeatable read,则可以避免脏读和不可重复读。
幻读是指当前事务读不到其他事务已经提交的修改。将事务的隔离级别设置为repeatable read可以避免脏读和不可重复读,但可能会出现幻读。将事务的隔离级别设置为serializable,可以避免幻读。
原创力文档


文档评论(0)