Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Многопользовательские базы данных

Перекрестные соединения | Естественные соединения | Что такое условная логика? | Выражение case | Простые выражения case | Gt; FROM account | Селективная агрегация | Проверка существования | Ошибки деления на нуль | Условные обновления |


Читайте также:
  1. VI. Загрузка данных на внешние носители
  2. Автоматическое заполнение данных
  3. Анализ данных в Excel
  4. Анализ данных эксперимента
  5. Анализ данных, полученных на предприятии
  6. Б) Определите по словарю форму единственного числа данных существительных. Переведите.
  7. Базы данных в Excel

 

Системы управления базами данных разрешают обращаться к данным и изменять их не только одному пользователю, но и нескольким одно_ временно. Если каждый пользователь выполняет запросы, как это происходит с хранилищем данных в течение обычных рабочих часов, для сервера БД это не создает больших проблем. Однако если некото_ рые пользователи добавляют и/или изменяют данные, серверу прихо_ дится сохранять довольно много промежуточных результатов.

 

К примеру, создается отчет, представляющий доступный остаток всех текущих счетов, открытых в отделении. Однако одновременно с вы_ полнением отчета происходит следующее:

• Служащий отделения обрабатывает вклад для одного из клиентов.

• Клиент заканчивает снимать деньги на банкомате в операционном зале.

• Банковское приложение, выполняющееся в конце каждого месяца, начисляет процент по счетам.

 

Следовательно, пока создается отчет, несколько пользователей изме_ няют данные. Так, какие цифры должны появиться в отчете? Ответ от_ части зависит от того, как сервер реализовывает блокировку (locking) – механизм управления одновременным использованием ресурсов дан_ ных. Большинство серверов БД применяют одну из двух стратегий блокировки:


 

Многопользовательские базы данных  
   

 

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

• Пользователи, осуществляющие запись в БД, для изменения дан_ ных должны запрашивать и получать от сервера блокировку запи_ си, но пользователи, считывающие данные, для запроса данных не нуждаются ни в каком типе блокировки. Вместо этого сервер гаран_ тирует, что читатель видит непротиворечивое представление дан_ ных (данные представляются неизменными, даже несмотря на то, что другие пользователи могут их модифицировать), начиная с мо_ мента начала запроса до его завершения. Этот подход известен как

контроль версий (versioning).

 

У обеих стратегий есть свои достоинства и недостатки. При первом под_ ходе время ожидания может оказаться длительным, если одновремен_ но поступило много запросов на чтение и запись. Второй подход может создать проблемы в случае длительных запросов, поскольку происхо_ дит изменение данных. В данной книге обсуждаются три сервера: Mi_ crosoft SQL Server использует первый подход, Oracle Database – вто_ рой, а MySQL – оба подхода (в зависимости от выбранного пользовате_ лем механизма хранения (storage engine), который обсуждается не_ много позже).

 

Также есть ряд различных стратегий блокировки ресурса. Блокирова_ ние может выполняться на одном из трех разных уровней, или с одной из трех детализаций (granularities):

Блокирование таблицы

 

Предотвращает одновременное изменение несколькими пользова_ телями данных одной таблицы.

 

Блокирование страницы

 

Предотвращает одновременное изменение несколькими пользова_ телями данных одной страницы таблицы (страница – сегмент памя_ ти, обычно от 2 до 16 Кбайт).

Блокирование строки

 

Предотвращает одновременное изменение несколькими пользова_ телями одной строки таблицы.

 

У этих подходов тоже есть свои плюсы и минусы. При блокировке всей таблицы возникает очень мало промежуточных результатов, но по мере роста числа пользователей такая блокировка очень быстро приводит


 

232 Глава 12. Транзакции

к недопустимым временам ожидания. С другой стороны, в случае бло_ кировки строки сохраняется намного больше промежуточных резуль_ татов, но такая блокировка позволяет многим пользователям вносить изменения в одну таблицу, если это касается разных строк. Из трех серверов, обсуждаемых в этой книге, Microsoft SQL Server использует блокировки страницы и строки, Oracle Database – блокировку строки, а MySQL может блокировать таблицу, страницу или строку (опять же в зависимости от выбранного механизма хранения).

 

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

 


Дата добавления: 2015-08-17; просмотров: 98 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Обработка значений Null| Что такое транзакция?

mybiblioteka.su - 2015-2024 год. (0.007 сек.)