Приглашаем 4 июня 2014 г. на семинар по СУБД Firebird, посвященный транзакциям.

Цель семинара — полностью рассмотреть работу транзакций в Firebird, понять, как влияют транзакции на производительность системы, как работает система сборки мусора, и как использовать эти знания для оптимизации производительности своих приложений.
Семинар пройдет в г. Москва, метро Калужская, Научный проезд, 20, Технопарк "Слава", с 9-30 до 17-30.

Основные докладчики семинара:
  • Влад Хорсун, Firebird Project
  • Дмитрий Кузьменко, IBSurgeon/IBase
  • Алексей Ковязин, IBSurgeon/IBase
  • также ожидаются А. Пешков и Д. Еманов
Семинар проходит в рамках мирового тура (предыдущие семинары прошли в Зигбурге, Германия и Праге, Чехия).

Спонсоры тура: IBSurgeon/IBase и IBPhoenix. Партнер российского семинара: компания Ansoft, производитель ПО AVARDA.

Участие в семинаре

Участие в семинаре платное. Стоимость участия: 37 евро (1900 рублей) для 1 человека, 99 евро (5000 рублей) для группы из 3 человек.

Оплата регистрационного взноса:
(используйте валюту евро или доллары, т. к. пересчет в рубли в магазине проводится по завышенному курсу).
  • Если Вы желаете оплатить семинар от российского юридического лица, пришлите список участников на [email protected] для получения договора и счета на оплату.
Как добраться

Адрес: Москва, Научный проезд 20 строение 2, Технопарк Слава.

http://maps.yandex.ru/-/CVf~bZNN
  • м. Калужская, выход из головного вагона (в сторону ул. Обручева), и направо.
  • Идете по улице Обручева мимо ТЦ "Калужский" (оранжевое здание), до Научного проезда.
  • На перекрестке поверните налево, и мимо ювелирного завода, до проходной Технопарк Слава (здание технопарка за проходной, красно-белое).
  • Время в пути — примерно 15-20 минут.
На проходной будут списки участников (нужен паспорт!). Конференц-зал находится в здании на втором этаже.

Подробный план семинара по транзакциям

1. Обзор понятия транзакций, параметры транзакций 

  1. Исторический экскурс в транзакции (блокировочники, dirty read, почему в FB только snapshot и read_committed
  2. Транзакция — логический кусок, объединяющий группу действий (успешных и неуспешных)
  3. Свойства транзакций — ACID
  4. Уровни изолированности — стандартные и как в ФБ, с примерами
  5. read only\write
  6. wait и nowait
  7. Простые примеры, поясняющие суть уровни изолированности с т.з. клиента, без деталей относительно ТИП
  8. Стандартная картинка взаимодействия транзакций

 2. Транзакции в Firebird — отличия и особенности от стандартных

  1. Полный синтаксис SET TRANSACTION, соответствие параметрам TPB
  2. недокументированные (в IB) возможности
  3. Откуда берутся тр-ции, или кто их создаёт
    1. Приложение
    2. Системная тр-ция (тр-ция №0)
    3. Тр-ция сборщика мусора
    4. Автономные тр-ции — автостарт/автофиниш логгирование
    5. Тр-ция для триггеров ON CONNECT\ON DISCONNECT
  4. Простое объяснение версионности (с картинками)
  5. Как возникают версии
  6. Состояния транзакций (active, committed, rolled back, limbo)
  7. Разница между Read Committed и Snapshot?
  8. Взаимодействие между транзакциями с учетом маркеров: что такое OIT, OST, OAT, Next
  9. Триггеры на события старта и стопа тр-ции
  10. Контекстные переменные уровня тр-ции
  11. Маркеры транзакций, картинка маркеров

 3. Реализация транзакций в Firebird

  1. Что происходит при старте тр-ции
    1. вычисление глобальных счётчиков (OAT, OST, OIT) и что они вообще означают
    2. старт авто-свипа
  2. Что происходит при коммите
    1. работа DWF
    2. фактическое выполнение DDL запросов — как и когда
    3. рассылка ивентов
    4. сброс грязных страниц
    5. отметка в TIP
  3. Что происходит при роллбеке
    1. штатный роллбек со сбросом кеша
    2. форсированный роллбек без сброса кеша
    3. отмена действий тр-ции с помощью анду-лога
    4. роллбек без помощи анду-лога
  4. Что такое retaining, что он делает и что он НЕ делает
  5. Авто-коммит (кто-нибудь вообще знает об этой фиче?)
  6. Управление потенциально большими объёмами памяти, связанной с тр-цией
    1. временные блобы
    2. анду-лог
  7. локальная копия TIP 
  8. Способность GTT быть модифицируемыми в read-only тр-циях

 4. Взаимодействие транзакций и примеры шаблонов для разработки клиентских приложений. Разбор возможных конфликтов

  1. читатель и читатели — ок (снепшот тото, рид-коммитед рид онли)
  2. читатель и писатель — несколько вариантов
  3. писатель и писатель — разбор конфликтов
  4. Советы по использованию транзакций:
    1. Справочники
    2. Разделение читающей и пишущей транзакции
    3. Блокирование записи путем холостого апдейта
    4. Блокирование SELECT WITH LOCK
    5. Рид-коммитед no_rec_version nowait — будет ждать коммит, rec_version
    6. Отчеты-снепшоты

 5. Механизм работы сборки мусора и sweep

  1. зачем нужна сборка мусора
  2. как она проходит (свертывание версий)
  3. какая бывает сборка — кооперативная, фоновая, комбинированная
  4. свип и сборка мусора 
  5. автосвип — положительные свойства и недостатки
  6. примеры неправильной работы приложений, которая приводит к накоплению мусора
    1. слишком длительные пишущие транзакции 
    2. в Классике отсутствие чтения записей, которые были обновлены или удалены (больше работы для свипа).

 6. Возможности управления транзакциями и их параметрами из компонент доступа и драйверов

  1. “Непрямые” компоненты доступа и драйверы — BXE, dbExpress, ODBC, .Net Provider
  2. Прямые компоненты доступа — IBX, FIBPlus, FireDAC
  3. Управление транзакциями в приложениях. Примеры и практика
  4. Управление длительностью транзакций в различных компонентах доступа.
  5. Варианты реализации окон редактирования данных — когда стартовать и завершать транзакции
  6. Дву-транзакционные компоненты
  7. Завершение транзакций по retaining

7. Определение проблем в управлении транзакциями. Диагностика проблем с транзакциями и практика их разрешения

  1. Анализ gstat -h
  2. OIT, OST, OAT, NEXT — типичные сочетания, что происходит
  3. Сочетания, при которых не происходит автоматическая сборка
  4. Подпорка и как ее создать
  5. IBTM и изменение в динамике маркеров. Моменты свипа
  6. Большая дыра между ОИТ и ОСТ не означает мусора в БД, обозначает вероятность. 
  7. Если маркеры не сильно отличаются, мусор может
  8. Борьба с неуправляемыми legacy-приложениями. “Подпорка” Профитмеда.
  9. Если разница большая, то мусор не собирался, если разница маленькая (меньше дневного интервала), то мусора собирался.
  10. Анализ gstat -r — можно узнать количество мусора, примеры c IBAnalyst
  11. Обнаружение накопления версий при помощи IBAnalyst. Как и когда снимать статистику gstat -r
  12. Типичные ошибки в управлении транзакциями.
  13. IBTM — мониторинг транзакций, анализ статистики, поиск странных и узких мест (аналог в FBDataGuard)
  14. mon$ — поиск длительных транзакций, соединений, выполняемых в транзакциях запросов. Использование MonLogger.
  15. Trace API