【发布时间】:2020-08-01 18:20:36
【问题描述】:
假设我们有一张表bookings,其中包含十亿条记录。我们编写了一个简单的SELECT 查询,通过一些WHERE 子句从该表中选择一些记录(与WHERE 子句中的内容无关。此查询将花费几秒钟)。在执行了这个SELECT 查询之后(在它完成之前),我们在bookings 表中插入了一条记录(这条记录满足第一个SELECT 查询的WHERE 子句)。
问题:“当第一个 SELECT 查询完成时会选择这条新记录吗?”
我希望得到有关 PostgreSQL 案例的答案,但很高兴听到 MySQL、SQL Server 和其他人在这种情况下的表现。
谢谢。
【问题讨论】:
-
MySQL 不会看到更新(除了一些非常不可能的情况),但我不确定您是否会可靠地看到更新事务。你想看到什么行为?
-
Postgresql 在选择开始后看不到任何更改。至少默认情况下(read_committed 隔离级别)。见这里:postgresql.org/docs/current/transaction-iso.html
标签: sql postgresql