|
|
Буфер
параметров транзакции (TPB)
– это
необязательный байтовый массив,
определяемый приложением, которое через
этот буфер передает аргументы в isc_start_transaction(),
которая, в свою очередь, устанавливает
аттрибуты транзакции, ее операционные
характеристики, режим чтения или записи для
доступа к таблице, или только чтение, и
могут или нет другие активные
транзакции иметь разделяемый доступ к
таблице. Каждая транзакция должна иметь TPB,
или использовать совместно с другими общий TPB. Примечание:
Если TPB
не создан, то в isc_start_transaction() нужно передать
вместо TPB
– NULL. И
тогда установятся атрибуты транзакции по
умолчанию. 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
параметры определяют следующие
характеристики транзакции:
isc_tpb_read
isc_tpb_write
isc_tpb_concurrency isc_tpb_consistency isc_tpb_read_committed, isc_tpb_rec_version isc_tpb_read_committed, isc_tpb_no_rec_version
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 |