OIT и OAT должны постоянно изменяться

OIT и OAT должны постоянно изменяться

Совет "OIT и OAT должны постоянно изменяться" является ключевой фразой для решения всех проблем, связанных с производительностью базы данных. Время, потраченное на изучение цикла жизни транзакций в многоверсионной архитектуре Firebird, будет одним из лучших ваших вложений в дальнейшую работу с Firebird другими базами данных с открытыми текстами[93].

Для начала понимания взаимодействия между клиентскими процессами, которые "владеют" транзакциями, с одной стороны, и учетом транзакций, выполняемым в базе данных, с другой, будет полезным познакомиться с механизмом взаимодействия сервера и транзакций.

Образ состояния транзакции

Внутренний образ состояния транзакции (Transaction State Bitmap, TSB) является таблицей, содержащей идентификаторы транзакций и их состояние, поддерживаемой сервером и инициализируемой при начальном подключении к базе данных. В логических терминах TSB содержит каждую транзакцию, найденную в инвентарных страницах транзакций, которая новее, чем OIT. Пока существуют подключения к базе данных, серверный процесс поддерживает TSB динамически, добавляя новые идентификаторы транзакций, изменяя состояние и удаляя идентификаторы, которые становятся неинтересными (т. е. будут подтверждены). Сервер записывает изменения в инвентарные страницы транзакций без повторного их чтения с диска.

На рис. 25.2 иллюстрируются эти шаги. Каждый раз, когда сервер обрабатывает запрос для транзакции, он читает заголовочную страницу базы данных, чтобы получить идентификатор для следующей транзакции. Изменяется TSB, и изменения записываются в инвентарные страницы базы данных.

"Движение вперед OIT (И/ИЛИ OAT)" - это термин Firebird, обозначающий увеличение значений OIT и OAT

В заголовочной странице базы данных, когда подтверждающиеся более старые транзакции исключаются из TSB, а новые транзакции, в свою очередь, становятся "старейшими". Обновление заголовочной страницы базы данных последними значениями OIT, OAT и следующей транзакции являются частью такой динамической экологии.

Если новая транзакция является транзакцией SNAPSHOT, она будет иметь свою собственную копию TSB для поддержания согласованного вида состояния базы данных, каким он был при ее старте. Транзакция READ COMMITTED всегда обращается к самому последнему "глобальному" TSB для получения доступа к версиям, подтвержденным после ее старта.

Рис. 25.2. Взаимодействие процесса клиент-сервер с TSB

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг:

Вы должны быть уверены в том, что ваш код работает

Из книги автора

Вы должны быть уверены в том, что ваш код работает Как узнать, работает ли ваш код? Легко. Протестируйте его. Потом протестируйте еще раз. Протестируйте слева направо, потом справа налево. А теперь еще и сверху вниз!Возможно, вас беспокоит, что столь тщательное тестирование


(3.18) Как задать пpиоpитет пpоцесса еще пpи его запyске? Чтоб не лазить постоянно для этого в task manager?

Из книги автора

(3.18) Как задать пpиоpитет пpоцесса еще пpи его запyске? Чтоб не лазить постоянно для этого в task manager? Запуская с помощью консольной команды start можно запускать приложение с нужным приоритетом, указывать время, через которое приложение должно быть закрыто, и некоторые другие


(8.3) Постоянно занято 30-50% системных ресурсов, даже когда никаких программ не запущенно.

Из книги автора

(8.3) Постоянно занято 30-50% системных ресурсов, даже когда никаких программ не запущенно. Это связанно с некорректной поддержкой режима ACPI Вашей материнской платой. Лечится это, обычно, обновлением BIOS, но, иногда, можно столкнуться с ситуацией, когда эта проблема


(8.5) Постоянно зависает Adobe Photoshop 5.5 при вставлении из клипборда или импорте клипборда при переключении из другого софта.

Из книги автора

(8.5) Постоянно зависает Adobe Photoshop 5.5 при вставлении из клипборда или импорте клипборда при переключении из другого софта. Эта проблема встречается на ограниченном количестве материнских плат, и связанна с ошибкой реализации MMX в Ph5.5. Для решения проблемы достаточно удалить


3.8. Как задать пpиоpитет процесса еще пpи его запyске, чтоб не лазить постоянно для этого в task manager?

Из книги автора

3.8. Как задать пpиоpитет процесса еще пpи его запyске, чтоб не лазить постоянно для этого в task manager? Запуская с помощью консольной команды start можно запускать приложение с нужным приоритетом, указывать время, через которое приложение должно быть закрыто, и некоторые другие


6.12. CD-ROM постоянно сбрасывается в PIO режим, и не хочет выставляться обратно в UDMA.

Из книги автора

6.12. CD-ROM постоянно сбрасывается в PIO режим, и не хочет выставляться обратно в UDMA. Это происходит если XP обнаруживает, что устройство не стабильно работает в выбранном для него режиме. Определяется это по количеству ошибок чтения, получаемых с привода. Обычно это означает


Важно постоянно замерять результаты

Из книги автора

Важно постоянно замерять результаты После внедрения той или иной фишки нужно постоянно делать замеры ключевых показателей в интернет-магазине и анализировать эффект от ее


Постоянно сообщайте клиентам о состоянии заказа

Из книги автора

Постоянно сообщайте клиентам о состоянии заказа Ваша задача – информировать клиента о состоянии заказа, чтобы он знал, на какой стадии его покупка, и не думал, что про него забыли.Обязательно отправляйте клиентам письма, как только:• заказ поступил в


ЧТО ВЫ ДОЛЖНЫ БЫЛИ УЗНАТЬ В ЭТОЙ ГЛАВЕ

Из книги автора

ЧТО ВЫ ДОЛЖНЫ БЫЛИ УЗНАТЬ В ЭТОЙ ГЛАВЕ Как осуществить выбор из двух возможностей выполнить оператор или пропустить его: с помощью оператора if.Как осуществить выбор одного из двух вариантов: с помощью оператора if-else.Как осуществить выбор одного из нескольких вариантов: с


ЧТО ВЫ ДОЛЖНЫ БЫЛИ УЗНАТЬ В ЭТОЙ ГЛАВЕ

Из книги автора

ЧТО ВЫ ДОЛЖНЫ БЫЛИ УЗНАТЬ В ЭТОЙ ГЛАВЕ Три типа циклов в языке Си: while, for и do while.Различие между циклами с предусловием и с постусловием.Почему циклы с предусловием используются гораздо чаще, чем циклы с постусловием.Дополнительные операции присваивания:


ЧТО ВЫ ДОЛЖНЫ БЫЛИ УЗНАТЬ В ЭТОЙ ГЛАВЕ

Из книги автора

ЧТО ВЫ ДОЛЖНЫ БЫЛИ УЗНАТЬ В ЭТОЙ ГЛАВЕ Как определять функцию.Как передавать функции информацию: при помощи аргументов.Различие между формальным и фактическим аргументами: первый является переменной, используемой функцией, а второй - значением, поступающим из


ЧТО ВЫ ДОЛЖНЫ БЫЛИ УЗНАТЬ В ЭТОЙ ГЛАВЕ

Из книги автора

ЧТО ВЫ ДОЛЖНЫ БЫЛИ УЗНАТЬ В ЭТОЙ ГЛАВЕ Как представлять функцию: черный ящик с информационным потоком.Что такое "проверка ошибок" и почему эта процедура хороша.Алгоритм сортировки.Как заставить функцию изменять массив: function(array).Как преобразовать строку цифр в


ЧТО ВЫ ДОЛЖНЫ БЫЛИ УЗНАТЬ В ЭТОЙ ГЛАВЕ

Из книги автора

ЧТО ВЫ ДОЛЖНЫ БЫЛИ УЗНАТЬ В ЭТОЙ ГЛАВЕ Как определять символьные константы директивой #define: #define FINGERS 10Как включать другие файлы: #include "albanian.h"Как определить макрофункцию: #define NEG(X) (-(X))Когда использовать символические константы: часто.Когда использовать макрофункции:


ЧТО ВЫ ДОЛЖНЫ БЫЛИ УЗНАТЬ В ЭТОЙ ГЛАВЕ

Из книги автора

ЧТО ВЫ ДОЛЖНЫ БЫЛИ УЗНАТЬ В ЭТОЙ ГЛАВЕ Как объявить строку символов: static char fun[ ] и т. д.Как инициализировать строку символов: static char *p0 = "0!"Как использовать gets( ) и puts( )Как использовать strlen( ), strcmp( ), strcpy( ) и strcatf( )Как использовать аргументы командной строки.В чем сходство и


Что вы должны знать

Из книги автора

Что вы должны знать Данная книга представляет собой не учебник по Flash, а практическое руководство по изучению Flash 8 ActionScript. Подразумевается, что вы уже немного знакомы с рабочей средой Flash и имеете какой-то опыт работы с программой.При этом вы, также как и я, не обязаны быть


Должны ли исключения быть объектами?

Из книги автора

Должны ли исключения быть объектами? Фанатики объектной ориентации (многие ли из тех, кто открыл красоту этого подхода, не рискуют стать его фанатиками?) могут критиковать представленный механизм за то, что исключения не являются гражданами первого сорта в программном