在 InnoDB 上用读未提交,什么也得不到
读未提交(RU)的卖点是「读不被写挡住」。但 InnoDB 的普通 SELECT 走 MVCC 读快照,本来就不会被写挡住。所以在 InnoDB 上选 RU,只额外换来了脏读。
SQL Server 是个例外:它默认的 RC 是靠锁实现的,读会被写挡住,所以 WITH (NOLOCK)(等于 RU)在那边很常见。
同一个隔离级别名字,在不同数据库里的实际代价可能完全不同。
读未提交(RU)的卖点是「读不被写挡住」。但 InnoDB 的普通 SELECT 走 MVCC 读快照,本来就不会被写挡住。所以在 InnoDB 上选 RU,只额外换来了脏读。
SQL Server 是个例外:它默认的 RC 是靠锁实现的,读会被写挡住,所以 WITH (NOLOCK)(等于 RU)在那边很常见。
同一个隔离级别名字,在不同数据库里的实际代价可能完全不同。