Вход | Регистрация
 
Информационные технологии :: Администрирование

Как работают блокировки в MSSQL?

Как работают блокировки в MSSQL?
Я
   DTX 4th
 
14.03.19 - 13:23
Проблема следующая: открываю транзакцию, начинаю писать данные... Последующее можно опустить.
Пока транзация открыта, я не могу на втором компе сделать SELECT TOP 1 * FROM Table - СУБД ждём окончания транзакции. Хотя я ожидал увидеть данные на момент начала транзакции.
ЧЯДНТ?
 
 
   H A D G E H O G s
 
1 - 14.03.19 - 13:30
Делай запрос в 1С!
   H A D G E H O G s
 
2 - 14.03.19 - 13:30
Или ты и пишешь не в 1С, а в SQL ?
   rsv
 
3 - 14.03.19 - 13:31
(0) from table(nolock) и ...увидишь
   rsv
 
4 - 14.03.19 - 13:34
Или ...вставлять данные в колонки а читать из других..тогда взлетит без хинта
   scanduta
 
5 - 14.03.19 - 13:47
(0) ну все верно работает, в ms sql уовень изоляции по умолчанию read commited, это тебе не 1с
   vi0
 
6 - 14.03.19 - 13:52
(0) тебе зачем селект в транзакции?
   vi0
 
7 - 14.03.19 - 13:54
> Хотя я ожидал увидеть данные на момент начала транзакции.
если я не ошибаюсь, тебе поможет read committed snapshot
   DTX 4th
 
8 - 14.03.19 - 13:55
(2) SQL

(3) Зачем мне грязное чтение? Туда попадут записи ещё из незаконченной транзакции.

(5) А в 1С как?

(6) Транзакция на одном компе, селект на другом.

(7) До этого почти дошёл, но не понял, как исполнить. Сейчас погуглю
   scanduta
 
9 - 14.03.19 - 14:03
(8) В 1с вне транзации (допустим при выполнении  запроса в консоли) будет уровень изоляции  READ UNCOMMITTED

тебе должно помочь по идее так:

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
GO
SELECT * from
   DTX 4th
 
10 - 14.03.19 - 14:08
(9) Что-то я сомневаюсь. В 1С же можно начать транзакцию и читать данные на начало транзакции.
А READ UNCOMMITTED - то же самое, что и NOLOCK из (3)
 
 Рекламное место пустует
   scanduta
 
11 - 14.03.19 - 14:22
(10)read uncommitted определяет блокировкe для всего соединения, а nolock только для таблицы
   Cyberhawk
 
12 - 14.03.19 - 14:28
(10) "В 1С же можно начать транзакцию и читать данные на начало транзакции" // Только если RCSI
   Cyberhawk
 
13 - 14.03.19 - 14:28
(или если S, а не X)
   Cyberhawk
 
14 - 14.03.19 - 14:29
А ты же пишешь-блокируешь эксклюзивно, вот и не можешь даже прочитать в другом сеансе
   Провинциальный 1сник
 
15 - 14.03.19 - 14:33
MSSQL изначально не версионник, а блокировочник. И соответственно, 1с разрабатывалась в парадигме блокировочной СУБД. С какой-то версии mssql появилась некая версионность, но в 1с уже привыкли на блокировках жить, а не разруливать конфликты изменений.
   DTX 4th
 
16 - 14.03.19 - 14:59
В общем, RCSI устанавливается уже около часа на базу-миллионник..
Потом отпишусь
   Cyberhawk
 
17 - 14.03.19 - 15:00
"базу-миллионник" // Миллион чего - мегабайт / записей в таблицах / денег в кармане пользователей? ))
   DTX 4th
 
18 - 14.03.19 - 15:00
записей.
Не ожидал, что так долго будет
Сейчас около 1гб всего
   DTX 4th
 
19 - 14.03.19 - 15:47
Не дождался, отменил :|
   Вафель
 
20 - 14.03.19 - 15:48
(18) с базой наверно активная работа шла?
   DTX 4th
 
21 - 14.03.19 - 15:53
(20) Да вроде нет
Но возможно что-то зависло
Ща ещё раз попробую
   vi0
 
22 - 14.03.19 - 18:05
(9) нужно это только указать снапшот
   vi0
 
23 - 15.03.19 - 13:29
(21) ну и?


Список тем форума
Рекламное место пустует  Рекламное место пустует
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух.
Фредерик Брукс-младший
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует