Комментарии 5
Разделение выполняется по строчкам, на основании значений определённого поля или полей в этих строчках — такие поля называются ключом секционирования.
Очень жаль, что в технической статье используется некорректная терминология. Нет в таблицах никаких "строчек"!!! Это слово применяется к типу данных.
В таблицах есть ЗАПИСИ.
В данном случае колонка city_code — ключ секционирования.
И никаких "колонок" в таблице тоже нет. Есть ПОЛЯ.
Секционирование помогает:
Повышать производительность запросов: в плане запроса не фигурируют лишние секции, где нет строк, подпадающих под условия запроса.
.....
Ключ секционирования может включать только столбцы первичного ключа.
Увы, не всегда. Вот fiddle: https://dbfiddle.uk/AbaL9jxm
Во-первых, сразу видно, что секционирование замедляет процесс. Согласен, записей мало. Но тем не менее.
Во-вторых, точно так же сразу видно, что заметный эффект даёт только секционирование по префиксу первичного ключа. А секционирование по постфиксу заметно медленнее. На большом массиве данных мы бы наблюдали, наверное, Index Seek и Index Scan (или их аналоги) соответственно - а это по производительности две большие разницы.
А ещё секционирование здОрово замедлит запрос на обновление, требующий перемещения записи из одной секции в другую.
ну вы душнила. Тогда уж и секционирования нету. Есть партицирование
Справедливости ради. Строчки — это, конечно, нехорошо, надо было строки, но никак не записи. И колонки в литературе встречаются наравне со столбцами.
Записи и поля — это уже нечто не реляционное, обычно в языках программирования. К тому же поле относится к отдельной записи, а вот в качестве ключа в таблице выступают именно столбцы/колонки.
Секционируй и властвуй: делимся нетайными знаниями о секционировании в Postgres Pro