Re: Re: How can i monitor exactly what (partition) tables are accessed by a query?

Поиск
Список
Период
Сортировка
От Robert Nix
Тема Re: Re: How can i monitor exactly what (partition) tables are accessed by a query?
Дата
Msg-id CAC2EkfOZDaLKBvu3PN_mTmE9d-cJz8Y7vNQAaEMdYNo0ONm9fg@mail.gmail.com
обсуждение исходный текст
Ответ на Re: How can i monitor exactly what (partition) tables are accessed by a query?  (David G Johnston <david.g.johnston@gmail.com>)
Ответы Re: Re: How can i monitor exactly what (partition) tables are accessed by a query?  (Alban Hertroys <haramrae@gmail.com>)
Список pgsql-general
Thanks, David. 

I have read that page many times but clearly I have forgotten this:

  • Constraint exclusion only works when the query's WHERE clause contains constants (or externally supplied parameters). For example, a comparison against a non-immutable function such asCURRENT_TIMESTAMP cannot be optimized, since the planner cannot know which partition the function value might fall into at run time.

I had worked around this "issue" some time ago but I clearly should have documented _why_ I worked around it in the way I did.






On Thu, Sep 18, 2014 at 9:39 PM, David G Johnston <david.g.johnston@gmail.com> wrote:
Robert Nix wrote
> I'm experiencing a problem with queries apparently not using the check
> constraints of my partition tables (tried constraint_exclusion =partition
> and =on with same results) and explain isn't sufficient to diagnose the
> issue because the value for the check constraint in the query comes from a
> join condition.
>
> What i need is a way to see exactly what tables are actually accessed by
> the query.
>
> When i hardcode the check constraint column's value into the query, the
> explain plan reports what i expect it should be executing but the
> performance of the query indicates that the partitions are not actually
> being used when the check constraint value is obtained from a join
> condition.
>
> Any and all help appreciated.
> --
> .nix

Please provide a minimal schema and example query so we can explain exactly
where your misunderstanding is coming from.  Generally, though, a partiton
must be excluded during plan time so the data in a table will not effect the
final plan - only constants can do that.

You should read this:

http://www.postgresql.org/docs/9.3/static/ddl-partitioning.html

and then ask specific questions with, ideally, working examples.

And you should also provide an EXPLAIN ANALYZE since that will show almost
everything that is touched by the executor.

David J.



--
View this message in context: http://postgresql.1045698.n5.nabble.com/How-can-i-monitor-exactly-what-partition-tables-are-accessed-by-a-query-tp5819534p5819582.html
Sent from the PostgreSQL - general mailing list archive at Nabble.com.


--
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general



--
.nix

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

Предыдущее
От: Robert Nix
Дата:
Сообщение: Re: How can i monitor exactly what (partition) tables are accessed by a query?
Следующее
От: Alvaro Herrera
Дата:
Сообщение: Re: [SQL] pg_multixact issues