powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Размышления о indexCorrelation
5 сообщений из 5, страница 1 из 1
Размышления о indexCorrelation
    #33816745
Andrew Sagulin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть здесь кто-нибудь, участвующий в разработке PG? Хочу посмотреть комментарии сведущего человека по поводу ниже изложенного...

Чтобы не повторяться: условия моей задачи я уже описывал здесь и здесь . Хоть я и остановился на partitioning, bitmap scan покоя мне всё равно не давал. :) Несмотря на то, что индексный скан (IS) медленнее Bitmap scan-а (BMS) в 20 раз, PG всё равно выбирал IS. Гугление и чтение costsize.c наставили меня на путь истинный: всё дело было в indexCorrelation, который в моём случае практически равен единице, что давало IS безоговорочную пальму первенства, и не оставляла другим методам доступа никаких шансов. Но 20 (двадцать) раз!
Простейший тест с выборкой
Код: plaintext
select ctid from conn order by datetime
показал, что при IS страницы читаются вразнобой, буквально шаг вперёд и два назад. Ситуацию можно промоделировать простым примером: пусть IS читает страницы в таком порядке: 2, 1, 4, 3, 6, 5, ..., 100, 99. Коэффициент корреляции такой последовательности "три девятки", а вот скорость... Так что, корреляция помогает оценить лишь количество страниц , считываемых IS, но близкое к единице значение корреляции вовсе не гарантирует последовательное чтение страниц. Нужно либо вводить оценку линейности IS, как отношение последовательных чтений к случайным, либо считать min_IO_cost по формуле
Код: plaintext
min_IO_cost = ceil(indexSelectivity * T) * random_page_cost;
вместо
Код: plaintext
min_IO_cost = ceil(indexSelectivity * T);
как сейчас.

Вообще, у меня сложилось мнение, что оценка стоимости с помощью корреляции как следует не проверялась и был реализована "на авось".
...
Рейтинг: 0 / 0
Размышления о indexCorrelation
    #33816864
Andrey Daeron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andrew SagulinЕсть здесь кто-нибудь, участвующий в разработке PG? Хочу посмотреть комментарии сведущего человека по поводу ниже изложенного...

Самый оптимальный способ - это писать в рассылку постгреса.
http://www.postgresql.org/community/lists/
...
Рейтинг: 0 / 0
Размышления о indexCorrelation
    #33817502
Andrew Sagulin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Andrey DaeronСамый оптимальный способ - это писать в рассылку постгреса. http://www.postgresql.org/community/lists/

Написал. Боюсь, только, не поймут они меня с моим знанием английского. :)
...
Рейтинг: 0 / 0
Размышления о indexCorrelation
    #33817613
LeXa NalBat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я писал им по этому вопросу. Только ситуация была не в точности как у вас, но вроде бы очень похожая, AverageCorrelation сильно отличается от PerDiskPageCorrelation. (И постгрес тоже выбирал план который оказывался медленнее оптимального в 20 раз:) http://archives.postgresql.org/pgsql-hackers/2004-03/msg00357.php
...
Рейтинг: 0 / 0
Размышления о indexCorrelation
    #33818212
ZemA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andrew Sagulin Andrey DaeronСамый оптимальный способ - это писать в рассылку постгреса. http://www.postgresql.org/community/lists/

Написал. Боюсь, только, не поймут они меня с моим знанием английского. :)
Существует список рассылки по PostgreSQL для русскоязычных пользователей pgsql-ru-general , подробнее здесь
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Размышления о indexCorrelation
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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