postgresql - Insert 能否锁定选择/选择计数 (*) 或其他方式?

标签 postgresql sqlalchemy multiprocessing

我有多个工作进程读取数据并将数据插入同一个 postgresql 数据库。但有时,似乎什么都没有发生。难道一个进程的select或insert可能会阻塞/锁定另一个进程的insert或select?

最佳答案

除非您使用 LOCK TABLE .. EXCLUSIVE,否则无法在 Postgres 中阻止 SELECT 语句。

INSERT 但是可能 被试图插入相同主键值的另一个事务阻止。

如果遇到“好像什么都没发生”的情况,可以查询pg_stat_activity并检查 waiting 列以查看是否有任何连接被阻止。

关于postgresql - Insert 能否锁定选择/选择计数 (*) 或其他方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14360166/

相关文章:

multiprocessing - 支持并发和随机访问读取的快速、低内存、常量键值数据库

database - 如何为多个表创建一个公共(public) Id?

SQLAlchemy 一对多关系说明

python - SQLAlchemy/MySQL 在查询期间丢失与 MySQL 服务器的连接

python - 如何在多个进程之间共享缓存?

python - 阻塞进程中调用的多处理 pool.map

html - 从严格的 HTML 和 javascript 网站访问数据库的最佳方法是什么?

postgresql - Openerp/Odoo 可扩展性限制

PostgreSQL:如何更改 log_min_duration_statement 以使更改生效?

python - SQLAlchemy:覆盖查询中关系定义的 "order_by"