Статья на сайте CYBERTEC, «Убиваем производительность с помощью разделения в PostgreSQL», написанная Ганс-Юргеном Шёнигом, рассказывает о том, как использование разделения (partitioning, партиционирование) в PostgreSQL влияет на производительность базы данных.
В статье обсуждается преимущества использования PostgreSQL в сравнении с Oracle. Разделение (partitioning) — это часть ядра PostgreSQL.
Однако, как и любая другая технология, разделение не без рисков. Хотя партиционирование может помочь обрабатывать большие объемы данных, у него также есть недостатки, которые следует учесть при использовании этой функции.
Статья предлагает пример, в котором создается таблица из двух столбцов и загружается 10 миллионов строк. Когда вы ищете небольшое количество значений, вы получаете один индексный скан. Запрос выполняется за долю миллисекунды, и PostgreSQL может выполнять тысячи таких запросов в секунду на одном процессорном ядре.
Затем статья предлагает использовать разделение для хранения тех же данных. Она демонстрирует создание таблицы с использованием хэш-разделов и загрузки тех же данных. После создания индекса и выполнения той же операции запроса, план выполнения становится гораздо сложнее, что указывает на проблему, обсуждаемую в статье.
В заключение статья указывает на то, что использование разделения может замедлить обработку запросов, так как PostgreSQL должен проверить каждую часть на наличие соответствующих данных. Это может увеличить время выполнения запроса и уменьшить общую производительность.
https://www.cybertec-postgresql.com/en/killing-performance-with-postgresql-partitioning/
Добавить комментарий