среда, 20 августа 2008 г.

Firebird 2.1 - Таблицы мониторинга

В Firebird 2.1 появилось 7 таблиц мониторинга.Это виртуальные таблицы, с их помощью можно получить данные об активности сервера, информацию о выполняющихся запросах, активных подключениях, а так же собрать статистику базы данных Firebird. Все таблицы доступны только на чтение. Для таблицы MON$STATEMENTS можно применять оператор DELETE для отмены запросов.

MON$DATABASE

В данной таблице содержится информация о текущей базе данных:
  • Путь к базе данных.
  • Дата создания.
  • Диалект.
  • Номера транзакций.
  • Размер страницы.
  • Версия ODS.
  • И т.п.

MON$ATTACHMENTS

В таблице отображаются активные на данные момент подключения к серверу Firebird. С помощью MON$ATTACHMENTS можно прочитать информацию о подключившемся клиенте: путь, PID процесса, имя хоста, протокол, пользователь, состояние подключения и т.д.

В релизе Firebird 2.1 таблица только на чтение. Возможность удалять зависшие коннекты из данной таблицы появится в Firebird 2.5

MON$TRANSACTIONS

Информация о запущенных транзакциях: тип, уровень изоляции, режим autocommit, состояние (idle или active), ссылка на подключение и т.п.

MON$STATEMENTS

Информация о выполняющихся и подготовленных запросах SQL и GDML. В FB 2.1 вы можете выполнить операцию DELETE над этой таблицей для отмены выполняющегося запроса:

delete from mon$statements
where mon$attachment_id <> current_connection

MON$CALL_STACK

MON$CALL_STACK - Информация об активных запросах PSQL, т.е. о выполняемых в данный момент хранимых процедурах и триггерах.

MON$IO_STATS

MON$IO_STATS - Статистика ввода вывода, число прочитанных/записанных страниц и т.п.

MON$RECORD_STATS

MON$RECORD_STATS - Статистика уровня записей: число удаленных, добавленных, вставленных записей, число записей прочитанных по индексу и последовательным перебором и т.д.

понедельник, 18 августа 2008 г.

Firebird 2.1 - Краткий обзор новых возможностей

Для тех, кто планирует переход на Firebird 2.1 с более старых версий FB я собрал краткий обзор тех изменений, которые характерны для данного релиза. Итак:

Таблицы мониторинга Firebird 2.1

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

Глобальные временные таблицы

  • Временные таблицы позволяют хранить промежуточные данных. Время жизни – транзакция или подключение.
  • Общие метаданные и раздельные данные.
  • Поддерживаются индексы, триггеры, уникальность и ссылочная целостность.
  • Данные хранятся во временных файлах - Мгновенная очистка.
  • Нет проблем сборки мусора.

Аутентификация Firebird средствами Windows

В Firebird 2.1 реализована возможность SSPI аутентификации средствами Windows. Администраторы домена на уровне БД определяются как суперпользователи SYSDBA.

Общие табличные выражения. CTE (Common Table Expressions)

Позволяют создавать именованные результирующие множества на основе SQL запросов и использовать их впоследствии для дальнейших операций. При помощи CTE (табличных выражений) легко реализовать рекурсивные запросы.

Повышение производительности

  • Группировка пакетов для передачи по сети.
  • Кэширование информации о запросе.
  • Улучшения сетевого протокола.
  • Оптимизация алгоритма сброса страниц на диск для кеша большого размера.
  • Большие сортировки на диске.
  • Повышена скорость чтения\записи внешних таблиц.
  • Прочее.

Триггеры уровня базы данных

Поддерживаются следующие виды триггеров:
  • CONNECT
  • DISCONNECT
  • TRANSACTION START
  • TRANSACTION COMMIT
  • TRANSACTION ROLLBACK
Для отключения триггеров БД в Firebird 2.1 можно воспользоваться утилитой командной строки:
isql temp.fdb -user SYSDBA -pass masterkey -nodbtriggers
Database: temp.fdb, User: SYSDBA 
SQL> ALTER TRIGGER TRG_CONN INACTIVE; 
SQL> EXIT;

Домены в процедурах и триггерах

Домены в параметрах хранимых процедур:
CREATE PROCEDURE MY_PROC(IN_PARAM [TYPE OF] DOMAIN_A) RETURNS (OUT_PARAM [TYPE OF] DOMAIN_B)
Декларативные переменные в хранимых процедурах и триггерах:
DECLARE VARIABLE VAR1 [TYPE OF] DOMAIN_A
Приведение типов к заданному домену:
OUT_PARAM = CAST(VAR1 AS [TYPE OF] DOMAIN_B)

Изменения в SQL

  • MERGE - объединение диапазонов данных по заданным условиям.
  • INSERT OR UPDATE - общая инстукция для вставки и обновления.
  • Возврат значений через RETURNING для UPDATE, DELETE, INSERT OR UPDATE.
Добавлено множество новых встроенных функций. В следующих сообщениях этого блога все эти вопросы будут рассмотрены более подробно.