Вход


Главная страница >> Учебный процесс >> Конспекты >> Delphi. Технологии Клиент/Сервер >> Клиент/сервер и локальные базы данных >> Методы блокировки записей

[Назад]    [Содержание ]    [Вперед]

  


Методы блокировки записей


Блокировка ? это механизм, используемый для разрешения нескольким SQL-транзакциям от многих пользователей применять одну и ту же базу данных. Существует несколько уровней блокировки, а, кроме того, серверы могут отличаться методами использования блокировки.

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

Более эффективная методика ? блокировка на уровне страницы (page level). В этом случае сервер блокирует некоторые блоки данных на диске - так называемые страницы(pages). В то время когда одна транзакция выполняет операцию на данной странице для других транзакций возможности модификации данных этой же страницы ограничиваются. Обычно данные располагаются на сотнях страниц, так что несколько транзакций, встречающихся на одной и той же странице, ? большая редкость.

Некоторые серверы предлагают блокировку на уровне записи (record level), т.е. отдельной строки в таблице базы данных. Однако этот метод приводит к большим затратам при хранении информации о блокировке.

Локальные базы данных используют пессимистическую (pessimistic), или детерминированную(deterministic) блокировку. Это означает, что существует ограничение на внесение изменений в записи таблицы, которые в настоящее время изменяются другим пользователем. При попытке обратиться к такой записи появится сообщение об ошибке указывающее, что вы не можете обрабатывать запись, пока предыдущий пользователь не освободил ее.

SQL-базы данных используют концепцию, известную как оптимистическая(optimistic) блокировка. При этом не ограничивается доступ к записи, к которой уже обратился другой пользователь. Вы можете редактировать ее и затем обращаться к серверу для сохранения этой записи. Однако, прежде чем запись будет сохранена, происходит сравнение ее с копией на сервере, которая возможно, модифицировалась другим пользователем в то время, когда вы просматривали или редактировали ее на стороне клиента. Вы получите сообщение об ошибке, указывающее, что запись изменялась с тех пор, как вы ее получили. При проектировании клиентного приложения разработчик должен помнить о таких ситуациях и корректно реагировать на них (заметьте, что в локальной базе данных подобная ситуация невозможна).



[Назад]    [Содержание ]    [Вперед]

  


  
За содержание страницы отвечает Гончарова М.Н.
©
Кафедра СПиКБ, 2002-2017