Hi everybody,
--
yavuzselim.sertoglu@xxxxxxxxxxxxx
Today I saw that two queries have been running for more then 12 hours(They are the same query actually).
mydb=# select * from pg_stat_activity where state='active' and state_change < now()-'12 hours'::interval;
-[ RECORD 1 ]----+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
datid | 49426
datname | mydb
pid | 7127
usesysid | 19467
usename | myuser
application_name |
client_addr | myip
client_hostname |
client_port | 49728
backend_start | 2018-05-30 02:00:00.011561+03
xact_start | 2018-05-30 02:00:00.02989+03
query_start | 2018-05-30 02:00:00.121761+03
state_change | 2018-05-30 02:00:00.121772+03
waiting | f
state | active
backend_xid |
backend_xmin | 89519517
query | select this_.ID as ID107_1_, this_.islemTuru as islemTuru107_1_, this_.kullanici_ID as kullanici7_107_1_, this_.loglananIslem as loglanan3_107_1_, this_.oncekiVeri as oncekiVeri107_1_, this_.tarih as tarih107_1_, this_.veri as veri107_1_, kullanici2_.ID as ID103_0_, kullanici2_.ad as ad103_0_, kullanici2_.aktif as aktif103_0_, kullanici2_.dbUser as dbUser103_0_, kullanici2_.ePosta as ePosta103_0_, kullanici2_.kullaniciAdi as kullanic6_103_0_, kullanici2_.kullaniciTipiEnum as kullanic7_103_0_, kullanici2_.parola as parola103_0_, kullanici2_.soyad as soyad103_0_ from t_log_kaydi this_ left outer join t_kullanici kullanici2_ on this_.kullanici_ID=kullanici2_.ID where this_.tarih<$1
-[ RECORD 2 ]----+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
datid | 49426
datname | mydb
pid | 7129
usesysid | 19467
usename | myuser
application_name |
client_addr | myip
client_hostname |
client_port | 49730
backend_start | 2018-05-30 02:00:00.012887+03
xact_start | 2018-05-30 02:00:00.03225+03
query_start | 2018-05-30 02:00:00.114039+03
state_change | 2018-05-30 02:00:00.114048+03
waiting | f
state | active
backend_xid |
backend_xmin | 89519517
query | select this_.ID as ID4_1_, this_.islemTuru as islemTuru4_1_, this_.kullanici_ID as kullanici7_4_1_, this_.loglananIslem as loglanan3_4_1_, this_.oncekiVeri as oncekiVeri4_1_, this_.tarih as tarih4_1_, this_.veri as veri4_1_, kullanici2_.ID as ID0_0_, kullanici2_.ad as ad0_0_, kullanici2_.aktif as aktif0_0_, kullanici2_.dbUser as dbUser0_0_, kullanici2_.ePosta as ePosta0_0_, kullanici2_.kullaniciAdi as kullanic6_0_0_, kullanici2_.kullaniciTipiEnum as kullanic7_0_0_, kullanici2_.parola as parola0_0_, kullanici2_.soyad as soyad0_0_ from t_log_kaydi this_ left outer join t_kullanici kullanici2_ on this_.kullanici_ID=kullanici2_.ID where this_.tarih<$1
I've explained this query(I used $1 as now())
mydb=# explain select this_.ID as ID107_1_, this_.islemTuru as islemTuru107_1_, this_.kullanici_ID as kullanici7_107_1_, this_.loglananIslem as loglanan3_107_1_, this_.oncekiVeri as oncekiVeri107_1_, this_.tarih as tarih107_1_, this_.veri as veri107_1_, kullanici2_.ID as ID103_0_, kullanici2_.ad as ad103_0_, kullanici2_.aktif as aktif103_0_, kullanici2_.dbUser as dbUser103_0_, kullanici2_.ePosta as ePosta103_0_, kullanici2_.kullaniciAdi as kullanic6_103_0_, kullanici2_.kullaniciTipiEnum as kullanic7_103_0_, kullanici2_.parola as parola103_0_, kullanici2_.soyad as soyad103_0_ from t_log_kaydi this_ left outer join t_kullanici kullanici2_ on this_.kullanici_ID=kullanici2_.ID where this_.tarih<now();
QUERY PLAN
------------------------------------------------------------------------------------------
Hash Left Join (cost=388.90..62945.67 rows=1166999 width=503)
Hash Cond: (this_.kullanici_id = kullanici2_.id)
-> Seq Scan on t_log_kaydi this_ (cost=0.00..46529.99 rows=1166999 width=374)
Filter: (tarih < now())
-> Hash (cost=278.40..278.40 rows=8840 width=129)
-> Seq Scan on t_kullanici kullanici2_ (cost=0.00..278.40 rows=8840 width=129)
(6 rows)
So I explain analyzed this query, it took about 6 seconds.
mydb=# explain(analyze,verbose,buffers) select this_.ID as ID107_1_, this_.islemTuru as islemTuru107_1_, this_.kullanici_ID as kullanici7_107_1_, this_.loglananIslem as loglanan3_107_1_, this_.oncekiVeri as oncekiVeri107_1_, this_.tarih as tarih107_1_, this_.veri as veri107_1_, kullanici2_.ID as ID103_0_, kullanici2_.ad as ad103_0_, kullanici2_.aktif as aktif103_0_, kullanici2_.dbUser as dbUser103_0_, kullanici2_.ePosta as ePosta103_0_, kullanici2_.kullaniciAdi as kullanic6_103_0_, kullanici2_.kullaniciTipiEnum as kullanic7_103_0_, kullanici2_.parola as parola103_0_, kullanici2_.soyad as soyad103_0_ from t_log_kaydi this_ left outer join t_kullanici kullanici2_ on this_.kullanici_ID=kullanici2_.ID where this_.tarih<now();
QUERY PLAN
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------
Hash Left Join (cost=388.90..62945.67 rows=1166999 width=503) (actual time=73.423..4781.951 rows=1170716 loops=1)
Output: this_.id, this_.islemturu, this_.kullanici_id, this_.loglananislem, this_.oncekiveri, this_.tarih, this_.veri, kullanici2_.id, kullanici2_.ad, kullanici2_.aktif, kullanici2_.dbuser, kull
anici2_.eposta, kullanici2_.kullaniciadi, kullanici2_.kullanicitipienum, kullanici2_.parola, kullanici2_.soyad
Hash Cond: (this_.kullanici_id = kullanici2_.id)
Buffers: shared hit=29215
-> Seq Scan on public.t_log_kaydi this_ (cost=0.00..46529.99 rows=1166999 width=374) (actual time=0.013..1783.133 rows=1170716 loops=1)
Output: this_.id, this_.islemturu, this_.loglananislem, this_.oncekiveri, this_.tarih, this_.veri, this_.kullanici_id
Filter: (this_.tarih < now())
Buffers: shared hit=29025
-> Hash (cost=278.40..278.40 rows=8840 width=129) (actual time=73.284..73.284 rows=9134 loops=1)
Output: kullanici2_.id, kullanici2_.ad, kullanici2_.aktif, kullanici2_.dbuser, kullanici2_.eposta, kullanici2_.kullaniciadi, kullanici2_.kullanicitipienum, kullanici2_.parola, kullanici2_.
soyad
Buckets: 16384 Batches: 1 Memory Usage: 1604kB
Buffers: shared hit=190
-> Seq Scan on public.t_kullanici kullanici2_ (cost=0.00..278.40 rows=8840 width=129) (actual time=0.008..34.170 rows=9134 loops=1)
Output: kullanici2_.id, kullanici2_.ad, kullanici2_.aktif, kullanici2_.dbuser, kullanici2_.eposta, kullanici2_.kullaniciadi, kullanici2_.kullanicitipienum, kullanici2_.parola, kullan
ici2_.soyad
Buffers: shared hit=190
Planning time: 0.645 ms
Execution time: 5938.714 ms
(17 rows)
PostgreSQL version is 9.5.3 on CentOS 7.2.1511
[root@myserver]# cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core)
mydb=# select version();
version
---------------------------------------------------------------------------------------------------------
PostgreSQL 9.5.3 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-4), 64-bit
(1 row)
I could not figure out what the problem is.
I would be happy if someone could help me to solve this situation.
Saygılarımla
Yavuz Selim Sertoğlu
Veritabanı Uzmanı
T 0 312 220 1 220
F 0 312 286 00 10
M 0 542 728 08 02yavuzselim.sertoglu@xxxxxxxxxxxxx