Изучаем sql



Pdf көрінісі
бет202/261
Дата28.07.2022
өлшемі1,6 Mb.
#147825
1   ...   198   199   200   201   202   203   204   205   ...   261
Байланысты:
Изучаем SQL ( PDFDrive )

231

Пользователи, осуществляющие запись в БД, должны запрашивать
и получать от сервера 
блокировку записи 
(
write lock
) для изменения
данных. А пользователи, считывающие данные из БД, должны за
прашивать и получать от сервера 
блокировку чтения 
(
read lock
)
для осуществления запросов к данным. В то время как чтение мо
жет осуществляться одновременно несколькими пользователями,
для каждой таблицы (или ее части) одновременно выдается только
одна блокировка записи, и запросы на чтение блокируются до тех
пор, пока не будет снята блокировка записи.

Пользователи, осуществляющие запись в БД, для изменения дан
ных должны запрашивать и получать от сервера блокировку запи
си, но пользователи, считывающие данные, для запроса данных не
нуждаются ни в каком типе блокировки. Вместо этого сервер гаран
тирует, что читатель видит непротиворечивое представление дан
ных (данные представляются неизменными, даже несмотря на то,
что другие пользователи могут их модифицировать), начиная с мо
мента начала запроса до его завершения. Этот подход известен как
контроль версий 
(
versioning
).
У обеих стратегий есть свои достоинства и недостатки. При первом под
ходе время ожидания может оказаться длительным, если одновремен
но поступило много запросов на чтение и запись. Второй подход может
создать проблемы в случае длительных запросов, поскольку происхо
дит изменение данных. В данной книге обсуждаются три сервера: Mi
crosoft SQL Server использует первый подход, Oracle Database – вто
рой, а MySQL – оба подхода (в зависимости от выбранного пользовате
лем 
механизма хранения 
(
storage engine
), который обсуждается не
много позже).
Также есть ряд различных стратегий блокировки ресурса. Блокирова
ние может выполняться на одном из трех разных уровней, или с одной
из трех 
детализаций 
(
granularities
):
Блокирование таблицы
Предотвращает одновременное изменение несколькими пользова
телями данных одной таблицы. 
 Блокирование страницы
Предотвращает одновременное изменение несколькими пользова
телями данных одной страницы таблицы (страница – сегмент памя
ти, обычно от 2 до 16 Кбайт).
 Блокирование строки
Предотвращает одновременное изменение несколькими пользова
телями одной строки таблицы.
У этих подходов тоже есть свои плюсы и минусы. При блокировке всей
таблицы возникает очень мало промежуточных результатов, но по мере
роста числа пользователей такая блокировка очень быстро приводит


232

Достарыңызбен бөлісу:
1   ...   198   199   200   201   202   203   204   205   ...   261




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет