我正在构建一个后台作业,用于更新 Web 应用程序的用户统计信息。该作业目前需要 55-60 秒,我担心如果用户在作业运行的同时尝试加载他的统计信息页面会发生什么。
根据我对 PostgreSQL 和并发的阅读,如果两个客户端尝试访问同一行(一个更新和一个读取),并且我没有明确启动任何事务,第一个只需要等待第二个结束。
因此,如果我正确理解这一点,我可能会遭受的唯一性能损失是用户尝试在更新行的同时加载其统计信息页面的可能性极小。除非我明确配置 Postgres 来执行此操作,否则在 55-60 秒的工作期间,整个统计表不会被锁定,对吗?
这是正确的解释吗?我还缺少其他因素吗?
(我提到 Rails 部分以防万一它与上述情况有任何关系)
(另外:PostgreSQL 版本是 9.0.4)