【发布时间】:2018-08-02 06:04:03
【问题描述】:
我正在运行 Postgres 9.22.2 并尝试运行以下语句:
select * from table limit 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
【问题讨论】:
-
我相信你必须等到 COPY 命令完成才能查询表。其他任何事情都会破坏数据库的目的。
-
@JimJones:
copy只是插入到表中,不应阻塞 SELECT 语句。 -
您应该检查 SELECT 正在等待什么。
ps不是写工具,需要检查 pg_locks 和 pg_stat_activity:wiki.postgresql.org/wiki/Lock_Monitoring
标签: postgresql psql postgresql-9.3 postgresql-9.2