SQLite

Скриншот программы:
SQLite
Детали программы:
Версия: 3.24.0 обновление
Дата загрузки: 22 Jun 18
Разработчик: D. Richard Hipp
Тип распространения: Бесплатная
Популярность: 21

Rating: 5.0/5 (Total Votes: 1)

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


Особенности с первого взгляда

Ключевые функции включают поддержку изолированных, атомных, долговечных и согласованных транзакций, реализацию SQL92, файлы базы данных могут свободно делиться между компьютерами, поддерживать базы данных до 2 терабайт, поддерживать размер блоков и строк в размере гигабайта, небольшой размер кода, а также простой в использовании и очень простой API (интерфейс прикладного программирования).

Кроме того, SQLite не требует начальной настройки или дальнейшего администрирования, позволяет разработчикам хранить полную базу данных в одном кросс-платформенном диске, который идеально подходит для использования форматов файлов приложений, не имеет внешних зависимостей, в языковых привязках TCL (Tool Command Language) и полной документации.

Привязки для многих других языков программирования доступны отдельно. Его исходный код хорошо комментируется и поставляется с автономным клиентом CLI (интерфейс командной строки), который был разработан из смещения, который будет использоваться для администрирования баз данных SQLite.


Для чего я могу это использовать?

Механизм базы данных SQLite может использоваться для любых целей, личных или коммерческих. Предложенное использование для SQLite включает базу данных для гаджетов, базу данных веб-сайта, резервное копирование для корпоративной системы управления реляционными базами данных (Relational Database Management System), а также формат файла приложения.


Под капотом и поддерживаемыми ОС

В дистрибутив SQLite входит автономная программа доступа к командной строке (sqlite), которая может использоваться для администрирования базы данных SQLite и которая служит примером использования библиотеки SQLite. Он полностью написан на языке программирования ANSI-C.

Поддерживаемые настольные операционные системы включают GNU / Linux, Mac OS X и Microsoft Windows. Поддерживаемые мобильные операционные системы включают Android и iOS. Он был успешно протестирован как с 32-битными, так и с 64-битными аппаратными платформами, и он легко переносится на другие ОС.

Что нового в этой версии:

р>

  • Основные моменты этого выпуска включают поддержку UPSERT в стиле PostgreSQL и повышенную производительность, особенно для запросов ORDER BY LIMIT.

Что нового в версии:

  • Воспользуйтесь возможностями атомной записи в файловой системе F2FS, если они доступны, что значительно сократит транзакционные издержки. Для этого в настоящее время требуется опция компиляции SQLITE_ENABLE_BATCH_ATOMIC_WRITE.
  • Разрешить команды ATTACH и DETACH работать внутри транзакции.
  • Разрешить виртуальные таблицы WITHOUT ROWID записывать, если PRIMARY KEY содержит ровно один столбец.
  • & quot; fsync () & quot; которое происходит после того, как заголовок записан в WAL-сбросе, теперь использует настройки синхронизации для контрольных точек. Это означает, что он будет использовать "fullfsync" на macs, если PRAGMA checkpoint_fullfsync установлен.
  • Функция sqlite3_sourceid () пытается определить, был ли исходный код изменен из того, что было проверено в контроле версий, и, если есть изменения, последние четыре символа хеш-версии показаны как «alt1». или "alt2". Цель состоит в том, чтобы обнаружить случайные и / или неосторожные изменения. Подделыватель может подорвать эту функцию.
  • Улучшено удаление котировок имен столбцов для операторов CREATE TABLE AS с агрегированным запросом в правой части.
  • Меньше "stat ()" системные вызовы, выпущенные unix VFS.
  • Улучшена оптимизация LIKE, чтобы она работала с предложением ESCAPE.
  • Расширенные возможности PRAGMA integrity_check и PRAGMA quick_check для обнаружения неясного искажения строк, которое они ранее отсутствовали. Также обновляйте обе прагмы, чтобы они возвращали текст ошибки, а не SQLITE_CORRUPT, когда сталкивались с коррупцией в записях.
  • Планировщик запросов теперь предпочитает использовать подзапросы FROM-clause, используя совместные подпрограммы, используя оптимизацию флаттера запросов. Поддержка использования подпрограмм для подзапросов больше не может быть отключена.
  • Передавать информацию о! =, IS, IS NOT, NOT NULL и ограничениях NULL в метод виртуальных таблиц xBestIndex.
  • Улучшена виртуальная таблица CSV, чтобы она принимала последнюю строку ввода, если отсутствует последний символ новой строки.
  • Удалите редко используемую "царапину" распределитель памяти. Замените его параметром конфигурации SQLITE_CONFIG_SMALL_MALLOC, который дает SQLite подсказку о том, что по возможности следует избегать больших распределений памяти.
  • Добавлена ​​виртуальная таблица swarm в существующее расширение виртуальной таблицы union.
  • Добавлена ​​виртуальная таблица sqlite_dbpage для прямого доступа к страницам файла базы данных. Исходный код встроен в объединение и активируется с использованием параметра -DSQLITE_ENABLE_DBPAGE_VTAB компиляции.
  • Добавить новый тип виртуальной таблицы fts5vocab - & quot; экземпляр & quot; - обеспечивает прямой доступ к полнотекстовому индексу FTS5 на минимально возможном уровне.
  • Удалить вызов rand_s () в Windows VFS, поскольку он вызывает проблемы в Firefox на некоторых старых ноутбуках.
  • Исходный код src / shell.c для оболочки командной строки больше не находится под управлением версиями. Этот файл теперь создается как часть процесса сборки.
  • Различные микрооптимизации уменьшают загрузку процессора примерно на 2,1%.
  • Исправлены ошибки:
  • Исправить ошибочное утверждение assert (), обнаруженное OSSFuzz. Билет cb91bf4290c211d
  • Исправить непонятную утечку памяти в sqlite3_result_pointer (). Билет 7486aa54b968e9b
  • Избегайте возможной ошибки после использования, откладывая сброс схемы до завершения работы планировщика запросов. Билет be436a7f4587ce5
  • Используйте только индексы в выражениях для оптимизации ORDER BY или GROUP BY, если COLLATE верен. Билет e20dd54ab0e4383
  • Исправьте ошибку утверждения, которая появилась, когда выражение в индексе-на-выражениях действительно является константой. Билет aa98619ad08ddca
  • Исправьте ошибку утверждения, которая может возникнуть после PRAGMA reverse_unordered_selects. Билет cb91bf4290c211d
  • Исправьте segfault, который может возникнуть для запросов, которые используют табличные функции в подзапросе IN или EXISTS. Билет b899b6042f97f5
  • Исправить потенциальную проблему с переполнением целых чисел при компиляции определенного ужасного общего табличного выражения. Это была еще одна проблема, обнаруженная OSSFuzz. Регистрация 6ee8cb6ae5.
  • Исправить потенциальное из-за границы, прочитанное при запросе файла поврежденной базы данных, проблему, обнаруженную Натали Сильванович из Google Project Zero. Регистрация 04925dee41a21f.

Что нового в версии 3.20.1:

  • Патч релиз версии 3.20.1 изменяет две строки кода в интерфейсе sqlite3_result_pointer (), чтобы устранить утечку редкой памяти.

Что нового в версии 3.9.2:

  • Версия SQLite 3.9.2 - это исправление, исправляющее две непонятные ошибки.

Что нового в версии 3.8.9:

  • Новые функции этой версии включают команду PRAGMA index_xinfo, интерфейс sqlite3_status64 () и команду «.dbinfo» оболочки командной строки.

Что нового в версии 3.8.8.2:

  • Исправление исправлений 3.8.8.2 устраняет одну небольшую проблему: она гарантирует, что операция sqlite3_wal_checkpoint (TRUNCATE) всегда будет усекать журнал записи вперед, даже если журнал уже был сброшен и не содержит нового содержимого. Неясно, является ли это исправлением ошибки или новой функцией.
  • Что-то вроде этого, как правило, входит в следующий запланированный релиз, но заметный пользователь SQLite нуждался в переменах, поэтому мы были счастливы избавиться от этого патча.
  • Нет причин для обновления, если вам действительно не требуется улучшенное поведение sqlite3_wal_checkpoint (TRUNCATE).

Что нового в версии 3.8.8.1:

  • Исправить ошибку в логике сортировки, представленной с версии 3.8.4, которая может привести к тому, что вывод будет отображаться в неправильном порядке в запросах, содержащих предложение ORDER BY, предложение LIMIT и имеющие приблизительно 60 или более столбцов в набор результатов. Билет f97c4637102a3ae72b79.
  • SQLITE_SOURCE_ID: "2015-01-20 16:51:25 f73337e3e289915a76ca96e7a05a1a8d4e890d55"
  • SHA1 для sqlite3.c: 33987fb50dcc09f1429a653d6b47672f5a96f19e

Что нового в версии 3.8.8:

  • Новые функции:
  • Добавлена ​​команда PRAGMA data_version, которая может использоваться для определения того, был ли файл базы данных изменен другим процессом.
  • Добавлена ​​опция SQLITE_CHECKPOINT_TRUNCATE для интерфейса sqlite3_wal_checkpoint_v2 () с соответствующими улучшениями для PRAGMA wal_checkpoint.
  • Добавлен интерфейс sqlite3_stmt_scanstatus (), доступный только при компиляции с SQLITE_ENABLE_STMT_SCANSTATUS.
  • Функция sqlite3_table_column_metadata () улучшена для корректной работы без таблиц БЕЗ ROWID и для проверки наличия таблицы, если параметр имени столбца равен NULL. Интерфейс теперь также включен в сборку по умолчанию, не требуя опции компиляции SQLITE_ENABLE_COLUMN_METADATA.
  • Добавлена ​​опция компиляции SQLITE_ENABLE_API_ARMOR.
  • Добавлена ​​опция компиляции SQLITE_REVERSE_UNORDERED_SELECTS.
  • Добавлена ​​опция компиляции SQLITE_SORTER_PMASZ и опция запуска времени SQLITE_CONFIG_PMASZ.
  • Добавлена ​​опция SQLITE_CONFIG_PCACHE_HDRSZ для sqlite3_config (), которая облегчает приложениям определение необходимого объема памяти для использования с SQLITE_CONFIG_PAGECACHE.
  • Число строк в предложении VALUES больше не ограничено SQLITE_LIMIT_COMPOUND_SELECT.
  • Добавлено загружаемое расширение eval.c, которое реализует функцию eval () SQL, которая будет рекурсивно оценивать SQL.
  • Улучшения производительности:
  • Уменьшите количество операций memcpy (), связанных с балансировкой b-дерева, для повышения производительности на 3.2%.
  • Улучшения оценок затрат для оптимизации сканирования.
  • Автоматическая оптимизация индексирования теперь может генерировать частичный индекс, если это подходит.
  • Исправлены ошибки:
  • Обеспечьте прочность после потери мощности с помощью «PRAGMA journal_mode = TRUNCATE», вызвав fsync () сразу после обрезки файла журнала.
  • Теперь планировщик запросов распознает, что любой столбец в правой таблице LEFT JOIN может быть NULL, даже если этот столбец имеет ограничение NOT NULL. Не пытайтесь оптимизировать тесты NULL в этих случаях. Исправьте билет 6f2222d550f5b0ee7ed.
  • Убедитесь, что ORDER BY помещает строки в порядке возрастания, даже если оператор DISTINCT реализован с использованием нисходящего индекса. Исправить для билета c5ea805691bfc4204b1cb9e.
  • Исправьте расы данных, которые могут возникать при стрессе при работе со многими потоками в режиме общего кэша, когда некоторые из потоков открывают и закрывают соединения.
  • Исправить непонятные ошибки при сбое, обнаруженные американским нечетким лопом. Билет a59ae93ee990a55.
  • Работайте над ошибкой оптимизатора GCC (для gcc 4.2.1 на MacOS 10.7), что привело к тому, что расширение R-Tree вычислило неправильные результаты при компиляции с -O3.
  • Другие изменения:
  • Отключить использование процедуры C-библиотеки strchrnul (), если она специально не включена с использованием опции компиляции -DHAVE_STRCHRNULL.
  • Улучшение эффективности и точности вероятностей (), вероятных () и маловероятных () подсказок SQL.
  • SQLITE_SOURCE_ID: "2015-01-16 12:08:06 7d68a42face3ab14ed88407d4331872f5b243fdf"
  • SHA1 для sqlite3.c: 91aea4cc722371d58aae3d22e94d2a4165276905

Что нового в версии 3.8.7.4:

  • Этот выпуск исправляет добавление в мьютексе, которое требуется изменениями патча 3.8.7.3, но было случайно опущено. Мьютекс не требовался ни одним из внутренних тестов SQLite, но Firefox сбой без него. Были добавлены тестовые примеры, чтобы убедиться, что мьютекс больше не пропущен.

Что нового в версии 3.8.7.3:

  • Исправление ошибок. Убедитесь, что кешированные объекты KeyInfo (внутренняя абстракция, не видимая для приложения) не устаревают при работе в режиме совместного использования кэша и часто закрывают и повторно открывают некоторые соединения с базой данных, оставляя другие соединения с базой данных в одном общем кэше открытым непрерывно. Билет e4a18565a36884b00edf.
  • Исправление ошибок. Признайте, что любой столбец в правой таблице LEFT JOIN может быть NULL, даже если столбец имеет ограничение NOT NULL. Не применяйте оптимизацию, предполагающую, что столбец никогда не равен NULL. Билет 6f2222d550f5b0ee7ed.
  • SQLITE_SOURCE_ID: "2014-12-05 22:29:24 647e77e853e81a5effeb4c33477910400a67ba86"
  • SHA1 для sqlite3.c: 3ad2f5ba3a4a3e3e51a1dac9fda9224b359f0261

Что нового в версии 3.8.7.2:

  • Основной причиной этого выпуска является усиление команды ROLLBACK, чтобы она позволяла запускать запросы в одном соединении с базой данных для продолжения работы до тех пор, пока ROLLBACK не изменит схему. Во всех предыдущих версиях SQLite ROLLBACK заставит ожидающие запросы немедленно остановиться и вернуть SQLITE_ABORT или SQLITE_ABORT_ROLLBACK. Ожидающие запросы все еще прерываются, если ROLLBACK изменяет схему базы данных, но начиная с этой версии исправления запросы могут продолжаться, если схема не модифицирована.
  • В дополнение к расширению ROLLBACK этот выпуск исправлений также содержит исправления для трех неясных ошибок.

Что нового в версии 3.8.7.1:

  • Основной причиной этого выпуска исправления ошибок является устранение проблемы с обновлением значений полей в конце таблицы, которые были добавлены с помощью ALTER TABLE ADD COLUMN. Эта проблема впервые появилась в выпуске 3.8.7.
  • Еще одна неприятность в выпуске 3.8.7 заключалась в том, что Android-сборка пыталась использовать функцию strchrnul () из стандартной библиотеки C, но эта функция недоступна на Android. Для решения этой проблемы на Android-сборке пришлось добавить -DHAVE_STRCHRNUL = 0. Этот патч исправляет это так, что Android-сборки теперь должны работать без каких-либо изменений.
  • Работа PRAGMA journal_mode = TRUNCATE была улучшена, так что она вызывает fsync () после обрезания файла журнала, когда PRAGMA synchronous = FULL. Это помогает сохранить долговечность транзакций в случае потери мощности, произошедшей вскоре после фиксации.
  • Наконец, исправлены несколько давних и неясных проблем, связанных с запуском UPDATE и DELETE на VIEW.

Что нового в версии 3.8.7:

  • Большинство изменений, произошедших в предыдущем выпуске, - это микро-оптимизация, призванная помочь SQLite работать немного быстрее. Каждая индивидуальная оптимизация имеет неизмеримо малую эффективность. Но улучшения складываются. Измеренный на четко определенной рабочей нагрузке (которую разработчики SQLite используют в качестве прокси для типичной рабочей нагрузки приложения), используя cachegrind в Linux и скомпилированный с gcc 4.8.1 и -Os в x64 linux, текущая версия делает более чем на 20% больше работы для такое же количество циклов процессора по сравнению с предыдущим выпуском. Cachegrind не является реальным процессором, а рабочая нагрузка, используемая для измерения, является только прокси. Таким образом, ваша производительность может отличаться. Мы ожидаем увидеть примерно половину измеренного и сообщенного улучшения в реальных приложениях. Мы считаем, что 10% составляют менее 20%, но это все еще неплохо.
  • Этот выпуск включает в себя новый набор интерфейсов на языке C, которые имеют неподписанные 64-битные вместо 32-битных параметров длины. Новые API не предоставляют никаких новых возможностей. Но они упрощают работу с приложениями, которые более устойчивы к уязвимостям с переполнением целого числа.
  • Этот выпуск также включает новый сортировщик, который может использовать несколько потоков, чтобы помочь с большими операциями сортировки. (Иногда требуется выполнять операции сортировки для выполнения предложений ORDER BY и / или GROUP BY и почти всегда требуется для CREATE INDEX.) Сортировщик с несколькими нитями отключен по умолчанию и должен быть включен с помощью команды SQL-потоков PRAGMA. Обратите внимание, что многопоточный сортировщик обеспечивает более быструю производительность в реальном времени для больших сортов, но также использует больше циклов процессора и больше энергии.

Что нового в версии 3.8.3.1:

  • SQLite версии 3.8.3.1 исправляет ошибку, присутствующую в версиях 3.8.1, 3.8.2 и 3.8.3, что может привести к тому, что запросы не будут содержать допустимые строки. Рекомендуется обновить эти версии.
  • Проблема возникает только в том случае, если SQLite скомпилирован с параметрами компиляции SQLITE_ENABLE_STAT3 или SQLITE_ENABLE_STAT4. В этом случае, если запрос имеет предложение WHERE, которое содержит такие выражения:
  • WHERE (expr1 ИЛИ expr2 ИЛИ ... ИЛИ exprN) И столбец NOT NULL
  • Где все expr1 через exprN подходят для использования индексами, тогда при планировании запросов SQLite может ошибочно преобразовать термин «column IS NOT NULL» в «column & gt; NULL». Но последний термин никогда не будет истинным, поэтому запрос не будет возвращать строки.

Что нового в версии 3.8.3:

  • Добавлена ​​поддержка общих табличных выражений и предложения WITH.
  • Добавлена ​​функция printf () SQL.
  • Добавлен SQLITE_DETERMINISTIC в качестве необязательного бита в 4-м аргументе для sqlite3_create_function () и связанных с ним интерфейсов, предоставляя приложениям возможность создавать новые функции, которые могут быть учтены из внутренних циклов, когда они имеют постоянные аргументы.
  • Добавьте код ошибки SQLITE_READONLY_DBMOVED, возвращенный в начале транзакции, чтобы указать, что базовый файл базы данных был переименован или удален из SQLite.
  • Разрешить произвольные выражения, включая вызовы функций и подзапросы, в аргументе filename для ATTACH.
  • Разрешить предложение VALUES использоваться везде, где действует инструкция SELECT.
  • Reseed PRNG, используемый sqlite3_randomness (N, P) при вызове с N == 0. Автоматически reseed после fork () в unix.
  • Повысьте виртуальную таблицу spellfix1, чтобы она могла эффективно выполнять поиск по rowid.
  • Повышение производительности.
  • Улучшение комментариев в байт-кодах VDBE при запуске EXPLAIN.
  • Добавьте директиву «% token_class» в генератор парсера LEMON и используйте его для упрощения грамматики.
  • Измените исходный код LEMON, чтобы избежать вызова функций C-библиотеки, которые OpenBSD считает опасными. (Пример: sprintf).
  • Исправление ошибки: в функции импорта CSV командной строки оболочки не заканчивается поле, когда экранированная двойная кавычка встречается в конце строки CRLN.
  • SQLITE_SOURCE_ID: "2014-02-03 13:52:03 e816dd924619db5f766de6df74ea2194f3e3b538"
  • SHA1 для sqlite3.c: 98a07da78f71b0275e8d9c510486877adc31dbee

Похожие программы

Cego
Cego

17 Feb 15

Redis
Redis

28 Sep 15

Drizzle
Drizzle

20 Feb 15

Комментарии к SQLite

Комментарии не найдены
добавить комментарий
Включите картинки!