Эта статья является зеркальной статьёй машинного перевода, пожалуйста, нажмите здесь, чтобы перейти к оригиналу.

Вид: 28055|Ответ: 3

[Источник] Многоверсионное управление параллелизмом SQL Server

[Скопировать ссылку]
Опубликовано 28.01.2021 17:55:52 | | |
Согласованность базы данных также является одним из важных показателей для оценки эффективности СУБД. В настоящее время большинство коммерческих баз данных (DB2, SQL Server) используют протокол двухфазной блокировки (Two-Phase Locking, 2PL) для управления параллельностью, который обеспечивает сериализацию одновременного выполнения транзакций. Однако 2PL должен заблокировать любые данные, прежде чем сможет читать или записывать данные. В матрице совместимости блокировки блокировки S (Share Locks) и X (Exclusive Locks) несовместимы, поэтому когда транзакция 1 выполняет операцию чтения данных A (плюс блокировку S), а транзакция 2 хочет записать в данные (добавить блокировку X), то транзакция 2 должна дождаться сработ блокировки S на данных A, прежде чем продолжить. Многоверсионный контроль конкурентности (MVCC) хорошо решает эту проблему. В многоверсионной системе каждая запись генерирует новую версию, и операция чтения может считывать соответствующую версию по мере необходимости, поэтому операции чтения и записи не блокируют друг друга. MVCC увеличивает параллельность, но также вводит дополнительные расходы на хранение, связанные с поддержанием нескольких версий.

Движок базы данных Microsoft SQL Server вводит новую реализацию существующего уровня изоляции транзакций — фиксированные чтения, которые предоставляют снимки на уровне операторов с использованием версионирования строк. Движок базы данных SQL Server также вводит новый уровень изоляции транзакций — снимки для предоставления транзакционных снимков с использованием версии строк.

Установка опции READ_COMMITTED_SNAPSHOT базы данных на ON позволяет изоляцию фиксированного чтения с помощью версирования строк. Установка опции ALLOW_SNAPSHOT_ISOLATION базы данных на ВКЛЮЧЕНО позволяет изолировать снимки. Когда одна из опций включена для базы данных, движок базы данных сохраняет версию каждой изменённой строки. Всякий раз, когда транзакция изменяет строку, изображение строки перед изменением копируется на страницу в хранилище версий. Хранилище версий — это коллекция страниц данных в tempdb. Если существует несколько линий модификации транзакций, несколько версий этой линии будут связаны в цепочке версий. Операция чтения с использованием версионизации строк получит последнюю версию каждой строки, которая была зафиксирована на момент запуска транзакции или оператора.

Приложения, написанные для SQL Server 2008 или новые для SQL Server, реализуют изоляцию чтения с помощью версирования строк, указывая уровень изоляции транзакций для чтения при включении опции READ_COMMITTED_SNAPSHOT базы данных. Все чтения будут смотреть на версию строки, которая была зафиксирована при запуске оператора. Это даст снимок данных на уровне оператора.

Приложения, написанные для SQL Server, реализуют изоляцию снимков, указывая уровень изоляции транзакций снимков, когда опция ALLOW_SNAPSHOT_ISOLATION базы данных ВКЛЮЧЕНА. Все чтения в транзакции snapshot будут смотреть на версию строки, которая была зафиксирована при начале транзакции. Это даст снимок данных на уровне транзакции.

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

Функция Snapshot Isolation расширяет фреймворк блокировки в SQL Server 2008, позволяя приложениям просматривать значения до любых изменений данных. Это предотвращает блокировку приложения, при этом сохраняя действительно отправленные данные. Снимок Read Committed Snapshot в SQL Server 2008 требует активации администратором базы данных, что позволяет читать данные транзакциями только для чтения. Поэтому контроль SI по параллелизму транзакций только для чтения очень хорош, но неясно, относится ли это к транзакциям обновления. Более неблагоприятно, чтобы долгосрочные обновления конкурировали с краткосрочными крупными сделками. Если транзакция между базами пытается использовать стандарт Snapshot Isolation (SI) вместо всех наборов баз данных, транзакция невыполнена. Это, несомненно, создаёт определённые препятствия для масштабируемости. Похоже, что Microsoft ещё далеко до достижения собственного SI, который был бы сильнее спецификации SQL 92.

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

SQL-команды:


Ссылки на ссылки:

Вход по гиперссылке виден.
Вход по гиперссылке виден.
Вход по гиперссылке виден.
Вход по гиперссылке виден.
Вход по гиперссылке виден.
Вход по гиперссылке виден.





Предыдущий:Elasticsearch (ES) воспроизводит индекс клонов
Следующий:Туториал по cubase10.5
Опубликовано 29.01.2021 9:13:40 |
Сюэси
Опубликовано 15.07.2021 20:37:16 |
Я хочу, хочухотеть
Опубликовано 12.12.2021 1:22:12 |
Я хочу это, я хочу, я хочу
Отказ:
Всё программное обеспечение, программные материалы или статьи, публикуемые Code Farmer Network, предназначены исключительно для учебных и исследовательских целей; Вышеуказанный контент не должен использоваться в коммерческих или незаконных целях, иначе пользователи несут все последствия. Информация на этом сайте взята из Интернета, и споры по авторским правам не имеют отношения к этому сайту. Вы должны полностью удалить вышеуказанный контент с компьютера в течение 24 часов после загрузки. Если вам нравится программа, пожалуйста, поддержите подлинное программное обеспечение, купите регистрацию и получите лучшие подлинные услуги. Если есть нарушение, пожалуйста, свяжитесь с нами по электронной почте.

Mail To:help@itsvse.com