MySQL事务与存储引擎-数据库事务单元测试
前言
这是微专业参加单元测试后的试题及答案整理,分享出来,供大家参考,所有标红的为答案。
正文
1、(单选)有一个事务在session a被执行,
begin;
update tab_a set x = 1 where y = 3 ;
update tab_a set x = 2 where y = 2 ;
update tab_a set x = 3 where y = 3 ;
commit;
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
**下面关于这个事务的描述正确的是: **
- A.事务的隔离性决定了其他session在这个事务执行过程中看不到tab_a表中上y = 3的记录x = 1的状态.
- B.事务的原子性决定了这三个dml语句要么都完成,要么一个都不做.
- C.事务的一致性决定了这三个dml是在同一时刻执行的.
- D.事务的持久化属性决定了事务中每一句update完成后都将被刷新到磁盘上永远不会丢失.
2、(单选)**关于InnoDB存储引擎事务持久化属性,下面描述正确的是: **
- A.数据持久化方式实现中,直接实时刷新到磁盘数据文件的方式比事务日志持久化方式更安全.
- B.持久化特性能在数据库正常关闭后保证数据不会丢失,而数据库实例异常停止却会出现数据丢失.
- C.使用事务日志持久化实现主要是性能方面的考虑.
- D.刷新到磁盘的数据变化算持久化完成.
3、(单选)**在read committed隔离级别下,有两个session对数据库InnoDB表tab操作进行的时间轴,假设最初表中有且只有一行a=2的记录,并且都没有其他人在操作数据库,下面描述中正确的是 **
| | | |
| ----- | ---------------------------------- | -------------------------------- |
| | session A | session B |
| time1 | begin ; | |
| time2 | update tab set a = 1 where a = 2 ; | begin; |
| time3 | | select \* from tab where a = 1 ; |
| time4 | commit ; | |
| time5 | | select \* from tab where a = 1 ; |
| time6 | begin ; | |
| time7 | update tab set a = 2 where a = 1 ; | select \* from tab where a = 1 ; |
| time9 | commit ; | commit ; |
- A.session B没有执行DML语句,因此begin和commit操作没有实际意义.
- B.session B第一个和第三个语句select结果相同.
- C.session B后两个select语句结果相同.
- D.session B前两个select语句结果相同.
4、(单选)**下面不属于事务基本特性的是: **
- A.并发性.
- B.原子性.
- C.一致性.
- D.隔离性.
5、(多选)关于InnoDB引擎事务的隔离级别下列描述错误的是
- A.InnoDB引擎默认的隔离级别是Repeatable read.
- B.MySQL修改InnoDB存储引擎隔离级别需要重启服务.
- C.InnoDB引擎的默认隔离级别不允许幻读的发生,因此符合标准隔离级别定义.
- D.InnoDB存储引擎可以为不同的表设置不同的隔离级别.
6、(多选)**关于事务的回滚,下面的描述正确的是: **
- A.事务的回滚也是实现事务一致性的重要功能.
- B.事务的回滚是实现事务原子性的重要功能.
- C.InnoDB存储引擎靠redo日志实现回滚功能.
- D.事务一旦回滚成功,该事务的数据变化就无法再恢复回来,除非重新执行.
7、(多选)关于数据库事务,下面描述错误的是:
- A.使用InnoDB引擎的数据库,如果开启了自动提交,那么就无法手动执行begin和commit操作.
- B.数据库事务隔离性要求决定了数据库无法同时执行两个事务.
- C.原子性是保证a向b转账过程中不会因为数据库异常导致更新丢失的关键.
- D.InnoDB存储靠回滚段实现事务回滚的功能.
8、(多选)**在InnoDB默认隔离级别下,有两个session对数据库InnoDB表tab操作进行的时间轴,假设最初表中至少有一行a=2的记录,并且都没有其他人在操作数据库,下面描述中正确的是 **
| | | |
| ----- | ---------------------------------- | -------------------------------- |
| | session A | session B |
| time1 | begin ; | |
| time2 | update tab set a = 1 where a = 2 ; | |
| time3 | select \* from tab where a = 2 ; | select \* from tab where a = 2 ; |
| time4 | commit ; | |
| time5 | select \* from tab where a = 2 ; | select \* from tab where a = 2 ; |
- A.session A的两个select语句将返回相同的结果.
- B.session A的第二个select语句和session B的第二个select语句将返回相同的结果.
- C.session A的第一个select语句和session B的第一个select语句将返回相同的结果.
- D.session B的两个select语句将返回相同的结果.
9、(多选)下面关于回滚段的描述,正确的是
- A.InnoDB存储引擎异常恢复过程中需要用到回滚段.
- B.回滚段也帮助实现事务的隔离性.
- C.InnoDB存储引擎中事务回滚不会实际存放任何数据,只是存放指向数据的指针.
- D.回滚段用于存放更新以后但是尚未提交的数据.
10、(多选)**下面关于MySQL数据库事务的说法错误的是: **
- A.支持事务的引擎,如果开启了事务,在执行rollback后,可以通过执行commit找回被回滚的修改.
- B.支持事务的引擎,如果开启了事务,在执行commit后,该事务无法再被回滚.
- C.关闭自动提交,支持事务的引擎即使不执行begin,也会自动开启事务,也就是说不执行commit事务的改变无法被别人看见.
- D.支持事务的引擎无法设置为启用自动提交.
Preview
除特别注明外,本站所有文章均为 Windcoder网 原创,转载请注明出处来自: mysqlshiwuyucunchuyinqing-shujukushiwudanyuanceshi
Loading comments...

Preview
No Data