Кластеризация в PostgreSQL работает с помощью оператора CLUSTER, который позволяет кластеризовать таблицу по существующему в ней индексу. 1 В результате кластеризации содержимое таблицы физически переупорядочивается в зависимости от индекса. 12
Некоторые особенности работы кластеризации:
- Кластеризация является одноразовой операцией. 14 Последующие изменения в таблице нарушают порядок кластеризации: порядок новых или изменённых строк в соответствии с индексом не сохраняется. 12
- В процессе кластеризации таблицы устанавливается эксклюзивная блокировка доступа (ACCESS EXCLUSIVE). 12 Это препятствует одновременному выполнению всех других операций чтения и записи данных. 1
- Кластеризация помогает оптимизировать обращение к диску и ускорить выполнение SQL-запросов. 12 Например, если из таблицы запрашивается диапазон индексированных значений или одно индексированное значение, которому соответствуют несколько строк, страница таблицы, найденная по индексу для первой искомой строки, будет содержать и все остальные искомые строки. 12
- Команда CLUSTER запоминает индексы, по которым были кластеризованы таблицы. 1 Её можно выполнить вручную лишь однажды, а потом повторять автоматически, регулярно запуская скриптом по расписанию. 1