Изменение размера страницы по умолчанию в SQLite 3.12.0
1.0 Введение
Файл базы данных SQLite состоит из одной или нескольких «страниц». Для одного файла базы данных все страницы имеют одинаковый размер, хотя для разных файлов базы данных размер страницы может быть любой степенью двойки от 512 до 65536 включительно.
С тех пор, как формат файла базы данных SQLite был разработан (в 2003 году), размер страницы по умолчанию для новых баз данных составлял 1024 байта. Это был разумный выбор в 2003 году. Однако на современном оборудовании страница размером 4096 байт является более быстрым и лучшим вариантом. Поэтому начиная с версии SQLite 3.12.0 (29 марта 2016 г.) размер страницы по умолчанию для новых файлов базы данных был увеличен до 4096 байт.
Верхняя граница размера кэша базы данных традиционно по умолчанию равнялась 2000 страницам. SQLite версия 3.12.0 также изменяет это значение по умолчанию на «-2000», что означает 2000*1024 байта, независимо от размера страницы. Таким образом, верхняя граница количества памяти, используемой для кэша страниц, не изменилась.
2.0 Не является разрывом совместимости
Эти изменения в поведении SQLite по умолчанию не являются разрывом совместимости. Все устаревшие файлы баз данных по-прежнему читаемы и записываемы более новыми версиями SQLite, а все вновь созданные файлы баз данных по-прежнему читаемы и записываемы устаревшими версиями библиотеки SQLite. Единственное, что изменяется, — это некоторые значения по умолчанию. Это должно привести к увеличению производительности для многих приложений.
Хотя большинство приложений не должны заметить никаких изменений (кроме того, что они работают немного быстрее), если возникнут проблемы, то поведение по умолчанию можно восстановить во время компиляции, используя следующие параметры для компилятора C:
-DSQLITE_DEFAULT_PAGE_SIZE=1024 -DSQLITE_DEFAULT_CACHE_SIZE=2000
Размер страницы и размер кэша также можно установить или изменить во время выполнения, используя pragma page_size и pragma cache_size соответственно.
3.0 Возможные негативные последствия этого изменения
Минимальный размер базы данных SQLite составляет одну страницу для каждой таблицы и каждого индекса. Следовательно, при увеличении размера страницы размер пустой базы данных для заданной схемы увеличится в четыре раза. Однако, как только база данных начнет заполняться содержимым, размер баз данных с страницами по 1024 байта и 4096 байта быстро сойдутся. Из-за ослабления ограничений на упаковку в блоки, размер страницы 4096 байт может фактически привести к меньшему файлу после добавления существенного содержимого.
Эта страница была в последний раз изменена 8 января 2022 г. 05:02:57 UTC
SQLite is in the Public Domain.
https://sqlite.org/pgszchng2016.html