select vesseltrav0_.id as id1_0_, vesseltrav0_.created as created2_0_, vesseltrav0_.lastUpdated as lastUpda3_0_, vesseltrav0_.geoFenceId as geoFence4_0_,
vesseltrav0_.geoFenceName as geoFence5_0_, vesseltrav0_.mmsi as mmsi6_0_, vesseltrav0_.position as position7_0_, vesseltrav0_.timestamp as timestam8_0_,
vesseltrav0_.vesselEnteredTime as vesselEn9_0_, vesseltrav0_.vesselExitTime as vesselE10_0_, vesseltrav0_.vesselId as vesselI11_0_
from VESSEL_ENTERED_GEOFENCE vesseltrav0_ where vesseltrav0_.geoFenceId=$1 and vesseltrav0_.vesselId=$2
我有一个守护程序将记录记录到数据库中,并定期更新它们,但似乎每小时更新一次或两次,这种看起来相当无辜的SQL会拒绝完成。
CREATE TABLE public.vessel_entered_geofence
(
id bigint NOT NULL,
geofenceid character varying(36),
geofencename character varying(128),
mmsi character varying(32),
vesselenteredtime timestamp without time zone,
vesselexittime timestamp without time zone,
vesselid character varying(36),
created timestamp without time zone,
lastupdated timestamp without time zone,
"position" geometry(Point,4326),
"timestamp" timestamp without time zone,
CONSTRAINT vessel_entered_geofence_pkey PRIMARY KEY (id)
)
WITH (
OIDS=FALSE
);
CREATE INDEX vessel_entered_geofence_idx
ON public.vessel_entered_geofence
USING btree
(mmsi COLLATE pg_catalog."default");
CREATE INDEX vessel_entered_geofence_gid_idx
ON public.vessel_entered_geofence
USING btree
(geofenceid COLLATE pg_catalog."default");
CREATE INDEX vessel_entered_geofence_vid_idx
ON public.vessel_entered_geofence
USING btree
(vesselid COLLATE pg_catalog."default");
当我在SQL上运行解释计划时,它使用的是索引,手动运行SQL会很快返回答案。所有连接都处于空闲状态(编辑:它们都是“事务中的空闲”),并且它们不等待任何东西(根据pg_stats_activity)。
select * from pg_stat_activity order by backend_start
http://i.stack.imgur.com/0pp8X.png
select a.*, b.relname from pg_locks a left outer join pg_class b on a.relation = b.oid
https://puu.sh/gGE9n/96da69d341.png
我真的不知道下一步该去哪里确定问题是什么,他们似乎在闲着,不等待任何东西,桌子上没有锁会导致他们挂起来(除非我读错了)。如有任何帮助,将不胜感激。