====== RCSI - спосіб зменшити блокування в 1С ======
RCSI — це режим роботи SQL Server при якому читання ніколи не блокує запис, а запис ніколи не блокує читання.
Проблема без RCSI (як у вас зараз)
Користувач А — читає довідник (SELECT)
Користувач Б — змінює той самий довідник (UPDATE)
Результат: один чекає іншого → БЛОКУВАННЯ
Саме через це сесія 58 з простим SELECT на 13 рядків змогла заблокувати ALTER INDEX і через нього — 27 сесій користувачів.
Як працює RCSI
Замість блокування SQL Server зберігає знімок (snapshot) попередньої версії даних у базі tempdb. Читач отримує знімок — актуальний на момент початку запиту — і не чекає того хто пише.
Користувач А — читає знімок даних (не блокує нікого)
Користувач Б — змінює дані (не чекає читача)
Результат: обидва працюють одночасно ✅
Як увімкнути:
-- Перевірити поточний стан
SELECT name, is_read_committed_snapshot_on
FROM sys.databases
WHERE name = 'ViatecUT'
-- Увімкнути RCSI
-- Потрібно щоб не було активних з'єднань з базою!
ALTER DATABASE ViatecUT
SET READ_COMMITTED_SNAPSHOT ON
Що потрібно для tempdb
RCSI використовує tempdb для зберігання версій рядків. Для вашого сервера рекомендується:
-- Перевірити розмір tempdb
SELECT name, size*8/1024 AS розмір_МБ
FROM tempdb.sys.database_files
RCSI — це найефективніший спосіб зменшити блокування в 1С. Більшість великих інсталяцій 1С працюють саме з увімкненим RCSI