Экспериментальная версия с возможностью отключения блокировки записи таблиц при запросах в транзакции.Боятся ее не стоит, по-умолчанию все работает как раньше.
Суть в чем, 1sqlite при выполнении запроса и использовании свойства ВыполнятьВТранзакции блокирует используемые таблицы 1С на запись.
Но мы же ничего туда не пишем! Но уж так 1с и dbeng32 работает.
Этот механизм удалось обмануть, получился аналог хинта (nolock), Запрос читает в ВыполнятьВТранзакции медленнее, зато не блокирует запись всем остальным пользователям, а это очень важно при длительных запросах.
* 1sqlite 3.16.2.15+ SQLiteBase добавлено свойство LockingMode=<Режим> РежимБлокировки=<Режим>
<Режим> - метод блокировки таблиц и вызова транзакций, битмаска
0х00 - по умолчанию, блокировки как в оригинале. блокировка таблиц запроса на запись, транзакции вручную перед запросом;
0х01 - блокировка на запись не ставится
0х10 - транзакции автоматически
т.е.
0 - по умолчанию, блокировки как в оригинале. блокировка таблиц запроса на запись, транзакции вручную перед запросом;
1 - блокировка на запись не ставится, транзакции вручную перед запросом;
2 - ставится блокировка на запись, транзакции принудительно;
3 - блокировка на запись не ставится, транзакции принудительно;
Там же
https://cloud.mail.ru/public/9znr/ZJ6ULE9aRВыглядит это как то так в не монопольном режиме
SELECT count(*) FROM Регистр_ПартииНаличие
режим 0
без транзакции - 29с
с транзакцией и блокировкой на запись регистра - 1с
режим 3 - 6с, но запись в таблицы возможна
6с не идеально, но это плата за компромисс балансировки чтения/записи.
P.S. рассмотрен один из самых плохих вариантов запроса, на мелких и точечных запросах разница почти не заметна, но все таки есть и в положительную сторону.
Может стоит добавить и Запросу такое же свойство, чтобы гибко переопределять режим?