Сохраняйте передвижение OAT!
Сохраняйте передвижение OAT!
Медленное передвижение OAT почти всегда указывает на транзакции, выполняющиеся долго. Исключение таких транзакций является одним из наилучших навыков, которые вы можете получить, обучаясь написанию клиентских приложений для Firebird.
Проще всего обвинить поведение пользователей в появлении долгих транзакций. Вы должны помочь им научиться завершать задачи в разумное время: не отправляться пить кофе, не завершив задач, не выдавать "диких запросов" в пиковое время и т.д. При этом хорошее проектирование клиентского приложения исключает его зависимость от правильного поведения пользователя.
* Подходят механизмы, которые завершают со временем забытые транзакции.
* Как основное правило, исключите интерфейсы просмотра данных и используйте практичные средства.
* Если использование интерфейса просмотра неизбежно, изолируйте операторы, выбирающие данные для просмотра, в транзакциях READ-ONLY READ COMMITTED.
* Убедитесь, что транзакции READ/WRITE регулярно подтверждаются - даже если пользователи используют их только для просмотра данных.
* Избегайте приложений, выполняющих произвольные запросы, включая в запросы WHERE и устанавливая ограничения по времени.
* Убедитесь, что ваши приложения имеют средства для периодического выполнения "жестких подтверждений" любых транзакций, выполняющих COMMIT RETAIN.
* Возьмите за правило использовать RollbackRetaining не более одного раза в обработчике исключений. Не помещайте RollbackRetaining внутрь циклов!
* Учитывайте, что происходит с транзакциями в сервере! Используйте gstat -h или эквивалентный инструмент для отслеживания OIT и OAT. Обращайте внимание на "зазор"[109].
* Не пренебрегайте наведением порядка в базе данных. Чистка (sweep) должна выполняться систематически. Регулярное выполнение резервного копирования, даже без восстановления базы данных, поможет поддерживать инвентарные страницы транзакций в хорошей форме[110].
Пора дальше
Теперь, когда вы освоили запутанные вопросы управления транзакциями, самое время направить ваши таланты на программирование на серверной стороне. В части VII вы начнете работать с мощными средствами, доступными в PSQL: хранимые процедуры и триггеры, обработка пользовательских исключений, механизм событий в Firebird. В главе 28 мы начнем рассматривать преимущества действий на стороне сервера для централизации бизнес-правил и сокращения сетевого трафика перед тем, как перейдем к синтаксису и техникам в следующих главах.