我想知道是否有人知道为什么 PostgreSQL、SQL Server、Oracle、Vertica、DB2、Informix和SybaseREAD COMMITTED
的默认事务隔离级别的历史。
MySQL 使用默认的 REPEATABLE READ,至少对于 InnoDB,SQLite和NuoDB 也是如此(他们称之为“一致读取”)。
同样,我不是在问不同隔离级别之间有什么区别,而是要解释为什么READ COMMITTED
在这么多 SQL 数据库中选择默认值。我的猜测是:性能优势小、易于实现、SQL 标准本身的一些建议和/或“它一直都是这样”。这种选择的明显缺点是,READ COMMITTED
对于开发人员来说,这往往是非常违反直觉的,并且可能导致细微的错误。