数据库··By/蜜汁炒酸奶

MySQL事务与存储引擎-数据库事务单元测试

前言

这是微专业参加单元测试后的试题及答案整理,分享出来,供大家参考,所有标红的为答案。 MySQL数据库对象与应用-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

**下面关于这个事务的描述正确的是:  **

  • 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
Loading comments...
0 条评论

No Data

example
Preview