#loopbackjs #strongloop #loopback3
#loopbackjs #strongloop #loopback3
Вопрос:
Я использую Loopback 3 и SQL. У нас 20 миллионов строк в таблицах SQL, и когда мы запрашиваем данные с помощью Loopback, это занимает много времени, и при дальнейшем наблюдении мы обнаружили, что запросы блокируются в SQL. Заметил, что автоматически генерируемые запросы Loopback не имеют никаких WITH (NOLOCK)
. Как добавить WITH (NOLOCK)
для каждого SELECT
запроса?
Комментарии:
1. Какой соединитель вы бы использовали?
2. @KetanPatil loopback-connector-mssql
Ответ №1:
Использование Transaction.READ_UNCOMMITTED
приведет WITH (NOLOCK)
к.
Например:
YourModel.beginTransaction({isolationLevel: YourModel.Transaction.READ_UNCOMMITTED}, (err, tx) => {
// Now we have a transaction (tx)
// Write the queries here
// Then run commit the transaction:
tx.commit(err => {});
});
Смотрите Документы для получения более подробной информации.
Комментарии:
1. @KetanPatil Добавляет ли он NOLOCK? Я уже пробовал выше.. Я не вижу nolock, например, ВЫБЕРИТЕ имя ИЗ Employee С ПОМОЩЬЮ (NOLOCK) в профилировщике трассировки SQL. У меня нет встроенных запросов для выполнения внутри txns. Я вызываю напрямую модель / таблицу
2. Согласно документации, он должен
NOLOCK
3. Это должно привести к транзакции с НЕЗАФИКСИРОВАННЫМ чтением, которая достигает того же результата. Только это относится ко всей транзакции, в то время как другое применимо только к этому оператору.
4. Ошибка @KetanPatil: 1. YourModel.beginTransaction не является функцией 2. Ваша модель. Транзакция. READ_UNCOMMITTED / /YourModel. Транзакция не определена