Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Вопрос про совместную блокировку таблицы / 12 сообщений из 12, страница 1 из 1
30.10.2020, 11:51
    #40013389
ShIgor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про совместную блокировку таблицы
Добрый день.
Может сформулировал тему неправильно.. но все ж.
Задача: в одну таблицу относительно одновременно пишут несколько асинхронных процессов, объединенных одной логической операцией.
Возможно ли установить блокировку на таблицу на период пока не закончат выполняться все эти процессы.
Всем остальным процессам хотелось бы запретить любое чтение/запись этой таблицы.
Что посоветуете?
...
Рейтинг: 0 / 0
30.10.2020, 12:12
    #40013395
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про совместную блокировку таблицы
ShIgor,

в таких случаях можно использовать блокировку уровня приложения, т.е блокировать процессы, а не таблицу. Но процессы придется доработать.
...
Рейтинг: 0 / 0
30.10.2020, 12:24
    #40013398
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про совместную блокировку таблицы
Писателей можно разрулить через триггеры instead of + sp_getapplock
Разрулить читателей относительно просто не выйдет.
...
Рейтинг: 0 / 0
30.10.2020, 12:44
    #40013406
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про совместную блокировку таблицы
Читателям можно установить UPDATE уровень блокировки, т.е. совместимый между собой, а писателям EXCLUSIVE, не совместимый ни с чем. Для applock, разумеется.
...
Рейтинг: 0 / 0
30.10.2020, 13:13
    #40013417
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про совместную блокировку таблицы
Владислав Колосов
UPDATE уровень блокировки, т.е. совместимый между собой
U не совместимо с U
...
Рейтинг: 0 / 0
30.10.2020, 16:14
    #40013506
ShIgor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про совместную блокировку таблицы
Владислав Колосов,

т.е. разные процессы с одной и той же апплок будут писать конкурентно, а читатели которые вообще не знают ни о каких апплоках буду ждать?
...
Рейтинг: 0 / 0
30.10.2020, 16:33
    #40013513
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про совместную блокировку таблицы
ShIgor
Владислав Колосов,

т.е. разные процессы с одной и той же апплок будут писать конкурентно, а читатели которые вообще не знают ни о каких апплоках буду ждать?
Нет, нужно поменять код всех процессов. Читатели должны перед чтением запросить разрешение applock, и не читать, если нельзя.

Встроенными средствами в сиквеле это не сделать, что бы ничего не программировать (кроме варианта вставки BULK)
...
Рейтинг: 0 / 0
30.10.2020, 16:35
    #40013514
felix_ff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про совместную блокировку таблицы
ShIgor,

для какой версии сервера хотите построить такую логику?
...
Рейтинг: 0 / 0
30.10.2020, 16:41
    #40013520
ShIgor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про совместную блокировку таблицы
felix_ff,

2016
...
Рейтинг: 0 / 0
30.10.2020, 16:59
    #40013541
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про совместную блокировку таблицы
ShIgor,

если таблица не слишком крупная, можно копировать ее содержимое в дубликат, заполнять процессами дубликат и использовать переключение секций для обмена местами таблиц. Понятно, что писать в исходную таблицу ничего нельзя при этом.
...
Рейтинг: 0 / 0
30.10.2020, 17:01
    #40013542
felix_ff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про совместную блокировку таблицы
ShIgor,

тогда можете покопать в сторону security policy на уровне строк.

писателей ограничить block-предикатами, а для читателей настроить filter-предикаты.
только в таблице должен тогда существовать некий уникализатор вашей логической единицы.
...
Рейтинг: 0 / 0
30.10.2020, 19:54
    #40013582
PizzaPizza
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про совместную блокировку таблицы
сам никогда не пользовался этим, но встречал упоминание

sp_bindsession / mars не подойдет в данном случае?
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Вопрос про совместную блокировку таблицы / 12 сообщений из 12, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]