Гость
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Кластерный индекс / 9 сообщений из 9, страница 1 из 1
26.04.2018, 00:16
    #39636440
sKot
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кластерный индекс
Доброго времени суток, коллеги.

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


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

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

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

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

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



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

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

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


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

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

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

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

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

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


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