Сервер SQL автоматически решает классическую дилемму читателей-писателей? - PullRequest
1 голос
/ 10 февраля 2012

Я беру класс операционных систем, где мы только что узнали о проблеме reader and writers ': как вы работаете с несколькими процессами, которые хотят читать и писать из одной и той же памяти (в одно и то жевремя)?Я также имею дело с версией этой проблемы на работе: я пишу приложение, которое требует от нескольких пользователей для чтения и записи в общую базу данных сервера SQL.Поскольку проблема «читателей и писателей» кажется настолько понятной и обсуждаемой, я предполагаю, что Microsoft решила ее для меня.Это означает, что мне не нужно беспокоиться о настройке разрешений или настройке SQL-сервера, чтобы люди не читали и не писали в базу данных одновременно.В частности, можно ли предположить, что в SQL Server 2005 по умолчанию:

  1. Ни один процесс не читает, пока другой процесс пишет
  2. Нет двух процессов, пишущих одновременно

Ответы [ 2 ]

3 голосов
/ 10 февраля 2012

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

Считыватель (при уровне чтения по умолчанию с фиксацией на чтение) принимает общую блокировку и снимает ее, как толькоданные читаются.Это несовместимо с блокировкой X, поэтому читатели должны дождаться завершения транзакций записи, прежде чем читать измененные данные.SQL Server также имеет изоляцию моментального снимка , в которой средства чтения не блокируются авторами, а вместо этого читают более раннюю версию строки.

2 голосов
/ 10 февраля 2012

Классические SQL-серверы, такие как MS-SQL, используют пессимистический подход и блокируют строки, таблицы или страницы до выполнения операции записи. Вы действительно не должны справляться с этим, потому что, как вы сказали, создатель уже решил эту проблему. Посмотрите эту статью для получения первой информации, любая книга базы данных подробно расскажет о проблеме. Если вам интересна эта тема, я бы предложил прочитать, например, «Системы баз данных» Коннолли и Бегга.

...