"Dmitri Kuzmenko" ...
>
> Hello, Vlad!
>
> Vlad Horsun wrote:
>
> >>>>по причине очень больших
> >>>>цепочек номеров записей для одного ключа индекса.
> >>>
> >>> И что ?
>
> если мне память не изменяет, QuickSort плохо сортирует
> уже сортированные или повторяющиеся значения.
Да, наш модуль сортировки не самым лучшим образом работает с повторяющимися
значениями. Но в FB2 ему на вход подаются не только ключи записей, но и номера
записей, что полностью исключает повторение сортируемых значений. Это для
построения индексов. Для order by\group by это было так всегда. Единственное
известное мне исключение - сортировка для distinct.
В случае сортировки для индекса в FB 1.x замедление будет иметь место
только если эти одинаковые значения совпадают с физическим порядком чтения
записей из таблицы. Ибо quicksort'ом сортируются небольшие группы записей, а
не вся таблица целиком. Далее - сортировка слиянием, у которой нет такого
недостатка.
> Кроме того, у вас там
Это у кого- у вас ? :)
> выгрузка из файла сортировки
> в индекс происходит блоками, что в определенных ситуациях
> приводит к нехилым тормозам и слабой загрузке процессора.
Не совсем так.
> я все никак не могу затестировать restore, нет у меня реальной базы
> на 2-5 гиг с большим числом FK, включая "плохие".
Спроси Коваленко :) А лучше, конечно, попробуй сам
> Синтетику тестить тоже можно, но это отдельный разговор.
>
> >> А это нужно спросить у того, кто знает, какой метод сортировки
> >>использует птичка при построении индекса ;)
> >
> > До ОДС 11 цепочки дубликатов не сортируются и новые номера записей
> > вставляются на первое место
>
> это уже другой вопрос, т.к. влияет на скорость сборки мусора в индексе.
И на скорость вставки ключа в индекс. При обычной работе. И вообще - кто
меня сначала длинными цепочками с толку сбил ? :)
--
Хорсун Влад
PS Реальная БД : ОДС 10.1, таблица 1798843 записей, 2 индекса :
а) PK - INT,
селективность 5.55915676159202E-7
б) IDX - INT
селективность 0.01351
Создание индексов, мс :
FB 1.5.2 Ya 892 FB 2.0 FB 2.1 IB 7.5.1
PK 8352 7461 7040 6149 9353
IDX 13580 11106 7451 6990 10685