Выпуск СУБД Firebird 5.0
После двух с половиной лет разработки представлен релиз реляционной СУБД Firebird 5.0. Firebird продолжает развитие кода СУБД InterBase 6.0, открытого в 2000 году компанией Borland. Firebird распространяется под свободной лицензией MPL и поддерживает стандарты ANSI SQL, в том числе такие возможности, как триггеры, хранимые процедуры и репликацию. Бинарные сборки подготовлены для Linux, Windows, macOS и Android.
Ключевые новшества:
- Реализована возможность выполнения операций в многопоточном режиме. Распараллеливание в несколько потоков применимо при создании индексов, сборке мусора (автоматический и ручной sweep), создании резервных копий и восстановлении из них.
gfix -sweep -parallel 4 dbname gbak -b -par 4 -user username -pass password dbname backupname
- Добавлена поддержка частичных индексов, включающих только выборочные записи, соответствующие указанным при создании индекса условиям.
CREATE INDEX IT1_COL ON T1 (COL) WHERE COL ‹ 100;
В выражениях SELECT WITH LOCK, UPDATE и DELETE реализован синтаксис «SKIP LOCKED», позволяющий исключить записи, для которых на момент отправки запроса выставлена блокировка (например, чтобы не ждать освобождения блокировки при пересечении с другой транзакцией).
Добавлена возможность обновления БД до актуальной промежуточной версии хранилища (ODS — On-Disk-Structure) на лету (inline update) без создания и восстановления из резервной копии. Например, теперь можно на лету преобразовать БД в формате Firebird 4.0 (ODS 13.0) в формат Firebird 5.0 (ODS 13.1).
Реализован кэш скомпилированных SQL-выражений, обслуживаемый автоматически (устаревающие записи очищаются по мере необходимости). Размер кэша задаётся через параметр MaxStatementCacheSize в firebird.conf.
Добавлен интерфейс для профилирования SQL и PSQL, позволяющий оценивать время выполнения каждого запроса, накапливать статистику о числе запросов и выявлять проблемы с производительностью.
- В выражение MERGE добавлена поддержка условного блока «WHEN NOT MATCHED BY SOURCE», срабатывающего когда исходная запись не соответствует ни одной записи в целевом наборе.
MERGE INTO customers c USING new_customers nc ON (c.id = nc.id) WHEN MATCHED THEN UPDATE SET name = nc.name WHEN NOT MATCHED BY SOURCE THEN DELETE
Обеспечена возможность возвращения нескольких строк выражением RETURNING, если заданное DML-выражение охватывает несколько строк (ранее в подобных ситуациях выводилась ошибка «multiple rows in singleton select»).
Добавлены новые встроенные функции: UNICODE_CHAR для возвращения unicode-символа, соответствующего заданному коду, и UNICODE_VAL для возвращения кода для заданного символа. В функции EXTRACT, FIRST_DAY и LAST_DAY добавлен параметр QUARTER для определения номера квартала.
Улучшен алгоритм сжатия записей, который теперь применяет счётчик переменной длины для более эффективной упаковки повторяющихся последовательностей данных. Оптимизация позволила значительно повысить степень сжатия не полностью заполненных длинных полей VARCHAR с данными в кодировке UTF-8.
Добавлена возможность работы с двунаправленными курсорами (scrollable) при удалённом сетевом обращении к БД.
Источник: http://www.opennet.ru/opennews/art.shtml? num=60430
© OpenNet