3.事务处理的概念复习题

1.在一个多用户系统中数据库事务的并发执行意味着什么?讨论为什么需要并发控制,并给出一个常见的事例

多个用户可以使用计算机系统同时对数据库进行访问,允许计算机在同一时间里可执行多个程序或进程。
当事务以非受控的方式执行时可能会产生一系列问题:更新丢失问题,暂时更新(|或脏读)问题,错误求和问题。

2.讨论故障的不同类型。灾难性故障意味着什么?

计算机故障(系统崩溃),事务或系统错误,事务检测到的局部错误或异常,并发控制的实施,磁盘故障,物理问题和灾难性事故,

3.讨论数据库上的read_time和write_time操作所采取的动作

read_time 找到包含数据的磁盘块地址,将磁盘块复制到主存中的一个缓冲区,write_time将数据写入主存更新后写入磁盘。

4.画一张状态图,讨论事务在执行期间所经历的典型状态

5.系统日志的作用是什么?系统日志内典型记录类型是什么?什么是事务提交点,他们为什么重要?

记录所有影响数据库项的值的事务;保存在磁盘中,可用来恢复数据库。
事务所有的数据库访问操作都已经成功执行,并且所有操作对数据库的影响都已记录在日志时,该事务就到达了提交点。
系统发生故障时,需要扫描日志检查日志提交点。没有到达提交点的事务恢复时必须回滚这些事务取消对数据库的影响。

6.讨论数据库的原子性,持续性,隔离性和一致性保持的性质

原子性:事务处理的一个原子单位,它或者全部执行或者全部不执行。
持续性:已提交的事务对数据库的改变在数据库中应该是持续存在的这些改变不会因为任何故障而丢失
隔离性:事务的执行表现为与其他事务相隔离,即事务的执行不受其他并发事务执行的干扰
一致性保持:事务的执行将从一个一致性状态转移到另一个一致性状态

7.什么是调度(历史)?给出可恢复,无级联的和严格的电镀的概念定义,并对他们在可恢复性方面进行比较

8.讨论事务等价大的不同标准。冲突等价和视图等价之间的区别是什么?

9.什么是串行调度,什么是可串行调度,为什么认为串行调度是正确的,为什么认为可串行调度化调度是正确的

10.约束写假定和无约束写假定之间的区别是什么,哪一个更现实

11.讨论可串行性如何用于支持数据库系统中的并发控制。为什么有时候认为可串行性检验数据库正确的方法过于严格?

12描述SQL中的4个隔离级别

未提交读(Read uncommitted):在未提交读级别,事务中的修改,即使没有提交,对其他事务也都是可见的。事务可以读取未提交的数据,这也被称为脏读(Dirty Read)。
这个级别会导致很多问题,从性能上来说,未提交读不会比其他的级别好太多,但是缺乏其他级别的很多好处,在实际应用中一般很少使用。 提交读(Read committed):大多数数据库系统的默认隔离级别都是提交读(但Mysql不是)。提交读满足前面提到的隔离性的简单定义:一个事务开始时,只能“看见”已经提交的事务所做的修改。
换句话说,一个事务从开始直到提交之前,所做的任何修改对其他事务都是不可见的。这个级别有时候也叫做不可重复读(nonrepeatable read),因为两次执行同样的查询,可能会得到不一样的结果。 可重复读(Repeatable read):可重复读解决了脏读的问题。该级别保证了在同一个事务中多次读取同样记录的结果是一致的。但是理论上,可重复读隔离级别还是无法解决另外一个幻读(Phantom read)问题。
所谓幻读,指的是当某个事务在读取某个范围内的记录时,另外一个事务中又在该范围插入了新的记录,当之前的事务再次读取该范围的记录时,会产生幻行(Phantom row)。可重复读是MySQL的默认事务隔离级别。 可串行化(Serializable):可串行化是最高的隔离级别。它通过强制事务串行执行,避免了前面所说的幻读问题。简单来说,可串行化会在读取的每一行数据上都加上锁,所以可能导致大量的超时和锁争用问题。
实际应用中也很少用到这个隔离级别,只有在非常需要确保数据的一致性而且可以接受没有并发的情况下,才考虑用该级别。

13.定义脏读,不可重复读,和幻读所引起的违反类型。

原文地址:https://www.cnblogs.com/jiuyachun/p/10214863.html