Приглашаем 4 июня 2014 г. на семинар по СУБД Firebird, посвященный транзакциям.
Цель семинара — полностью рассмотреть работу транзакций в Firebird, понять, как влияют транзакции на производительность системы, как работает система сборки мусора, и как использовать эти знания для оптимизации производительности своих приложений.
Семинар пройдет в г. Москва, метро Калужская, Научный проезд, 20, Технопарк "Слава", с 9-30 до 17-30.
Основные докладчики семинара:
Семинар проходит в рамках мирового тура (предыдущие семинары прошли в Зигбурге, Германия и Праге, Чехия).
Спонсоры тура: IBSurgeon/IBase и IBPhoenix. Партнер российского семинара: компания
Ansoft, производитель ПО AVARDA.
Участие в семинаре
Участие в семинаре платное. Стоимость участия: 37 евро (1900 рублей) для 1 человека, 99 евро (5000 рублей) для группы из 3 человек.
Оплата регистрационного взноса:
- От частного лица возможна по карточке или через WebMoney:
(используйте валюту евро или доллары, т. к. пересчет в рубли в магазине проводится по завышенному курсу).
- Если Вы желаете оплатить семинар от российского юридического лица, пришлите список участников на [email protected] для получения договора и счета на оплату.
Как добраться
Адрес: Москва, Научный проезд 20 строение 2, Технопарк Слава.
http://maps.yandex.ru/-/CVf~bZNN
- м. Калужская, выход из головного вагона (в сторону ул. Обручева), и направо.
- Идете по улице Обручева мимо ТЦ "Калужский" (оранжевое здание), до Научного проезда.
- На перекрестке поверните налево, и мимо ювелирного завода, до проходной Технопарк Слава (здание технопарка за проходной, красно-белое).
- Время в пути — примерно 15-20 минут.
На проходной будут списки участников (
нужен паспорт!). Конференц-зал находится в здании на втором этаже.
Подробный план семинара по транзакциям
1. Обзор понятия транзакций, параметры транзакций
- Исторический экскурс в транзакции (блокировочники, dirty read, почему в FB только snapshot и read_committed
- Транзакция — логический кусок, объединяющий группу действий (успешных и неуспешных)
- Свойства транзакций — ACID
- Уровни изолированности — стандартные и как в ФБ, с примерами
- read only\write
- wait и nowait
- Простые примеры, поясняющие суть уровни изолированности с т.з. клиента, без деталей относительно ТИП
- Стандартная картинка взаимодействия транзакций
2. Транзакции в Firebird — отличия и особенности от стандартных
- Полный синтаксис SET TRANSACTION, соответствие параметрам TPB
- недокументированные (в IB) возможности
- Откуда берутся тр-ции, или кто их создаёт
- Приложение
- Системная тр-ция (тр-ция №0)
- Тр-ция сборщика мусора
- Автономные тр-ции — автостарт/автофиниш логгирование
- Тр-ция для триггеров ON CONNECT\ON DISCONNECT
- Простое объяснение версионности (с картинками)
- Как возникают версии
- Состояния транзакций (active, committed, rolled back, limbo)
- Разница между Read Committed и Snapshot?
- Взаимодействие между транзакциями с учетом маркеров: что такое OIT, OST, OAT, Next
- Триггеры на события старта и стопа тр-ции
- Контекстные переменные уровня тр-ции
- Маркеры транзакций, картинка маркеров
3. Реализация транзакций в Firebird
- Что происходит при старте тр-ции
- вычисление глобальных счётчиков (OAT, OST, OIT) и что они вообще означают
- старт авто-свипа
- Что происходит при коммите
- работа DWF
- фактическое выполнение DDL запросов — как и когда
- рассылка ивентов
- сброс грязных страниц
- отметка в TIP
- Что происходит при роллбеке
- штатный роллбек со сбросом кеша
- форсированный роллбек без сброса кеша
- отмена действий тр-ции с помощью анду-лога
- роллбек без помощи анду-лога
- Что такое retaining, что он делает и что он НЕ делает
- Авто-коммит (кто-нибудь вообще знает об этой фиче?)
- Управление потенциально большими объёмами памяти, связанной с тр-цией
- временные блобы
- анду-лог
- локальная копия TIP
- Способность GTT быть модифицируемыми в read-only тр-циях
4. Взаимодействие транзакций и примеры шаблонов для разработки клиентских приложений. Разбор возможных конфликтов
- читатель и читатели — ок (снепшот тото, рид-коммитед рид онли)
- читатель и писатель — несколько вариантов
- писатель и писатель — разбор конфликтов
- Советы по использованию транзакций:
- Справочники
- Разделение читающей и пишущей транзакции
- Блокирование записи путем холостого апдейта
- Блокирование SELECT WITH LOCK
- Рид-коммитед no_rec_version nowait — будет ждать коммит, rec_version
- Отчеты-снепшоты
5. Механизм работы сборки мусора и sweep
- зачем нужна сборка мусора
- как она проходит (свертывание версий)
- какая бывает сборка — кооперативная, фоновая, комбинированная
- свип и сборка мусора
- автосвип — положительные свойства и недостатки
- примеры неправильной работы приложений, которая приводит к накоплению мусора
- слишком длительные пишущие транзакции
- в Классике отсутствие чтения записей, которые были обновлены или удалены (больше работы для свипа).
6. Возможности управления транзакциями и их параметрами из компонент доступа и драйверов
- “Непрямые” компоненты доступа и драйверы — BXE, dbExpress, ODBC, .Net Provider
- Прямые компоненты доступа — IBX, FIBPlus, FireDAC
- Управление транзакциями в приложениях. Примеры и практика
- Управление длительностью транзакций в различных компонентах доступа.
- Варианты реализации окон редактирования данных — когда стартовать и завершать транзакции
- Дву-транзакционные компоненты
- Завершение транзакций по retaining
7. Определение проблем в управлении транзакциями. Диагностика проблем с транзакциями и практика их разрешения
- Анализ gstat -h
- OIT, OST, OAT, NEXT — типичные сочетания, что происходит
- Сочетания, при которых не происходит автоматическая сборка
- Подпорка и как ее создать
- IBTM и изменение в динамике маркеров. Моменты свипа
- Большая дыра между ОИТ и ОСТ не означает мусора в БД, обозначает вероятность.
- Если маркеры не сильно отличаются, мусор может
- Борьба с неуправляемыми legacy-приложениями. “Подпорка” Профитмеда.
- Если разница большая, то мусор не собирался, если разница маленькая (меньше дневного интервала), то мусора собирался.
- Анализ gstat -r — можно узнать количество мусора, примеры c IBAnalyst
- Обнаружение накопления версий при помощи IBAnalyst. Как и когда снимать статистику gstat -r
- Типичные ошибки в управлении транзакциями.
- IBTM — мониторинг транзакций, анализ статистики, поиск странных и узких мест (аналог в FBDataGuard)
- mon$ — поиск длительных транзакций, соединений, выполняемых в транзакциях запросов. Использование MonLogger.
- Trace API