Релиз БД SQLite 3.7.0 с поддержкой журнала транзакций
После двух лет разработки представлен релиз новой ветки SQLite 3.7.0, легковесной базы данных, оформленной в виде подключаемой библиотеки. Код SQLite переведен в разряд общественного достояния (public domain), т.е. может использоваться без ограничений и безвозмездно в любых целях. Финансовую поддержку разработчиков SQLite осуществляет специально созданный консорциум, в которых входят такие компании, как Adobe, Oracle, Mozilla, Symbian и Bloomberg.Наиболее значительным улучшением в новой ветке является реализация WAL-журнала транзакций (Write-Ahead Log) в котором отражаются все происходящие с базой данных события, связанные с изменением данных и схемы их хранения. Ведение WAL-лога существенно повышает надежность хранения данных, гарантирует атомарность выполнения транзакций, дает возможность организовать откат изменений на определенное состояние в прошлом.
WAL-лог по сравнению с rollback-журналом повышает скорость выполнения операций, обеспечивает более оптимальный метод обработки конкурирующих запросов (запросы на чтение не блокируют запросы на запись и наоборот, т.е. операции чтения и записи могут выполняться параллельно), снижает число непоследовательных обращений к диску. Тем не менее с целью сохранения полной совместимости с прошлыми версиями по умолчанию в SQLite 3.7.0 по прежнему остается активным rollback-журнал, т.е. допустимо выполнение обновления версии SQLite без изменения формата БД.
Из других улучшений в SQLite 3.7.0 можно отметить:
- Улучшение работы планировщика запросов.
- Добавлена поддержка автоматического создания временных переходных индексов, что позволяет сократить время выполнения запросов.
- Отключение обработки "ORDER BY", когда в запросе уже используется выражение "GROUP BY", что позволяет добиться правильного порядка вывода.
- Добавлена поддержка параметра SQLITE_DBSTATUS_CACHE_USED для функции sqlite3_db_status(), для получения в реальном режиме времени информации о состоянии распределения памяти для всех областей, ассоциированных с заданным соединением к БД.
- Логический размер базы данных теперь сохраняется в заголовке, что позволяет добавлять новые данные в конец файла с БД без его повреждения, даже в системах не имеющих поддержки ftruncate().
© OpenNet