Re: [GENERAL] Autovacuum stuck for hours, blocking queries

Поиск
Список
Период
Сортировка
От Adrian Klaver
Тема Re: [GENERAL] Autovacuum stuck for hours, blocking queries
Дата
Msg-id 4f31f033-647c-d453-c0d8-170a3de131c5@aklaver.com
обсуждение исходный текст
Ответ на Re: [GENERAL] Autovacuum stuck for hours, blocking queries  (Tim Bellis <Tim.Bellis@metaswitch.com>)
Список pgsql-general
On 02/16/2017 08:45 AM, Tim Bellis wrote:
> Thank you all - that's really useful :-)
>
> The other query that gets blocked behind the vacuum is the below (truncated).
>
> This query is generated by jdbc in this method:
> org.postgresql.jdbc2.AbstractJdbc2DatabaseMetaData.getIndexInfo(AbstractJdbc2DatabaseMetaData.java:4023)

Is JDBC doing anything else before issuing this?

>
> Even though this is a read only query, is it also expected to be blocked behind the vacuum? Is there a way of getting
indexesfor a table which won't be blocked behind a vacuum?
 

Table 13.2 here:

https://www.postgresql.org/docs/9.5/static/explicit-locking.html

shows the conflicts with SHARE UPDATE EXCLUSIVE(vacuum).

pg_locks:

https://www.postgresql.org/docs/9.5/static/view-pg-locks.html

shows locks being held. So next time it happens I would take a look and 
see if you can work backwards from there.

You could directly access the index information using:

https://www.postgresql.org/docs/9.6/static/catalog-pg-index.html
https://www.postgresql.org/docs/9.6/static/catalog-pg-class.html

>
> Thank you all again,
>
> Tim
>
> SELECT NULL AS TABLE_CAT, n.nspname AS TABLE_SCHEM,   ct.relname AS TABLE_NAME, NOT i.indisunique AS NON_UNIQUE,
NULLAS INDEX_QUALIFIER, ci.relname AS INDEX_NAME,   CASE i.indisclustered     WHEN true THEN 1    ELSE CASE am.amname
   WHEN 'hash' THEN 2      ELSE 3    END   END AS TYPE,   (i.keys).n AS ORDINAL_POSITION,
pg_catalog.pg_get_indexdef(ci.oid,(i.keys).n, false) AS COLUMN_NAME,   CASE am.amcanorder     WHEN true THEN CASE
i.indoption[(i.keys).n- 1] & 1       WHEN 1 THEN 'D'       ELSE 'A'     END     ELSE NULL   END AS ASC_OR_DESC,
ci.reltuplesAS CARDINALITY,   ci.relpages AS PAGES,   pg_catalog.pg_get_expr(i.indpred, i.indrelid) AS FILTER_CONDITION
FROMpg_catalog.pg_class ct   JOIN pg_catalog.pg_namespace n ON (ct.relnamespace = n.oid)   JOIN (SELECT i.indexrelid,
i.indrelid,i.indoption,           i.indisunique, i.indisclustered, i.indpred,           i.indexprs,
information_schema._pg_expandarray(i.indkey)AS keys         FROM pg_catalog.pg_index i) i     ON (ct.oid = i.ind
 

This query is cut off so cannot say whether it is the issue or not.

>


-- 
Adrian Klaver
adrian.klaver@aklaver.com

В списке pgsql-general по дате отправления:

Предыдущее
От: Peter Devoy
Дата:
Сообщение: [GENERAL] Function out there to identify pseudo-empty fields, e.g. "n/a", "--", etc?
Следующее
От: Adrian Klaver
Дата:
Сообщение: Re: [GENERAL] Service configuration file and password security