2015-09-10 4 views
0

У меня есть веб-приложение Java, которое использует следующую функцию для выполнения хранимой процедуры, она подключается к SQL Server 2008:Java хранимая процедура работает медленно

Class.forName(sDriver_Reportes); 
conn = DriverManager.getConnection(sDB_URL, sUSER, sPASS); 
sQuery = "{call procGetResult(?)}"; 
proc = conn.prepareCall(sQuery); 
proc.setString("pDate", sDate); 
proc.execute(); 
rs = proc.getResultSet(); 

но это занимает около 7 минут, чтобы вернуть ResultSet, если я выполню sp, для отображения результата потребуется всего 10 секунд.

Я искал какой-то подобный случай, но нашел только сообщение о параметрах sniffing и пуле соединений, но кто-то кажется похожим на случай mi, потому что sp работает быстро, не могли бы вы дать мне некоторую информацию о том, где еще посмотреть эту проблему? ,

Заранее спасибо.

+0

SP работает нормально, на SQL Server требуется всего 10 секунд, проблема в том, что он запускается в коде, для завершения требуется 7 минут. – JCM

+0

В вашем коде есть ошибка, пожалуйста, исправьте его. – RealSkeptic

+0

Если вы говорите о недостающем ", это была опечатка – JCM

ответ

0

Кажется, что проблема SQL Server Parameter Sniffing. Первое, что нужно проверить, является планом выполнения хранимой procedure.You можно просмотреть с помощью следующего значка в SQL Server Management Studio:

Click on the icon marked in Red

Теперь подвергаясь проблемами здесь несколько методов для решения этой проблемы:

  1. Создание хранимых процедур SQL Server с помощью WITH RECOMPILE Option

  2. Используйте Подсказка SQL Server OPTION (RECOMPILE) Используйте подсказку SQL Server

  3. OPTION (OPTIMIZE FOR) Использование фиктивных переменных на SQL Server хранимая

  4. Процедуры Отключить SQL Server Параметр обнюхивая Instance

  5. Уровень Отключить параметр Принюхиваясь для запроса Конкретная SQL Server

Для осуществления и лучшего понимания вы можете обратиться по следующей ссылке: https://www.mssqltips.com/sqlservertip/3257/different-approaches-to-correct-sql-server-parameter-sniffing/

+0

Привет, ребята, спасибо вам за помощь, действительно, это был параметр sniffing, я модифицировал sp для использования фиктивных переменных, и он отлично работает, Спасибо. – JCM

+0

@JCM Вы можете выразить свою благодарность, повысив меня ... Это был мой первый ответ на Stack Overflow ... Just Kidding ... Вы можете поделиться своим точным решением, поскольку это может помочь другим –

+0

Я проголосовал за ваш ответ, Не знаю, почему это не показывает. – JCM

Смежные вопросы