Хранимая процедура, вызывающая тайм-аут только, когда выполнено из приложения

Посмотрите на следующий код, я думаю, что он может вам помочь:

import importlib

name = 'MyFile.MyClass.startApp'
parts = name.split('.')
module_name, method_name = '.'.join(parts[:-1]), parts[-1]
module = importlib.import_module(module_name)

вы можете позвонить getattr(module, method_name)()

10
задан gbn 10 April 2009 в 14:18
поделиться

5 ответов

I think that your problem might be "Parameter sniffing". It is a process when SQL Server's execution environment "sniffs" the sp's parameter values during compilation or recompile to generate faster execution plans. But sometimes it gets a combination of parameters which together with the current data the sp will return makes a really slow sp.

There are a couple of good explanations out there. Search on Stackoverflow. This is one is good: http://omnibuzz-sql.blogspot.com/2006/11/parameter-sniffing-stored-procedures.html

One possible solution is to create local variables in the sp and set the incoming parameters values to them. Then use only the local variables in the sp.

CREATE PROCEDURE [dbo].spTest
  @FromDate as DATETIME
AS
BEGIN
  DECLARE @FromDate_local as DATETIME
  SET @FromDate_local = '2009-01-01'

  SET @FromDate_local = @FromDate
  ...
  SELECT * FROM TestTbl WHERE FromDate >= @FromDate_local
END
11
ответ дан 3 December 2019 в 22:39
поделиться

Перекомпилирование - тупой инструмент. Скорее всего, это сниффинг параметров

См. Этот вопрос: Ошибка хранимой процедуры для конкретного пользователя

3
ответ дан 3 December 2019 в 22:39
поделиться

Спасибо за парней ответов, кажется, поскольку работающий sp_recompile решил проблему, по крайней мере все выполняло smothly, так как я выполнил его вчера во второй половине дня, буду продолжать наблюдать его и видеть, остается ли это быстрым.

Однако не понимайте, что перекомпилировали, не был сделан, когда я изменил содержание в SP?

1
ответ дан 3 December 2019 в 22:39
поделиться

Удостоверьтесь, что Ваша производственная база данных имеет актуальную статистику, и индексы в хорошем состоянии (если это возможно, считают восстановление индексов включенным).

0
ответ дан 3 December 2019 в 22:39
поделиться

Можно ли быть уверены, что нет появления ситуации с мертвой блокировкой? Выполнение от студии управления было бы изолировано, где как из приложения это могло бы быть частью большей транзакции.

0
ответ дан 3 December 2019 в 22:39
поделиться
Другие вопросы по тегам:

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