Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Согласованность читаемых данных при READ COMMITTED  [new]
fisher
Member

Откуда:
Сообщений: 60
Допустим, есть единичный (это важно) "тяжелый" SELECT.
Его выполнение занимает определенное время, таблицы обрабатываются в соответствии с планом выполнения запроса. Что произойдет при попытке INSERT в другой транзакции в одну из таблиц, которая к этому моменту уже обработана?
1) Не даст вставить? Тогда какими видами блокировок и на какую область это обеспечивается? Хочется понять масштаб - насколько чтение мешает записи.
2) Даст вставить? Тогда полученные данные могут быть несогласованы...
18 сен 13, 15:10    [14854801]     Ответить | Цитировать Сообщить модератору
 Re: Согласованность читаемых данных при READ COMMITTED  [new]
invm
Member

Откуда: Москва
Сообщений: 9406
READ COMMITTED предотвращает только грязное чтение. Все остальные артефакты параллельного доступа допустимы.
18 сен 13, 15:33    [14855015]     Ответить | Цитировать Сообщить модератору
 Re: Согласованность читаемых данных при READ COMMITTED  [new]
fisher
Member

Откуда:
Сообщений: 60
invm
READ COMMITTED предотвращает только грязное чтение. Все остальные артефакты параллельного доступа допустимы.

То есть даст вставить?
18 сен 13, 15:42    [14855129]     Ответить | Цитировать Сообщить модератору
 Re: Согласованность читаемых данных при READ COMMITTED  [new]
Glory
Member

Откуда:
Сообщений: 104760
fisher
invm
READ COMMITTED предотвращает только грязное чтение. Все остальные артефакты параллельного доступа допустимы.

То есть даст вставить?

Весь процесс наложения и снятия блокировок вы можете увидеть в Профайлере
В хелпе вы можете прочитать про совместмость блокировок
И "вычислить" - даст или не даст
18 сен 13, 15:46    [14855162]     Ответить | Цитировать Сообщить модератору
 Re: Согласованность читаемых данных при READ COMMITTED  [new]
fisher
Member

Откуда:
Сообщений: 60
Glory
Весь процесс наложения и снятия блокировок вы можете увидеть в Профайлере
В хелпе вы можете прочитать про совместмость блокировок
И "вычислить" - даст или не даст

Могу. Наверное :)
Я пока не настоящий сварщик.
Просто хотел прояснить пару моментов в тьме своего непонимания.
Думал, что спрашиваю достаточно базовые вещи (для специалистов) и смогу получить на них быстрый авторитетный ответ.
18 сен 13, 15:54    [14855250]     Ответить | Цитировать Сообщить модератору
 Re: Согласованность читаемых данных при READ COMMITTED  [new]
zxc1257
Member

Откуда:
Сообщений: 71
fisher

1) Не даст вставить? Тогда какими видами блокировок и на какую область это обеспечивается? Хочется понять масштаб - насколько чтение мешает записи.
2) Даст вставить? Тогда полученные данные могут быть несогласованы...


1) При read committed вставить даст. Serializable - вставить не даст (но вам оно надо?)
2) Данные будут согласованы в соответствии с выбранным вами уровнем изоляции транзакций.

PS. Мне кажется вам надо READ COMMITED SNAPSHOT (читать про row-versioning)
18 сен 13, 16:03    [14855337]     Ответить | Цитировать Сообщить модератору
 Re: Согласованность читаемых данных при READ COMMITTED  [new]
Glory
Member

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

Вы спрашиваете - что и как долго будет блокировать мой неизвестный и тяжелый запрос.
Базовую информаию об уровне изоляции вам уже сообщили
18 сен 13, 16:06    [14855371]     Ответить | Цитировать Сообщить модератору
 Re: Согласованность читаемых данных при READ COMMITTED  [new]
fisher
Member

Откуда:
Сообщений: 60
zxc1257
При read committed вставить даст

Понял, спасибо.
Glory
Вы спрашиваете - что и как долго будет блокировать мой неизвестный и тяжелый запрос.
Базовую информаию об уровне изоляции вам уже сообщили

На самом деле это был простой теоретический вопрос - возможна вставка при описанных условиях или нет.

Всем спасибо.
18 сен 13, 16:12    [14855421]     Ответить | Цитировать Сообщить модератору
 Re: Согласованность читаемых данных при READ COMMITTED  [new]
Glory
Member

Откуда:
Сообщений: 104760
fisher
Glory
Вы спрашиваете - что и как долго будет блокировать мой неизвестный и тяжелый запрос.
Базовую информаию об уровне изоляции вам уже сообщили

На самом деле это был простой теоретический вопрос - возможна вставка при описанных условиях или нет.

Всем спасибо.

BOL - SET TRANSACTION ISOLATION LEVEL
READ COMMITTED
Specifies that statements cannot read data that has been modified but not committed by other transactions. This prevents dirty reads. Data can be changed by other transactions between individual statements within the current transaction, resulting in nonrepeatable reads or phantom data. This option is the SQL Server default.
18 сен 13, 16:15    [14855454]     Ответить | Цитировать Сообщить модератору
 Re: Согласованность читаемых данных при READ COMMITTED  [new]
fisher
Member

Откуда:
Сообщений: 60
Glory
Data can be changed by other transactions BETWEEN individual statements within the current transaction, resulting in nonrepeatable reads or phantom data

С BETWEEN всё понятно и на каждом углу написано.
В сабже вопрос о согласованности результатов единичного запроса.
18 сен 13, 16:26    [14855571]     Ответить | Цитировать Сообщить модератору
 Re: Согласованность читаемых данных при READ COMMITTED  [new]
Glory
Member

Откуда:
Сообщений: 104760
fisher
В сабже вопрос о согласованности результатов единичного запроса.

Нет универсального ответа для любого запроса. Потому что каждый запрос индивидуально накладывает и удерживает блокировки.
18 сен 13, 16:28    [14855596]     Ответить | Цитировать Сообщить модератору
 Re: Согласованность читаемых данных при READ COMMITTED  [new]
fisher
Member

Откуда:
Сообщений: 60
Glory
Нет универсального ответа для любого запроса. Потому что каждый запрос индивидуально накладывает и удерживает блокировки.

Про детали блокировок я уже не пытаю.
А на вопрос о ГАРАНТИЯХ при уровне изоляции READ COMMITTED однозначный ответ дать можно.
Гарантируется ли, что результат запроса будет получен по "снимку" БД на какой-то момент, или не гарантируется?
Вот что по сути меня интересует.
Вопрос именно про READ COMMITTED, а не READ COMMITTED SNAPSHOT
18 сен 13, 16:40    [14855679]     Ответить | Цитировать Сообщить модератору
 Re: Согласованность читаемых данных при READ COMMITTED  [new]
Glory
Member

Откуда:
Сообщений: 104760
fisher
Гарантируется ли, что результат запроса будет получен по "снимку" БД на какой-то момент, или не гарантируется?

На какой именно "какой-то" ?
На начало ? На конец ? На момент первого обращения к какой-то таблице, участвующей в запросе ?
18 сен 13, 16:43    [14855692]     Ответить | Цитировать Сообщить модератору
 Re: Согласованность читаемых данных при READ COMMITTED  [new]
fisher
Member

Откуда:
Сообщений: 60
Glory
На начало ? На конец ? На момент первого обращения к какой-то таблице, участвующей в запросе ?

На любой. Меня устроит ответ и в такой формулировке.
18 сен 13, 16:53    [14855760]     Ответить | Цитировать Сообщить модератору
 Re: Согласованность читаемых данных при READ COMMITTED  [new]
Glory
Member

Откуда:
Сообщений: 104760
fisher
Glory
На начало ? На конец ? На момент первого обращения к какой-то таблице, участвующей в запросе ?

На любой. Меня устроит ответ и в такой формулировке.

Фейспалм.
Блокировки могут не одномоментно накладываться. Могут вообще не накладываться.
18 сен 13, 17:02    [14855811]     Ответить | Цитировать Сообщить модератору
 Re: Согласованность читаемых данных при READ COMMITTED  [new]
invm
Member

Откуда: Москва
Сообщений: 9406
fisher
А на вопрос о ГАРАНТИЯХ при уровне изоляции READ COMMITTED однозначный ответ дать можно.
Гарантируется ли, что результат запроса будет получен по "снимку" БД на какой-то момент, или не гарантируется?
Ну, исходя из полученных ответов, уже могли бы догадаться, что не гарантируется.
18 сен 13, 17:09    [14855857]     Ответить | Цитировать Сообщить модератору
 Re: Согласованность читаемых данных при READ COMMITTED  [new]
fisher
Member

Откуда:
Сообщений: 60
invm
Ну, исходя из полученных ответов, уже могли бы догадаться, что не гарантируется.

Ваш ответ - второй по счету. Спасибо.
18 сен 13, 17:25    [14855956]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить