Главная ]
1.3.5.Создание буфера параметров транзакции
Программирование
Базы данных



 

Буфер параметров транзакции (TPB) –  это необязательный байтовый массив, определяемый приложением, которое через этот буфер передает аргументы в isc_start_transaction(), которая, в свою очередь, устанавливает аттрибуты транзакции, ее операционные характеристики, режим чтения или записи для доступа к таблице, или только чтение, и могут или нет другие  активные транзакции иметь разделяемый доступ к таблице. Каждая транзакция должна иметь TPB, или использовать совместно с другими общий TPB.

Примечание: Если TPB не создан, то в isc_start_transaction() нужно передать вместо TPBNULL.

И тогда установятся атрибуты транзакции по умолчанию.

TPB обьявляется в С программе как char массив однобайтовых элементов. Каждый элемент это параметр который описывает один аттрибут транзакции. Вот так выглядит обычная декларация этого буфера:

static char isc_tpb[] = {isc_tpb_version3,

isc_tpb_write,

isc_tpb_read_committed,

isc_tpb_no_rec_version,

isc_tpb_wait};

Этот пример использует параметрические константы определенные в заголовочном файле ibase.h . Первый элемент в каждом TPB должен быть константой isc_tpb_version3. Следующая таблица показывает доступные TPB константы, описывает их назначение, показывает которые из них назначаются по умолчанию если указатель на TPB установлен в NULL.

Параметр                             Описание

isc_tpb_version3                              Версия 3 буфера транзакций

isc_tpb_consistency                         Модель транзакции "блокировка таблицы"

isc_tpb_concurrency                         Производительная, параллельная транзакция с приемлемой последовательностью; использование этого параметра дает все преимущества InterBase модели многорождаемых транзакций  [Значение по умолчанию]?????

isc_tpb_shared                                              Параллельный, разделяемый доступ к определенной таблице между всеми транзакциями; используется в сочетании с isc_tpb_lock_read и isc_tpb_lock_write, чтобы установить опцию блокировки [Значение по умолчанию]

isc_tpb_protected                                         Параллельный, ограниченный доступ к определенной таблице; используется в сочетании с isc_tpb_lock_read и isc_tpb_lock_write, чтобы установить опцию блокировки

isc_tpb_wait                                                  Резолюция блокировки определяет, что транзакция должна ждать, пока блокированные ресурсы не будут освобождены перед повторением операции [Значение по умолчанию]    

isc_tpb_nowait                                                   Резолюция блокировки определяет, что транзакция не должна ждать при блокировке ресурсов, когда они будут освобождены, вместо этого должна быть возвращена немедленно ошибка конфликта блокировки.

 

isc_tpb_read                                                       Режим доступа только для чтения, который позволяет транзакции лишь производить выбор данных из таблиц

isc_tpb_write                                                      Режим  доступа чтения-записи позволяющий транзакции выбирать, вставлять и обновлять данные таблицы[по умолчанию]

isc_tpb_lock_read                                          Доступ только для чтения к определенной таблице. Используется в сочетании с isc_tpb_shared, isc_tpb_protected, и isc_tpb_exclusive чтобы установить блокировку.

isc_tpb_lock_write                                                  Доступ чтение-запись для определенной таблицы. Используется в сочетании с isc_tpb_shared, isc_tpb_protected, и isc_tpb_exclusive чтобы установить блокировку[по умолчанию]

isc_tpb_read_committed                                    Высокопроизводительная, высоко(?) параллельная транзакция, которая может читать изменения, совершенные другими параллельными транзакциями. Использование этого параметра дает полное преимущество модели InterBase многорождаемых транзакций.

isc_tpb_rec_version                                          Позволяет isc_tpb_read_committed транзакции читать наиболее позднюю подтвержденную версию записи даже если есть другие, но неподтвержденные версии.    

isc_tpb_no_rec_version                        Позволяет isc_tpb_read_committed транзакции с читать только самую позднейшую подтвержденную версию записи. Если есть неподтвержденная версия записи и она задерживается, и isc_tpb_wait также определен, то транзакция ждет для задержанной записи подтверждения или отката назад. Иначе произойдет сразу ошибка конфликта блокировки. (То есть она не показывает старые версии записей если есть неподтвержденные новые. Прим. переводчика)

 

TPB параметры определяют следующие характеристики транзакции:

  • Номер версии буфера параметров транзакции (Transaction version number), используется ядром InterBase.

  • Режим доступа (Access mode) описывает действия, которые могут быть выполнены функциями связанными с транзакцией. Существуют следующие режимы доступа:

                                    isc_tpb_read

                                    isc_tpb_write    

  • Уровень изоляции (Isolation level) описывает насколько изменения внесенные транзакцией будут отражены в других, одновременно с данной стартовавших транзакций. Существуют следующие уровни изоляции:

isc_tpb_concurrency

isc_tpb_consistency

isc_tpb_read_committed, isc_tpb_rec_version

isc_tpb_read_committed, isc_tpb_no_rec_version

  • Разрешение конфликтов блокировок (Lock resolution). Описывает как транзакция должна вести себя если происходит конфликт блокировок. Существуют два вида реакции.

isc_tpb_wait

isc_tpb_nowait

·        Необязательное резервирование таблицы(Table reservation)  описывает метод доступа и тип блокировки для указанной таблицы с которой транзакция работает. Когда используется резервирование таблицы, таблицы резервируются с определенным типом доступа, когда транзакция стартует,  а не когда она получит фактически обратится к обратится к таблице. Существуют следующие виды резервирования:       

isc_tpb_shared, isc_tpb_lock_write

isc_tpb_shared, isc_tpb_lock_read

isc_tpb_protected, isc_tpb_lock_write

isc_tpb_protected, isc_tpb_lock_read  

<< Назад ] Содержание ] Далее >> ]

 

Дизайн: Piton Alien
Rambler's Top100 Рейтинг@Mail.ru
Сайт создан в системе uCoz