Как стать автором
Обновить

Секционируй и властвуй: делимся нетайными знаниями о секционировании в Postgres Pro

Уровень сложностиСредний
Время на прочтение13 мин
Количество просмотров2.2K
Всего голосов 13: ↑13 и ↓0+15
Комментарии5

Комментарии 5

Разделение выполняется по строчкам, на основании значений определённого поля или полей в этих строчках — такие поля называются ключом секционирования. 

Очень жаль, что в технической статье используется некорректная терминология. Нет в таблицах никаких "строчек"!!! Это слово применяется к типу данных.

В таблицах есть ЗАПИСИ.

В данном случае колонка city_code — ключ секционирования. 

И никаких "колонок" в таблице тоже нет. Есть ПОЛЯ.

Секционирование помогает: 

  1. Повышать производительность запросов: в плане запроса не фигурируют лишние секции, где нет строк, подпадающих под условия запроса.

.....

Ключ секционирования может включать только столбцы первичного ключа.

Увы, не всегда. Вот fiddle: https://dbfiddle.uk/AbaL9jxm

Во-первых, сразу видно, что секционирование замедляет процесс. Согласен, записей мало. Но тем не менее.

Во-вторых, точно так же сразу видно, что заметный эффект даёт только секционирование по префиксу первичного ключа. А секционирование по постфиксу заметно медленнее. На большом массиве данных мы бы наблюдали, наверное, Index Seek и Index Scan (или их аналоги) соответственно - а это по производительности две большие разницы.

А ещё секционирование здОрово замедлит запрос на обновление, требующий перемещения записи из одной секции в другую.

ну вы душнила. Тогда уж и секционирования нету. Есть партицирование

Партиционирование - это чисто калька. Секционирование - уже скорее всё-таки перевод. Корректный термин должен бы означать нечто типа "деление на разделы", но увы, одного слова с подобным значением в русском языке вроде бы нет.

ну вы душнила

Да. Но кто это ценит...

Справедливости ради. Строчки — это, конечно, нехорошо, надо было строки, но никак не записи. И колонки в литературе встречаются наравне со столбцами.

Записи и поля — это уже нечто не реляционное, обычно в языках программирования. К тому же поле относится к отдельной записи, а вот в качестве ключа в таблице выступают именно столбцы/колонки.

ну уж нет. Идти так до конца - кортежи, аттрибуты и отношения!!

Зарегистрируйтесь на Хабре, чтобы оставить комментарий