|
|
Публикувано в 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 (преиздание)
|