powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Кластерный индекс
9 сообщений из 9, страница 1 из 1
Кластерный индекс
    #39636440
sKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток, коллеги.

Вопрос про кластеризацию большой (40+ млн записей) таблицы (логи) по индексу по полю времени вставки записи:
Есть индекс на время вставки записи в таблицу (время хранится в timestamp int8).
Код: sql
1.
create index IDX_LOG_BEGIN on LOG_EXT_SYS(LOG_BEGIN desc);


Этот индекс DESC.
Я хочу кластеризовать таблицу по этому индексу.
Насколько я понимаю, таблица в этом случае будет "перевёрнутой", т.е. последние записи после кластеризации будут в начале таблицы.
Вопрос: будет ли таблица реально "перевёрнута" на диске? Не получится ли так, что сразу после кластеризации последние записи будут в начале таблицы, а новые будут писаться в её конец?
Как это скажется на производительности?

В мануалах ничего толкового не нашёл, но кажется, я делаю что-то не то. Кластеризация идёт уже несколько часов, и конца ей не видно.

Не будет ли более правильно сделать этот индекс ASC?
...
Рейтинг: 0 / 0
Кластерный индекс
    #39636514
Lonepsycho
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sKot,

в документации явно написано, что кластер - это единоразовая операция по реорганизации данных в таблице, и новые данные будут ложится в неё не обращая внимания на произведённую операцию, т.е. новые данные будут в конце таблицы. если надо реорганизовать новые данные, придётся делать кластер заново.
...
Рейтинг: 0 / 0
Кластерный индекс
    #39636736
Alexius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sKot,

покажите ради интереса вывод
Код: sql
1.
select correlation from pg_stats where tablename = 'log_ext_sys' and attname = 'log_begin';



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

одноколоночные индесы с порядком сортировки desc делать по идее смысла нет, обычный индекс может в обратном порядке сканироваться так же хорошо как и в прямом.

будет ли таблица реально "перевёрнута" на диске? Не получится ли так, что сразу после кластеризации последние записи будут в начале таблицы, а новые будут писаться в её конец?
Как это скажется на производительности?
да, верно. возможно никак не скажется.
...
Рейтинг: 0 / 0
Кластерный индекс
    #39636912
sKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexius, спасибо за ответ.
Код: sql
1.
select correlation from pg_stats where tablename = 'log_ext_sys' and attname = 'log_begin';


-0.9996
...
Рейтинг: 0 / 0
Кластерный индекс
    #39636916
Alexius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sKot,

судя по значению уже кластеризовали в обратном порядке log_begin)
...
Рейтинг: 0 / 0
Кластерный индекс
    #39636945
sKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Lonepsycho,
да, я это читал, поэтому и задал такой вопрос.
Получается, что после кластеризации по обратному индексу таблица не будет монотонно возрастать, а будет сначала убывать (до момента окончания процесса кластеризации), а потом будет возрастать.
Мне кажется, что это может сказаться на производительность, т.к. при линейной выборке из этой таблицы на моменте разрыва серверу придётся сделать "прыжок" дисковой подсистемой, плюс таблица поменяет направление сортировки, что тоже может сказаться на производительности.

Думаю, что зря это затеял.
...
Рейтинг: 0 / 0
Кластерный индекс
    #39636947
sKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexius,

да, вчера ночью и кластеризовал.
Я так понимаю, что это число будет постепенно приближаться к нулю, т.к. таблица будет расти в противоположном направлении?
...
Рейтинг: 0 / 0
Кластерный индекс
    #39636985
Alexius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sKot,

будет расти, в пределе, когда отсортированных в прямом порядке данных будет сильно больше, будет стремиться к +1.

то что зря - это скорей всего да, то что станет хуже по описанной причине - очень врядли. для производительности запроса (с условием по log_begin) будет иметь значение, расположены ли 1000 (например) выбираемых строк на 1000 различных страницах или на 10 страницах рядом друг с другом. а на это влияет, отсортированны ли данные на диске по выбираемому полю вообще, а не в каком порядке их сортировали.
...
Рейтинг: 0 / 0
Кластерный индекс
    #39637006
sKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexius, спасибо за пояснение, вопрос можно считать закрытым.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Кластерный индекс
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]