Performance of pgAdmin 14 Beta 1

From: Kieran McCusker <kieran(dot)mccusker(at)kwest(dot)info>
To: pgadmin-support(at)postgresql(dot)org
Subject: Performance of pgAdmin 14 Beta 1
Date: 2011-05-17 11:00:43
Message-ID: 4DD2555B.4060905@kwest.info
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgadmin-support

Hi

I've noticed the performance of version 14 is noticeably worse than
version 12 when clicking on tables.

~0.1 seconds for V12 comapared to ~0.5 seconds in V14.

Looking at the logs I see that the details for all the tabs are selected
by V14 but in V12 only the details for the current tab of the property
pane are selected.

As the additional tabs are used much less frequently by me and my users
couldn't they be lazy loaded as they were in V12?

Many thanks

Kieran

For reference the slow queries are the 4th, 5th and 6th in the log:-

SELECT DISTINCT dep.deptype, dep.classid, cl.relkind, ad.adbin, ad.adsrc,
CASE WHEN cl.relkind IS NOT NULL THEN cl.relkind ||
COALESCE(dep.objsubid::text, '')
WHEN tg.oid IS NOT NULL THEN 'T'::text
WHEN ty.oid IS NOT NULL THEN 'y'::text
WHEN ns.oid IS NOT NULL THEN 'n'::text
WHEN pr.oid IS NOT NULL THEN 'p'::text
WHEN la.oid IS NOT NULL THEN 'l'::text
WHEN rw.oid IS NOT NULL THEN 'R'::text
WHEN co.oid IS NOT NULL THEN 'C'::text || contype
WHEN ad.oid IS NOT NULL THEN 'A'::text
ELSE '' END AS type,
COALESCE(coc.relname, clrw.relname) AS ownertable,
CASE WHEN cl.relname IS NOT NULL AND att.attname IS NOT NULL
THEN cl.relname || '.' || att.attname
ELSE COALESCE(cl.relname, co.conname, pr.proname,
tg.tgname, ty.typname, la.lanname, rw.rulename, ns.nspname)
END AS refname,
COALESCE(nsc.nspname, nso.nspname, nsp.nspname, nst.nspname,
nsrw.nspname) AS nspname
FROM pg_depend dep
LEFT JOIN pg_class cl ON dep.objid=cl.oid
LEFT JOIN pg_attribute att ON dep.objid=att.attrelid AND
dep.objsubid=att.attnum
LEFT JOIN pg_namespace nsc ON cl.relnamespace=nsc.oid
LEFT JOIN pg_proc pr ON dep.objid=pr.oid
LEFT JOIN pg_namespace nsp ON pr.pronamespace=nsp.oid
LEFT JOIN pg_trigger tg ON dep.objid=tg.oid
LEFT JOIN pg_type ty ON dep.objid=ty.oid
LEFT JOIN pg_namespace nst ON ty.typnamespace=nst.oid
LEFT JOIN pg_constraint co ON dep.objid=co.oid
LEFT JOIN pg_class coc ON co.conrelid=coc.oid
LEFT JOIN pg_namespace nso ON co.connamespace=nso.oid
LEFT JOIN pg_rewrite rw ON dep.objid=rw.oid
LEFT JOIN pg_class clrw ON clrw.oid=rw.ev_class
LEFT JOIN pg_namespace nsrw ON clrw.relnamespace=nsrw.oid
LEFT JOIN pg_language la ON dep.objid=la.oid
LEFT JOIN pg_namespace ns ON dep.objid=ns.oid
LEFT JOIN pg_attrdef ad ON ad.oid=dep.objid
WHERE dep.refobjid=26997594::oid
AND classid IN (
SELECT oid FROM pg_class
WHERE relname IN ('pg_class', 'pg_constraint', 'pg_conversion',
'pg_language', 'pg_proc',
'pg_rewrite', 'pg_namespace', 'pg_trigger',
'pg_type', 'pg_attrdef'))
ORDER BY classid, cl.relkind;

SELECT ref.relname AS refname, d2.refclassid, dep.deptype AS deptype
FROM pg_depend dep
LEFT JOIN pg_depend d2 ON dep.objid=d2.objid AND dep.refobjid !=
d2.refobjid
LEFT JOIN pg_class ref ON ref.oid=d2.refobjid
LEFT JOIN pg_attribute att ON d2.refclassid=att.attrelid AND
d2.refobjsubid=att.attnum
WHERE dep.refobjid=26997594::oid AND dep.classid=(SELECT oid FROM
pg_class WHERE relname='pg_attrdef')
AND dep.refobjid NOT IN (SELECT d3.refobjid FROM pg_depend d3 WHERE
d3.objid=d2.refobjid);

SELECT att.*, def.*, pg_catalog.pg_get_expr(def.adbin, def.adrelid) AS
defval, CASE WHEN att.attndims > 0 THEN 1 ELSE 0 END AS isarray,
format_type(ty.oid,NULL) AS typname, format_type(ty.oid,att.atttypmod)
AS displaytypname, tn.nspname as typnspname, et.typname as elemtypname,
ty.typstorage AS defaultstorage, cl.relname, na.nspname,
att.attstattarget, description, cs.relname AS sername, ns.nspname AS
serschema,
(SELECT count(1) FROM pg_type t2 WHERE t2.typname=ty.typname) > 1 AS
isdup, indkey,
CASE
WHEN inh.inhparent IS NOT NULL AND att.attinhcount>0
THEN inh.inhparent::regclass
ELSE NULL
END AS inhrelname,
EXISTS(SELECT 1 FROM pg_constraint WHERE conrelid=att.attrelid AND
contype='f' AND att.attnum=ANY(conkey)) As isfk
FROM pg_attribute att
JOIN pg_type ty ON ty.oid=atttypid
JOIN pg_namespace tn ON tn.oid=ty.typnamespace
JOIN pg_class cl ON cl.oid=att.attrelid
JOIN pg_namespace na ON na.oid=cl.relnamespace
LEFT OUTER JOIN pg_inherits inh ON inh.inhrelid=att.attrelid
LEFT OUTER JOIN pg_type et ON et.oid=ty.typelem
LEFT OUTER JOIN pg_attrdef def ON adrelid=att.attrelid AND
adnum=att.attnum
LEFT OUTER JOIN pg_description des ON des.objoid=att.attrelid AND
des.objsubid=att.attnum
LEFT OUTER JOIN (pg_depend JOIN pg_class cs ON objid=cs.oid AND
cs.relkind='S') ON refobjid=att.attrelid AND refobjsubid=att.attnum
LEFT OUTER JOIN pg_namespace ns ON ns.oid=cs.relnamespace
LEFT OUTER JOIN pg_index pi ON pi.indrelid=att.attrelid AND indisprimary
WHERE att.attrelid = 26997594::oid
AND att.attnum > 0
AND att.attisdropped IS FALSE
ORDER BY att.attnum;

SELECT DISTINCT ON(cls.relname) cls.oid, cls.relname as idxname,
indrelid, indkey, indisclustered, indisunique, indisprimary, n.nspname,
indnatts, cls.reltablespace AS spcoid, spcname, tab.relname as
tabname, indclass, con.oid AS conoid, CASE contype WHEN 'p' THEN
desp.description WHEN 'u' THEN desp.description WHEN 'x' THEN
desp.description ELSE des.description END AS description,
pg_get_expr(indpred, indrelid, true) as indconstraint, contype,
condeferrable, condeferred, amname
, substring(array_to_string(cls.reloptions, ',') from
'fillfactor=([0-9]*)') AS fillfactor
FROM pg_index idx
JOIN pg_class cls ON cls.oid=indexrelid
JOIN pg_class tab ON tab.oid=indrelid
LEFT OUTER JOIN pg_tablespace ta on ta.oid=cls.reltablespace
JOIN pg_namespace n ON n.oid=tab.relnamespace
JOIN pg_am am ON am.oid=cls.relam
LEFT JOIN pg_depend dep ON (dep.classid = cls.tableoid AND dep.objid
= cls.oid AND dep.refobjsubid = '0' AND dep.refclassid=(SELECT oid FROM
pg_class WHERE relname='pg_constraint') AND dep.deptype='i')
LEFT OUTER JOIN pg_constraint con ON (con.tableoid = dep.refclassid
AND con.oid = dep.refobjid)
LEFT OUTER JOIN pg_description des ON des.objoid=cls.oid
LEFT OUTER JOIN pg_description desp ON (desp.objoid=con.oid AND
desp.objsubid = 0)
WHERE indrelid = 26997594::oid AND contype='p'

ORDER BY cls.relname;

Responses

Browse pgadmin-support by date

  From Date Subject
Next Message Guillaume Lelarge 2011-05-17 19:20:02 Re: Ubuntu natty and SSL connections
Previous Message Andreas Neumann 2011-05-16 18:59:11 Re: Ubuntu natty and SSL connections