Проблема
`LOCK TABLE` в режиме `ACCESS EXCLUSIVE` (или `TABLOCKX` в MSSQL) блокирует параллельные запросы (SELECT, INSERT, UPDATE, DELETE) к таблице, вызывая полную остановку операций с ней.

Причины
- Использование максимально строгого режима блокировки без необходимости.
- Длительная транзакция, удерживающая блокировку.
- Отсутствие таймаута или обработки `NOWAIT` – запросы встают в очередь ожидания.
- Взаимные блокировки (deadlock) при множественных блокировках разными транзакциями.

Решение
1. Выбирать минимальный необходимый уровень блокировки (например, `ROW EXCLUSIVE` вместо `ACCESS EXCLUSIVE`).
2. Задавать таймаут блокировки:
- PostgreSQL: `SET lock_timeout = '1s';`
- MySQL: `SET innodb_lock_wait_timeout = 1;`
- MSSQL: `SET LOCK_TIMEOUT 1000;`
3. Использовать `NOWAIT` для немедленного отказа при недоступности блокировки:
`LOCK TABLE t IN ACCESS EXCLUSIVE MODE NOWAIT;`
4. Разделять длительные операции на короткие транзакции с `COMMIT`.
5. Мониторить активные блокировки через системные представления:
- PostgreSQL: `pg_locks`
- SQL Server: `sys.dm_tran_locks`
6. Ограничить права на `LOCK TABLE` для предотвращения DoS-атак (только админ).

Пример безопасного использования:
sql
BEGIN;
SET lock_timeout = 500; -- 0.5 сек
LOCK TABLE orders IN ROW EXCLUSIVE MODE;
UPDATE orders SET status='archived' WHERE date < '2020-01-01';
COMMIT;