Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> транзакция, блокирующая на чтение, не блокирует на чтение 
:(
    Опции темы
марина
Дата 1.11.2007, 13:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 97
Регистрация: 2.8.2006

Репутация: нет
Всего: нет



это 1-ый запрос
Код

use Northwind
GO
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
GO
BEGIN TRANSACTION
SELECT * FROM Orders WAITFOR DELAY '00:00:08'
COMMIT TRANSACTION 
GO

это 2-ой запрос 
Код

use Northwind

BEGIN TRANSACTION  
SELECT * FROM Orders 
COMMIT TRANSACTION

Надо сделать, чтобы при запуске 1-го запроса, 2-ой запрос блокировался до завершения 1-го. Те блокирующий select.
Но что-то не получается, что не так в коде?
PM MAIL   Вверх
Deniz
Дата 1.11.2007, 14:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

Репутация: 1
Всего: 44



COMMIT - закрывает транзакцию, и вместе с ней все блокировки.
+ MSSQL 2005 может работать как версионник(при определенных настройках), а версионники не блокируют "читателей"


--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
марина
Дата 1.11.2007, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 97
Регистрация: 2.8.2006

Репутация: нет
Всего: нет



COMMIT - закрывает транзакцию, и вместе с ней все блокировки. - Да, но я установила задержку. И у меня во время этой задержки не должно быть доступа в той таблице над которой я применяю select.

+ MSSQL 2005 может работать как версионник(при определенных настройках), а версионники не блокируют "читателей" - а вот про это поподробней, что такое версионник и как с этим боротьсяsmile у меня норм лецинзионная версия.. все настройки по умолчанию... где их посмотреть и если надо подкорректировать, если дело в этом...
я новичок и мне казалось что сам запрос пишу не верно.
PM MAIL   Вверх
LSD
Дата 1.11.2007, 17:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: нет
Всего: 538



Я конечно не специалист по MS SQL, но почему одна читающая транзакция, должна блокировать другую читающую транзакцию?

По идее надо захватывать эксклюзивную блокировку на таблицу (если такое возможно).


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
SergKO
Дата 2.11.2007, 06:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 231
Регистрация: 14.3.2005

Репутация: 17
Всего: 20



1-й запрос
Код

use Northwind
GO
begin transaction
    select * from Orders with(updlock)
    waitfor DELAY '00:00:08'
commit transaction
GO

2-й запрос
Код

use Northwind
GO
select * from Orders with(updlock)


select по умолчанию накладывает shared блокировку, которая совместима  с другими разделяемыми блокировками, с блокировками намерений, но не совместима с эсклюзивными блокировками, накладываемыми при апдейтах и вставках.
Для того, чтобы select блокировал чтение необходимо использовать hint updlock. Очень интересная комбинация хинтов with(rowlock, updlock, readpast). Она позволяет блокировать доступ к записям, попадающим в условие отбора, но не препятсятвует чтению других записей. Блокируемые же записи просто не считываются.

Поэкспериментируйте с такими запросами.
1-й
Код

use Northwind
GO
begin transaction
    select * from Orders with(rowlock, updlock, readpast)
    where Orders.OrderID = 10248
    waitfor DELAY '00:00:08'
commit transaction
GO

2-й
Код

use Northwind
GO
select * from Orders with(rowlock, updlock, readpast)


PM MAIL   Вверх
Deniz
Дата 2.11.2007, 07:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

Репутация: 1
Всего: 44



Цитата(марина @  1.11.2007,  17:22 Найти цитируемый пост)
...а вот про это поподробней, что такое версионник и как с этим боротьсяsmile

см. статью, она правда старая, но ...


--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
LSD
Дата 2.11.2007, 17:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: нет
Всего: 538




M
LSD
Перенесено их баз данных



--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "MS SQL"
Akina

Akina

Запрещается!

Публиковать ссылки и обсуждать взлом чего бы то ни было.

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы составления неспецифических запросов рассматриваются здесь
  • Используйте теги [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS SQL Server | Следующая тема »


 




[ Время генерации скрипта: 0.0525 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.