|
Вопрос про совместную блокировку таблицы
|
|||
---|---|---|---|
#18+
Добрый день. Может сформулировал тему неправильно.. но все ж. Задача: в одну таблицу относительно одновременно пишут несколько асинхронных процессов, объединенных одной логической операцией. Возможно ли установить блокировку на таблицу на период пока не закончат выполняться все эти процессы. Всем остальным процессам хотелось бы запретить любое чтение/запись этой таблицы. Что посоветуете? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2020, 11:51 |
|
Вопрос про совместную блокировку таблицы
|
|||
---|---|---|---|
#18+
ShIgor, в таких случаях можно использовать блокировку уровня приложения, т.е блокировать процессы, а не таблицу. Но процессы придется доработать. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2020, 12:12 |
|
Вопрос про совместную блокировку таблицы
|
|||
---|---|---|---|
#18+
Писателей можно разрулить через триггеры instead of + sp_getapplock Разрулить читателей относительно просто не выйдет. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2020, 12:24 |
|
Вопрос про совместную блокировку таблицы
|
|||
---|---|---|---|
#18+
Читателям можно установить UPDATE уровень блокировки, т.е. совместимый между собой, а писателям EXCLUSIVE, не совместимый ни с чем. Для applock, разумеется. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2020, 12:44 |
|
Вопрос про совместную блокировку таблицы
|
|||
---|---|---|---|
#18+
Владислав Колосов UPDATE уровень блокировки, т.е. совместимый между собой ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2020, 13:13 |
|
Вопрос про совместную блокировку таблицы
|
|||
---|---|---|---|
#18+
Владислав Колосов, т.е. разные процессы с одной и той же апплок будут писать конкурентно, а читатели которые вообще не знают ни о каких апплоках буду ждать? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2020, 16:14 |
|
Вопрос про совместную блокировку таблицы
|
|||
---|---|---|---|
#18+
ShIgor Владислав Колосов, т.е. разные процессы с одной и той же апплок будут писать конкурентно, а читатели которые вообще не знают ни о каких апплоках буду ждать? Встроенными средствами в сиквеле это не сделать, что бы ничего не программировать (кроме варианта вставки BULK) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2020, 16:33 |
|
Вопрос про совместную блокировку таблицы
|
|||
---|---|---|---|
#18+
ShIgor, для какой версии сервера хотите построить такую логику? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2020, 16:35 |
|
Вопрос про совместную блокировку таблицы
|
|||
---|---|---|---|
#18+
felix_ff, 2016 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2020, 16:41 |
|
Вопрос про совместную блокировку таблицы
|
|||
---|---|---|---|
#18+
ShIgor, если таблица не слишком крупная, можно копировать ее содержимое в дубликат, заполнять процессами дубликат и использовать переключение секций для обмена местами таблиц. Понятно, что писать в исходную таблицу ничего нельзя при этом. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2020, 16:59 |
|
Вопрос про совместную блокировку таблицы
|
|||
---|---|---|---|
#18+
ShIgor, тогда можете покопать в сторону security policy на уровне строк. писателей ограничить block-предикатами, а для читателей настроить filter-предикаты. только в таблице должен тогда существовать некий уникализатор вашей логической единицы. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2020, 17:01 |
|
|
start [/forum/topic.php?fid=46&msg=40013395&tid=1685468]: |
0ms |
get settings: |
8ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
62ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
38ms |
get tp. blocked users: |
1ms |
others: | 16ms |
total: | 160ms |
0 / 0 |