KB2526959 – корекция: проблем с производителността на приложения, когато заявката препраща към временните таблици, които са създадени в сесия в SQL Server 2008 и SQL Server 2008 R2

Microsoft разпространява Microsoft SQL Server 2008 R2 поправя като един файл за изтегляне. Тъй като корекциите са кумулативни, всяка нова версия съдържа всички актуални корекции и всички корекции на защитата, които са били включени при предишното издание на SQL Server 2008 R2.

Симптоми

Обмислете следния сценарий:

  • Приложението изпълнява заявка, която препраща към някои временни таблици в Microsoft SQL Server 2008 и в Microsoft SQL Server 2008 R2. Временните таблици се създават в сесия вместо в съхранена процедура.

  • Планът на заявката е кеширан.

  • Много потребители изпълняват една и съща заявка в силно едновременно обкръжение. Например много потребители използват приложение, което изпълнява следната заявка:

    create table #x (col1 int) go insert into #x values (1) go select * from #x where col1 = 1 go

В този случай приложението срещне проблемите с производителността.Забележка За повече информация как да идентифицирате този проблем, вижте раздела "повече информация".

Причина

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

Решение

Забележка В момента се предлага само актуализацията за SQL Server 2008 R2. За SQL Server 2008 вижте секцията "заобиколно решение", за да заобиколите този проблем.

Информация за сборна актуализация

SQL Server 2008 R2 сервизен пакет 1

Корекцията за този проблем е издадена за първи път в сборна актуализация 1 за SQL Server 2008 R2 Service Pack 1. За повече информация как да получите тази сборна актуализация, щракнете върху следния номер на статия, за да видите статията в базата знания на Microsoft:

2544793 Кумулативна актуализация на пакета 1 за SQL Server 2008 R2 Service Pack 1Забележка Тъй като компилациите са кумулативни, всяко ново издание за корекция съдържа всички поправки и всички корекции на защитата, които са били включени при предишното издание на SQL Server 2008 R2. Препоръчваме ви да обмислите прилагането на най-новото съобщение за корекция, което съдържа тази спешна корекция. За допълнителна информация щракнете върху следния номер на статия, за да прегледате статията в базата знания на Microsoft:

2567616 SQL Server 2008 R2 изгражда, които са издадени след SQL Server 2008 R2 Service Pack 1 е издадена

SQL Server 2008 R2

Корекцията за този проблем е издадена за първи път в сборна актуализация 7. За повече информация как да получите тази кумулативна актуализация на пакета за SQL Server 2008 R2, щракнете върху следния номер на статия, за да видите статията в базата знания на Microsoft:

2507770 Кумулативна актуализация на пакета 7 за SQL Server 2008 R2 Забележка Тъй като компилациите са кумулативни, всяко ново издание за корекция съдържа всички поправки и всички корекции на защитата, които са били включени при предишното издание на SQL Server 2008 R2. Препоръчваме ви да обмислите прилагането на най-новото съобщение за корекция, което съдържа тази спешна корекция. За допълнителна информация щракнете върху следния номер на статия, за да прегледате статията в базата знания на Microsoft:

981356 SQL Server 2008 R2, които са издадени след издаването на SQL Server 2008 R2

Състоянието

Microsoft потвърди, че това е проблем в продуктите на Microsoft, които са посочени в секцията "важи за".

Заобиколно решение

За да заобиколите този проблем в SQL Server 2008 и в SQL Server 2008 R2, пренесете препратките към временните таблици във вътрешността на съхранените процедури.

Повече информация

За повече информация как да създадете и промените основите на таблицата, посетете следния уеб сайт на MSDN:

Създаване и модифициране на основи на таблицаSpinlockното съдържание може да бъде идентифицирано от изгледа за динамично управление на sys.dm_os_spinlock_stats (DMV), който има висок процент на задоволство в SOS_CACHESTORE Spinlock. За да идентифицирате този проблем, изпълнете заявка, подобна на следната:

select cp.bucketid, count(cp.bucketid) as BucketCount, st.text from sys.dm_exec_cached_plans cp cross apply sys.dm_exec_sql_text(cp.plan_handle) as st group by cp.bucketid, st.text having count(cp.bucketid) >1 order by BucketCount descАко следните условия са TRUE, когато изпълнявате тази заявка, е възможно да се сблъскате с проблеми с производителността:

  • Тази заявка генерира един и същ текст на заявката.

  • Броят за един и същ bucketid е голям.Забележка Голям брой за един и същ bucketid обикновено е над 1000.

  • Препратки към временните таблици

Нуждаете се от още помощ?

Разширете уменията си
Преглед на обучението
Получавайте първи новите функции
Присъединете се към Microsoft приобщени

Беше ли полезна тази информация?

Благодарим ви за обратната връзка!

Благодарим ви за вашата обратна връзка. Изглежда, че ще бъде полезно да ви свържем с един от нашите агенти по поддръжката на Office.

×