Процедура хранения в базе данных Azure Быстро работает в ASP.NET, но медленно в SSMS - PullRequest
0 голосов
/ 09 июля 2019

У меня есть база данных Azure с ценовым уровнем S0.Когда я запускаю хранимую процедуру, для отображения результата на моем веб-сайте ASP.NET и в SSMS требуется около 20 секунд.

Теперь я понижаю уровень цен до базового.Когда я запускаю ту же хранимую процедуру, она показывает время ожидания сообщения на веб-сайте ASP.NET.Когда я выполняю хранимую процедуру в SSMS, это занимает около 35 секунд.

Я анализирую свою базу данных.На вкладке фактического плана выполнения предлагается создать индекс.Я следую за предложением.Я создаю некоторый индекс в моей таблице.Результат на моем веб-сайте ASP.NET занимает около 1-2 секунд, чтобы показать результат.Но в SSMS время загрузки не меняется.Это также занимает 35 секунд.

Я уже закрываю SSMS и снова подключаю базу данных Azure, но это не меняет время загрузки.Моя SSMS - это SSMS 2016 (версия 13.0.16106.4)

Что происходит с моей базой данных Azure?

1 Ответ

0 голосов
/ 10 июля 2019

Сегодня, после того, как я попробую процедуру магазина снова, результат меня удивляет. Как в SSMS, так и на сайте ASP.NET занимают много времени. На веб-сайте ASP.NET покажи мне страницу времени ожидания. В SSMS для отображения данных требуется около 30-35 секунд. Я очень смущен с Azure. Итак, теперь моя проблема заключается в том, что эта процедура хранения медленно выбирает данные.

Итак, я проверяю процедуру моего магазина. Я изменяю формат своей процедуры сохранения, запускаю команду select с прямой записью значения, удаляю параметр и т. Д. В результате процедура сохранения теперь загружает данные только через 1-2 секунды.

Ниже я напишу краткую базу на своем опыте:

  1. Если ваша процедура магазина использует некоторый FORMAT в операторе выбора, и если ваш У хранимой процедуры есть параметр DATE, он будет очень медленным.

  2. Не используйте слишком много FORMAT в операторе выбора. Если хотите отформатируйте значение, сделайте это в ASP.NET или C #.

  3. Измените FORMAT на CONVERT, потому что по моему опыту, FORMAT make производительность снижается.

Это код, который я изменил, и чем он повышает производительность моей процедуры хранения:

До

FORMAT(b.tglTransaksi,'dd-MM-yy','en-US') AS [Tanggal],
FORMAT((a.upTime+'07:00'),'HH:mm:ss','en-US') AS [Waktu Input],
FORMAT(a.idMaster,'0000000#','en-US') AS [No. Ref],

* После 1026 *

CONVERT(CHAR(8),b.tglTransaksi,5) AS [Tanggal],
CONVERT(CHAR(8),a.upTime+'07:00',108) AS [Waktu Input],
RIGHT('00000000'+CAST(a.idMaster AS VARCHAR(8)),8) AS [No. Ref],

С этой командой SELECT @@VERSION; моя версия Azure Microsoft SQL Azure (окончательная первоначальная версия) - 12.0.2000.8 2 мая 2019 20:11:13 Copyright (C) 2019 Microsoft Corporation . Я использую базовый ценовой уровень (5 DTU).

Возможно, этот опыт может помочь другим.

...