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