Hi Justin, Only one query is causing the issue, sharing the def of indexes. Please have a look.
On Wed, 30 Mar 2022 at 01:09, Justin Pryzby <pry...@telsasoft.com> wrote: > On Wed, Mar 30, 2022 at 12:52:05AM +0530, Rambabu g wrote: > > > What indexes are defined on this table ? > > > How large are they ? > > > > There are three indexes defined on the table, each one is around 20 to > 25GB > > and the indexes is create on > > Did you mean to say something else after "on" ? > > Show the definition of the indexes from psql \d > Index Definition : postgres=# \d+ idx_empno Index "l2.pd_activity_empi" Column | Type | Key? | Definition | Storage | Stats target --------+-------------------------+------+------------+----------+-------------- empno | character varying(2000) | yes | empno | extended | btree, for table "emp" postgres=# \d+ id_dt Index "dt" Column | Type | Key? | Definition | Storage | Stats target --------+-----------------------------+------+------------+---------+-------------- dt | timestamp without time zone | yes | dt | plain | btree, for table "emp" postgres=# \d+ idx_tp Index "idx_tp" Column | Type | Key? | Definition | Storage | Stats target --------+-------------------------+------+------------+----------+-------------- tp | character varying(2000) | yes | tp | extended | btree, for table "emp" Query is been running for 30min. > postgres=# explain select distinct empno from emp where sname='test' > and tp='EMP NAME 1' > > Is this the only query that's performing poorly ? > You should send explain (analyze,buffers) for the prolematic queries. > postgres=# select pid,(now()-query_start) as age,wait_event_type,wait_event,query from pg_stat_activity where state!='idle'; pid | age | wait_event_type | wait_event | query -------+-----------------+-----------------+---------------+------------------------------------------------------------------------------------------------------------------- 32154 | 00:09:56.131136 | IPC | ExecuteGather | explain analyze select distinct empno from emp where sname='test' and tp='EMP NAME 1' 847 | 00:09:56.131136 | IO | DataFileRead | explain analyze select distinct empno from emp where sname='test' and tp='EMP NAME 1' 848 | 00:09:56.131136 | IO | DataFileRead | explain analyze select distinct empno from emp where sname='test' and tp='EMP NAME 1' 849 | 00:09:56.131136 | IO | DataFileRead | explain analyze select distinct empno from emp where sname='test' and tp='EMP NAME 1' 850 | 00:09:56.131136 | IO | DataFileRead | explain analyze select distinct empno from emp where sname='test' and tp='EMP NAME 1' 851 | 00:09:56.131136 | IO | DataFileRead | explain analyze select distinct empno from emp where sname='test' and tp='EMP NAME 1' 852 | 00:09:56.131136 | IO | DataFileRead | explain analyze select distinct empno from emp where sname='test' and tp='EMP NAME 1' 645 | 00:00:00 | | | select pid,(now()-query_start) as age,wait_event_type,wait_event,query from pg_stat_activity where state!='idle' postgres=# SELECT COUNT(nullif(isdirty,'f')) dirty, COUNT(1) as all, COALESCE(c.relname, b.relfilenode::text) FROM pg_buffercache b LEFT JOIN pg_class c ON b.relfilenode=pg_relation_filenode(c.oid) GROUP BY 3 ORDER BY 1 DESC,2 DESC LIMIT 9; dirty | all | coalesce -------+---------+--------------------------------- 32 | 136 | fn_deployment 18 | 176 | fn_deployment_key 8 | 12 | event_logs_pkey 6 | 157 | event_logs 1 | 355 | pg_class 0 | 2890261 | 0 | 252734 | utput_status 0 | 378 | emp 0 | 299 | 1249 (9 rows) -bash-4.2$ sar Linux 3.10.0-1160.59.1.el7.x86_64 (ip-10-54-145-108.ec2.internal) 03/30/2022 _x86_64_ (24 CPU) 12:00:01 AM CPU %user %nice %system %iowait %steal %idle 12:10:01 AM all 1.19 0.00 0.82 36.17 0.00 61.81 12:20:01 AM all 0.72 0.00 0.75 35.59 0.00 62.94 12:30:01 AM all 0.74 0.00 0.77 35.04 0.00 63.46 12:40:02 AM all 0.74 0.00 0.76 34.65 0.00 63.85 12:50:01 AM all 0.77 0.00 0.78 33.36 0.00 65.09 01:00:01 AM all 0.83 0.00 0.78 27.46 0.00 70.93 01:10:01 AM all 0.85 0.00 0.78 30.11 0.00 68.26 01:20:01 AM all 0.70 0.00 0.61 20.46 0.00 78.24 01:30:01 AM all 0.15 0.00 0.06 0.02 0.00 99.77 01:40:01 AM all 0.14 0.00 0.05 0.00 0.00 99.80 01:50:01 AM all 0.14 0.00 0.05 0.00 0.00 99.80 02:00:01 AM all 0.15 0.00 0.06 0.00 0.00 99.78 02:10:01 AM all 0.14 0.00 0.05 0.00 0.00 99.80 02:20:01 AM all 0.14 0.00 0.05 0.00 0.00 99.81 02:30:01 AM all 0.15 0.00 0.06 0.00 0.00 99.80 02:40:01 AM all 0.14 0.00 0.05 0.00 0.00 99.80 02:50:01 AM all 0.14 0.00 0.05 0.00 0.00 99.80 03:00:01 AM all 0.14 0.00 0.05 0.00 0.00 99.80 03:10:01 AM all 0.14 0.00 0.05 0.00 0.00 99.81 03:20:01 AM all 0.14 0.00 0.05 0.00 0.00 99.81 03:30:01 AM all 0.23 0.00 0.15 2.18 0.00 97.44 03:40:01 AM all 1.16 0.00 0.87 22.76 0.00 75.21 03:50:01 AM all 0.75 0.00 0.60 13.89 0.00 84.76 04:00:01 AM all 1.13 0.00 0.87 22.75 0.00 75.26 04:10:01 AM all 0.87 0.00 0.79 22.91 0.00 75.43 04:20:01 AM all 0.71 0.00 0.71 22.07 0.00 76.50 Average: all 0.50 0.00 0.41 13.81 0.00 85.28 -bash-4.2$ iostat Linux 3.10.0-1160.59.1.el7.x86_64 (ip-.ec2.internal) 03/30/2022 _x86_64_ (24 CPU) avg-cpu: %user %nice %system %iowait %steal %idle 0.44 0.00 0.34 13.35 0.00 85.86 Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn nvme1n1 1370.20 54514.54 4964.18 7297971937 664565000 nvme2n1 0.92 0.12 223.19 16085 29878260 nvme0n1 0.30 5.12 5.23 685029 699968 -bash-4.2$ iostat -d Linux 3.10.0-1160.59.1.el7.x86_64 (ip-ec2.internal) 03/30/2022 _x86_64_ (24 CPU) Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn nvme1n1 1370.25 54518.06 4963.95 7298793425 664565248 nvme2n1 0.92 0.12 223.17 16085 29878260 nvme0n1 0.30 5.12 5.23 685029 699968 -bash-4.2$ free -g total used free shared buff/cache available Mem: 92 1 0 2 90 87 Swap: 0 0 0 > > > > > Hypervisor vendor: KVM > > > > > > Are KSM or THP enabled on the hypervisor ? > > > No, the Ec2 VM is delicate to postgres DB instances only. > > Oh, so this is an EC2 and you cannot change the hypervisor itself. > > > -bash-4.2$ tail /sys/kernel/mm/ksm/run > /sys/kernel/mm/transparent_hugepage/khugepaged/defrag > /sys/kernel/mm/transparent_hugepage/enabled > /sys/kernel/mm/transparent_hugepage/defrag > ... > > ==> /sys/kernel/mm/transparent_hugepage/defrag <== > > [always] madvise never > I doubt it will help, but you could try disabling these. > It's a quick experiment anyway. > Disable THP -bash-4.2$ tail /sys/kernel/mm/ksm/run /sys/kernel/mm/transparent_hugepage/khugepaged/defrag /sys/kernel/mm/transparent_hugepage/enabled /sys/kernel/mm/transparent_hugepage/defrag ==> /sys/kernel/mm/ksm/run <== 0 ==> /sys/kernel/mm/transparent_hugepage/khugepaged/defrag <== 1 ==> /sys/kernel/mm/transparent_hugepage/enabled <== always madvise [never] ==> /sys/kernel/mm/transparent_hugepage/defrag <== always madvise [never] Regards, Rambabu.