Выпуск СУБД SQLite 3.45

Опубликован релиз SQLite 3.45, легковесной СУБД, оформленной в виде подключаемой библиотеки. Код SQLite распространяется как общественное достояние (public domain), т.е. может использоваться без ограничений и безвозмездно в любых целях. Финансовую поддержку разработчиков SQLite осуществляет специально созданный консорциум, в который входят такие компании, как Bentley, Bloomberg, Expensify и Navigation Data Standard.

Основные изменения:

  • Все SQL-функции для работы с форматом JSON переписаны и переведены на новый внутренний формат дерева разбора JSONB, который сериализируется и может храниться в БД для исключения повторного разбора при использовании значений JSON. Новые версии функций, формирующих JSON, теперь генерируют бинарный формат JSONB вместо текстового. В функцию json_valid () добавлен необязательный второй аргумент, через который можно задать битовую маску, определяющую признаки корректного JSON (например, при указании 0×04 корректным будет признан блоб JSONB, при указании 0×01 текстовый JSON в формате RFC-8259, а при указании 0×05 оба варианта).
  • В виртуальную таблицу FTS5, применяемую для полнотекстового поиска, добавлена опция tokendata, позволяющая использовать собственные токенизаторы.

  • По умолчанию включена оптимизация SQLITE_DIRECT_OVERFLOW_READ, при которой overflow-страницы, размер которых больше стандартного размера страницы b-tree, читаются из файла напрямую, минуя кэш. Для отключения при сборке можно использовать опцию »-DSQLITE_DIRECT_OVERFLOW_READ=0».

  • В планировщике запросов повышена эффективность оптимизации транзитивных ограничений (transitive constraint) и улучшено игнорирование индексов, которые признаны низкокачественными при выполнении операции ANALYZE.

  • В интерфейсе командной строки улучшено отображение содержимого в кодировке UTF-8 на платформе Windows. Обеспечено автоматическое определение использования CLI-интерфейса при воспроизведении скриптов ».dump» и внесение соответствующих изменений в настройки, такие как ».dbconfig defensive off» и ».dbconfig dqs_dll on».

  • В определяемые на стороне приложения SQL-функции добавлено свойство SQLITE_RESULT_SUBTYPE, которое разрешает вызывать из функции sqlite3_result_subtype () для инспектирования подтипов аргументов.

Дополнительно можно отметить развитие в экспериментальных сборках SQLite нового режима ведения журнала транзакций — WAL2 («PRAGMA journal_mode = wal2»), при котором используется два wal-файла («database-wal» и «database-wal2») вместо одного. При записи данных в БД, выполняется добавление новых данных в первый wal-файл. Если первый wal-файл достигнет достаточно большого размера, осуществляется переключение на запись во второй файл. После переключение на второй wal-файл, первый становится доступен для фиксации изменений (checkpoint) и перезаписи. Соответственно, когда второй wal-файл достигает большого размера, осуществляется переключение на первый и т.п., что решает проблему с неконтролируемым разрастанием wal-файла в ситуациях, когда долго не фиксируется транзакция или выполняются длительные процессы чтения.



Источник: http://www.opennet.ru/opennews/art.shtml? num=60460

© OpenNet