“脏读取”隔离(或 ANSI 读取未落实)级别不在 SELECT 语句执行期间所访存的任何行上放置任何锁。对于用于查询的静态表,“脏读取”隔离非常合适。
用户 1 启动事务。 用户 1 插入行 A。 用户 2 读取行 A。 用户 1 回滚行 A。
用户 2 读取行 A,几秒钟后用户 1 回滚该行。 实际上,用户 2 读取了从未落实到数据库的行。 回滚的未落实数据在应用程序中可能是个问题。
因为数据库服务器不为查询检查或放置任何锁定,脏读取隔离向所有隔离级别提供了最优性能。 但是,因为回滚的未落实数据可能有问题,所以使用脏读取隔离时请小心。
由于回滚的未落实数据问题只是事务问题,因而没有事务的数据库(从而不允许事务)使用脏读取作为缺省隔离级别。实际上,对于不具有事务日志记录的数据库,脏读取是唯一允许的隔离级别。