我正在运行Postgres 9.22.2并尝试运行以下语句:
从表格限制100中选择*;
当我这样做时,命令就会挂起。 ps输出表示它 等待:
postgres lookup [local] COPY
postgres: lookup exomeSNP [local] SELECT waiting
我有一个shell脚本,可以定期复制CSV中的数据。
以下是pg_stat_activity的前2条记录
datname | pid | state | query
------------+-------+--------+-------------------------------------------------------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------
lookup | 22243 | active | copy cell_info(radio, mcc, net, area, cell, unit, lon, lat, range, samples, changeable, created, updated, average_signal) From '/data/cell-dup.cs
v' DELIMITER ',' CSV HEADER
lookup | 6529 | active | SELECT * FROM "public"."cell_info" WHERE "cell"=$1 and “net"=$4 ORDER BY "cell_info_id" LIMIT 1
答案 0 :(得分:1)
并发事务在表上持有ACCESS EXCLUSIVE
锁。
TRUNCATE
,ALTER TABLE
或CREATE INDEX
等语句需要此类锁定。仅举几例。
您可以通过查询pg_locks
视图找出哪个交易。
pg_stat_activity
将告诉您并发事务正在做什么。它不一定是导致锁定的事务中的最后一个语句。
答案 1 :(得分:-1)
Bud你可以从postgres活动日志调试
SELECT datname,pid,state,query FROM pg_stat_activity
Execute this query and find the state of query