PostgreSQL 11.1 - стабилизировать удаление разделов во время выполнения - PullRequest
0 голосов
/ 04 марта 2019

Мы оцениваем PostgreSQL 11 для нашего производства, пытаясь использовать разделы для облегчения работы в вакууме.

У нас есть система с 4251 обновлением в секунду, ~ 1000 удалений в секунду и ~ 3221 вставками в секунду и 1миллиардов транзакций в день.

Мы сталкиваемся с проблемой того, что удаление разделов не работает стабильно с обновлениями, хотя у нас есть:

  1. part_key = значение в нашем where предложении
  2. enable_partition_pruning = 'on'.

Мы поняли, что в 11 есть новый патч, который должен поддерживать (ускоренное удаление разделов + сокращение разделов во время выполнения)

Как мы можем стабилизировать удаление разделов?Как определить причину, когда она не работает?Какие параметры влияют на это?

1 Ответ

0 голосов
/ 04 марта 2019

Если вы установите enable_partition_pruning в PostgresSQL v11, он не будет сканировать те разделы, которые могут быть исключены из-за условий WHERE.

Это будет работать только в тех случаях, когда оптимизатор или исполнитель можетлегко вывести условие на ключ разделения.Таким образом, в вашем запросе должно быть простое условие вида key <em><operator></em> <em><constant></em>, где <em><operator></em> равно =, <, >, <= или >=, а <em><constant></em> является постоянным дляПродолжительность запроса (например, не содержит VOLATILE функций).

Пожалуйста, приведите пример, который описывает, что вы имеете в виду под словом "не работает стабильно", тогда можно сказать больше.

...