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