Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 22757|Отговор: 0

[Източник] Решава проблема, че съхранените процедури се изпълняват бързо, но програмните извиквания са бавни

[Копирай линк]
Публикувано в 21.05.2018 г. 13:55:48 ч. | | |
През последните два дни се сблъсках с проблем, който е доста разочароващ – в анализатора на заявки SQL Server 2012 се изпълнява съхранена процедура от около 120 реда,
Скоростта е много идеална и около 500 записа могат да бъдат филтрирани и заснети за по-малко от 1 секунда.
Въпреки това, когато се извика в програмния код на C#, се подканва таймаутът на връзката. Настройте CommandTimeout на 300 и ще отнеме около 3 минути за показване.
Проверих кода няколко пъти и не открих грешки. Проблемът остава.

Анализ на причините:
1. Защото скоростта на изпълнение в анализатора на заявки е висока и количеството данни не е голямо.
2. Само обаждането в програмата е бавна.
3. Задайте параметъра CommandTimeout и резултатът може да се покаже, но това ще отнеме много време.

В обобщение, предварително се заключава, че проблемът се крие в C# кода. Но след инспекцията нямаше никаква полза.

Проверете тази информация в Baidu.
Накрая намерих подобна информационна публикация във форума на CSDN. Един от потребителите в интернет каза в отговора: "Възможно е планът за изпълнение да е изтекъл",
Наистина ме събуди в съня ми.

Изпълнете веднага на анализатора на заявки:

Тествах програмата отново, този път най-накрая проработи. Скоростта е много задоволителна.

Анализ на причините:
Тъй като съхранените процедури са предварително компилирани, план за изпълнение се генерира още при първото изпълнение и този план се използва при следващи изпълнения (освен ако не е посочено съхранената процедура за прекомпилиране), вместо да се генерира план за изпълнение всеки път, когато се изпълнява.
Когато структурата на обекта, участваща в съхранената процедура, бъде коригирана или свързаните данни се променят значително, което може да направи оригиналния план неподходящ за текущото статукво (изтичане на плана за изпълнение), съхранената процедура трябва да бъде прекомпилирана.

Накрая, прикачете кода за съхранената процедура:







Предишен:Споделете един източник на промоционална страница на приложението, адаптивен, много красив и щедър!
Следващ:C# Open Source Framework (преиздание)
Отричане:
Целият софтуер, програмни материали или статии, публикувани от Code Farmer Network, са само за учебни и изследователски цели; Горното съдържание не трябва да се използва за търговски или незаконни цели, в противен случай потребителите ще понесат всички последствия. Информацията на този сайт идва от интернет, а споровете за авторски права нямат нищо общо с този сайт. Трябва напълно да изтриете горното съдържание от компютъра си в рамките на 24 часа след изтеглянето. Ако ви харесва програмата, моля, подкрепете оригинален софтуер, купете регистрация и получете по-добри услуги. Ако има нарушение, моля, свържете се с нас по имейл.

Mail To:help@itsvse.com