Как добавить NOLOCK для автоматически сгенерированных SQL-запросов в Loopback 3

#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. Транзакция не определена