Принуждение тайм-аута запроса в SQL Server

Вы столкнулись с 2 проблемами здесь. Я предлагаю несколько способов, которые я нашел полезным.

1. Распознавание пользовательских сущностей: Чтобы решить эту проблему, вам нужно добавить больше обучающих предложений со всеми возможными длинами сущностей. ner_crf будет лучше предсказывать, когда вокруг сущностей есть идентифицируемые маркеры (например, предлоги)

2. Извлечение сущностей из ответа одним словом: В качестве обходного пути я предлагаю вам выполнить ниже манипуляции на стороне клиента.

Когда вы отправляете вопрос наподобие What´s your favorite animal?, добавьте маркер к вопросу, чтобы указать клиенту, что ожидается один ответ. например Вы можете отправить ##SINGLE## What´s your favorite animal? клиенту.

Клиент может удалить ##SINGLE## из вопроса и показать его пользователю. Но когда клиент отправляет ответ пользователя на сервер, он не отправляет Dog, он отправляет что-то вроде User responded with single answer as Dog

Вы можете обучить вашу модель извлечению сущностей из такого ответа.

76
задан BnWasteland 28 April 2009 в 14:16
поделиться

4 ответа

запустите это и затем попробуйте вставить ...

select * from yourTable with (holdlock,tablockx)

здесь, вы можете заблокировать его на 5 минут:

BEGIN TRANSACTION

SELECT * FROM yourTable WITH (TABLOCKX, HOLDLOCK)

WHERE 0 = 1

WAITFOR DELAY '00:05'

ROLLBACK TRANSACTION
127
ответ дан 24 November 2019 в 11:13
поделиться

Вы можете просто попросить свой sql-код подождать минуту перед возвратом:

WaitFor Delay '00:01:00'
29
ответ дан 24 November 2019 в 11:13
поделиться

Check out this blog post. Basically SQL Server doesn't have query timeouts. Clients may enforce a SQL timeout but the engine itself does not.

http://blogs.msdn.com/khen1234/archive/2005/10/20/483015.aspx

6
ответ дан 24 November 2019 в 11:13
поделиться

С другой стороны: если соединение настраивается, сократите время ожидания строки соединения до 1 секунды - это облегчит задачу. Заполните таблицу кучей данных, и три других процесса будут вращаться в цикле, обновляя фрагменты этой таблицы транзакцией вокруг цикла. Не изменяйте фактическую процедуру, вызываемую приложением (вставляя waitfor). Это делает недействительным интеграционный тест.

Но на самом деле, это тематическое исследование в пользу модульного тестирования и внедрения зависимостей. Некоторые вещи просто сложно проверить интеграцией. Модульный тест + внедрение зависимостей .

  • Реальный: код, который занимает кражу -> Тайм-аут базы данных (трудно воспроизвести).
  • Рефакторинг: код, который обрабатывает -> Репозиторий (только доступ к данным) -> База данных
  • Модульный тест: Код, который создает> Макет репозитория для выброса -> null
  • Теперь у вас есть провальный тест для кода, который обрабатывает и может его исправить.

Это инъекция «зависимости». Dev может внедрить зависимость в базу данных, подставляя что-то, что имитирует поведение зависимости. Хорошо для всех тестов базы данных. В любом случае, с помощью модульного теста вы знаете, что исправление делает то, что должно, но вам все еще нужно интеграционное тестирование. В этом случае лучше сконцентрироваться на регрессии - это означает, что тестирование не повредило ничего, и эта функция все еще работает.

Вы уже создали свой патч, поэтому я думаю, что мой ответ слишком поздний.

Хорошо для всех тестов базы данных. В любом случае, с помощью модульного теста вы знаете, что исправление делает то, что должно, но вам все еще нужно интеграционное тестирование. В этом случае лучше сконцентрироваться на регрессии - это означает, что тестирование не повредило ничего, и эта функция все еще работает.

Вы уже создали свой патч, поэтому я думаю, что мой ответ слишком поздний.

Хорошо для всех тестов базы данных. В любом случае, с помощью модульного теста вы знаете, что исправление делает то, что должно, но вам все еще нужно интеграционное тестирование. В этом случае лучше сконцентрироваться на регрессии - это означает, что тестирование не повредило ничего, и эта функция все еще работает.

Вы уже создали свой патч, поэтому я думаю, что мой ответ слишком поздний.

10
ответ дан 24 November 2019 в 11:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: