SQLite 3.16 добавляет функции прагмы


Последняя версия SQLite была выпущена с экспериментальной поддержкой функций PRAGMA.

SQLite – это широко используемая встраиваемая библиотека базы данных SQL, которая встречается во многих гаджетах с ограниченным объемом памяти, таких как мобильные телефоны, КПК и MP3-плееры.

SQLite – это внутрипроцессная библиотека, которая реализует автономный, бессерверный, транзакционный механизм базы данных SQL. Вся база данных SQL с несколькими таблицами, индексами, триггерами и представлениями содержится в одном файле на диске.

Обновленная версия использует на 9% меньше циклов ЦП, продолжая прирост производительности, наблюдаемый в последних версиях. Количество циклов, используемых SQLite для стандартной рабочей нагрузки, сократилось вдвое всего за последние три года. На графике ниже показано, как снизилась загрузка ЦП по сравнению с последними версиями:

Экспериментальная поддержка функций PRAGMA открывает возможность использования таких функций, как прагма index_info, для возврата результатов, которые не имеют побочных эффектов от обычных операторов SELECT, как возвращающих табличное значение функций. Команда SQLite PRAGMA может использоваться для управления различными переменными среды и флагами состояния в среде SQLite. Существуют соответствующие возвращающие табличное значение функции с тем же именем, что и PRAGMA, с 7-символьным префиксом pragma_.

Например, информацию о столбцах в индексе можно прочитать с помощью прагмы index_info следующим образом:

PRAGMA index_info (‘idx52’);

Или тот же контент можно прочитать, используя:

ВЫБРАТЬ * ИЗ pragma_index_info (‘idx52’);

Преимущество формата функции с табличным значением состоит в том, что запрос может возвращать только подмножество столбцов PRAGMA, может включать предложение WHERE, может использовать агрегатные функции, а функция с табличным значением может быть только одним из нескольких источников данных в присоединиться.

Функции даты и времени – еще одна область, которая была улучшена, так что модификатор unixepoch работает для всего диапазона поддерживаемых дат. Модификатор “unixepoch” заставляет даты в формате DDDDDDDDDD интерпретироваться не как число дней по юлианскому календарю, как обычно, а как время Unix – количество секунд с 1970 года.

Частичные индексы – еще одна область, требующая улучшения. Если вы создадите частичный индекс для «WHERE x NOT NULL», он теперь будет использоваться, даже если столбец «x» появится в операторе LIKE или GLOB. LIKE и GLOB также привлекли внимание в алгоритме сопоставления LIKE и GLOB, который теперь работает быстрее для случаев, когда шаблон содержит несколько подстановочных знаков.

Релиз 3.16 уже получил обновление до 3.16.1, поскольку об ошибке, которая влияла на использование значений строк в триггерах, было сообщено «через несколько мгновений» после публикации версии 3.16.0. Теперь это исправлено.


Добавить комментарий