我认为以前曾有人问过这个问题,但不幸的是我找不到我的问题的答案。
我有一个表,并且正在使用update
语句更新一列。同时,我正在使用create table
语句运行select
查询,该语句正在从也正在更新的表和列中检索数据。
我的问题是:这会导致create table
语句输出中的错误结果吗? update
查询完成第1次,然后执行带有create table
的{{1}}吗?我只知道select
语句的执行时间更长。
答案 0 :(得分:1)
在PostgreSQL中,读者永远不要锁定作者,反之亦然。 PostgreSQL的MVCC实现保证了这一点,该实现保留了旧的行版本。
如果更新事务尚未完成,则读取事务将看到旧值,并且结果是一致的。
PostgreSQL中没有什么可以显着降低SELECT
语句的速度,但是I / O争用当然是一种可能的解释。