Delphi 3 и создание приложений баз данных

         

Уровни изоляции транзакций: приложение клиента


При одновременной работе нескольких клиентов с одной и той же БД возникают проблемы одновременного изменения данных.

Пусть пользователь А получил данные из таблицы RASHOD и впоследствии изменил их. В это время с той же записью в таблице RASHOD работает пользователь В. Он также изменил данные в той же записи, что и А, и пытается подтвердить их. Пользователь С работает с таблицей RASHOD в режиме только для чтения. Сразу же возникает группа вопросов - позволять или не позволять В изменять запись, если А еще не подтвердил ее изменение? Позволять ли видеть изменения, внесенные А и В? Может ли А видеть изменения, внесенные В, и наоборот?

Для разрешения указанных проблем существует несколько уровней изоляции (разграничения) транзакций.

Уровень изоляции транзакции определяет:

• могут ли другие (конкурирующие) транзакции вносить изменения в данные, измененные текущей транзакцией;

• может ли текущая транзакция видеть изменения, произведенные конкурирующими транзакциями, и наоборот.

Существуют следующие уровни изоляции транзакций - Dirty Read, Read Commited, Repeatable Read.



Содержание раздела