BerkeleyDB - последствия неправильного порядка сортировки? - PullRequest
0 голосов
/ 01 февраля 2012

Согласно этому FAQ , на коэффициент заполнения страницы может отрицательно повлиять отсутствие указания функции сортировки для двоичных данных в системах с прямым порядком байтов. Я понимаю, что это также приведет к тому, что курсоры не будут возвращать данные в «правильном» отсортированном порядке.

Помимо чрезмерного использования страницы, это может вызвать другие проблемы с производительностью? Например, плохой коэффициент заполнения страницы отрицательно влияет на скорость поиска по ключевым словам?

Кроме того, если у меня уже есть данные, хранящиеся в BTREE без функции сортировки, что-нибудь сломается, если я впоследствии начну использовать функцию сортировки для добавления новых записей? то есть будет ли несоответствие между первоначально использованным порядком сортировки и поиском новой клавиши сортировки с помощью функции сортировки?

1 Ответ

0 голосов
/ 19 марта 2012

Да, неправильный порядок байтов может уменьшить ваш коэффициент заполнения, и в результате ваша база данных будет больше и медленнее работать.Сегодня я вставлял около 30 миллионов записей с последовательным целочисленным ключом и заметил довольно плохой коэффициент заполнения btree (60%).Затем изменил порядковый номер клавиши (использовал функцию htonl ()) и коэффициент заполнения подскочил до 99%.В то же время размер базы данных был уменьшен с 1,3 ГБ до 700 МБ.Порядковый номер важен, когда ваш ключ является последовательным или показывает некоторую локальность (общий префикс для связанных данных).Для некоторых клавиш изменение порядкового номера может ухудшить производительность (я испытал это с номерами мобильных телефонов).Кстати, вам не нужно предоставлять функцию сортировки - вы можете просто преобразовать ключи в правильные порядковые номера при вставке и поиске по ключу.

...