在数据库事务的四种隔离级别中,不能避免脏读的是 (52)________________。

admin2020-04-30  81

问题 在数据库事务的四种隔离级别中,不能避免脏读的是 (52)________________。

选项 A、Serializable
B、Repeatable read
C、Read committed
D、Read uncommitted

答案D

解析 本题考查数据库事务的四种隔离级别的知识。
    四种事务隔离级别的区别以及可能出现的问题如下。
    ①Read uncommitted(读未提交)
    如果一个事务已经开始写数据,则另外一个事务不允许同时进行写操作,但允许其他事务读此数据。该隔离级别可以通过“排他写锁”实现。
    避免了丢失修改,却可能出现脏读。也就是说事务B读取到了事务A未提交的数据。
    ②Read committed(读提交)
    读取数据的事务允许其他事务继续访问该行数据,但是未提交的写事务将会禁止其他事务访问该行。
    该隔离级别避免了脏读,但是却可能出现不可重复读。事务A事先读取了数据,事务B紧接着更新了数据,并提交了事务,而事务A再次读取该数据时,数据已经发生了改变。
    ③Repeatable read(可重复读取)
    读取数据的事务将会禁止写事务(但允许读事务),写事务则禁止任何其他事务。
    避免了不可重复读取和脏读,但是有时可能出现幻读。这可以通过“共享读锁”和“排他写锁”实现。
    ④Serializable(可串行化)
    提供严格的事务隔离。它要求事务可串行化地并发执行。如果仅仅通过“行级锁”是无法实现事务可串行化的,而通过“表级锁”来实现,即通过对整个表加锁,避免同一事务的两次读之间,表中插入新的记录导致两次读取的记录数不同,称为幻读。
    可串行化是最高的事务隔离级别,同时并发度会很低,一般很少使用。在该级别下,任何对数据库的读写都不会产生不一致性,但有时不精确的读取是允许的,但写入必须保证正确,常用的隔离级别是Read committed。
转载请注明原文地址:https://kaotiyun.com/show/T5TZ777K
0

最新回复(0)