Задать вопрос
@kuza2000

Есть ли fill factor для sqlite3?

Для MS SQL есть такая штука, как Fill Factor.
Есть ли подобное для sqlite?

У меня есть база данных, в которую только добавляются записи, удаления и обновления нет. Смотрю файл базы данных - в страницах очень много нулей, словно заполняет не полностью. Вообще, так и должно быть, когда fill factor не 100%. Для MS SQL я бы просто сделал Fill Factor = 100%. А для sql lite что-то подобную настройку не найду.

Для sqlite много есть про настройку vacuum. Но, как я понял, она про другое, про упаковку после удаления. А мне нужно, что бы просто листовые страницы B-дерева заполнялись полностью, как у ms sql с fill factor = 100. То есть, максимально плотное заполнение базы данных, когда идет просто построчная вставка.
  • Вопрос задан
  • 110 просмотров
Подписаться 2 Простой 4 комментария
Ответ пользователя mayton2019 К ответам на вопрос (2)
mayton2019
@mayton2019
Bigdata Engineer
Но, как я понял, она про другое, про упаковку после удаления. А мне нужно, что бы просто листовые страницы B-дерева заполнялись полностью, как у ms sql с fill factor = 100. То есть, максимально плотное заполнение базы данных, когда идет просто построчная вставка.

Ты напомнил анекдот когда женщина приша к урологу и жалуется что у мужа дескыть "одно яичко ниже другого. Непорядочек.."

Вобщем перфекционизм хорош в меру. Если ты читал об организации индексов на основе B+Tree (практически везде) во всех DBMS, то ты должен был читать о том что среднее заполнение листовых блоков обычно равно 75% от размера блока. Это связано с возможностью оперативно делать insert новых ключей и значений. Если ты, используя какие-то утилиты специально выровнял заполнение блоков - то индес становится медленным для будущих вставок. Каждая вставка продуцирует операцию split (тяжелая операция) и пока не посплитятся все листы - перформанс будет плохой.
Ответ написан