Перейти до основного
Підтримка
Вхід
Вхід за допомогою облікового запису Microsoft
Увійдіть або створіть обліковий запис.
Вітаємо,
Виберіть інший обліковий запис.
У вас є кілька облікових записів
Виберіть обліковий запис, за допомогою якого потрібно ввійти.

Корпорація Майкрософт поширює виправлення Microsoft SQL Server 2008 R2 як один файл завантаження. Оскільки виправлення Сукупне, у кожному новому випуску містяться всі виправлення та всі виправлення системи безпеки, які були включені до попередньої версії SQL Server 2008 R2 Fix Release.

Ознаки

Розглянемо такий сценарій:

  • Програма запускає запит, який посилається на деякі тимчасові таблиці в 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

У цьому сценарії проблеми з продуктивністю у програмі.Примітка. Щоб отримати докладні відомості про те, як визначити цю проблему, ознайомтеся з розділом "Додаткові відомості".

Причина

Ця проблема виникає, тому що ті самі плани запитів вставляються в кеш в тому ж відро хеш для кожного користувача, коли текст запиту однаковий. Коли велика кількість планів буде скасовано до того самого ковша (також відомого як ланцюг гешування), час пошуку плану в кеші значно збільшується, а проблеми з продуктивністю можуть виникати. Крім того, потоки робочих потоків можуть виникати на серйозні розбрату, а інші потоки впливають на те, що ці робочі потоки не виконують відповідні можливості планувальника.

Спосіб вирішення

Примітка. Зараз доступна лише оновлення для SQL Server 2008 R2. Для SQL Server 2008 ознайомтеся з розділом "тимчасове рішення", щоб обійти цю проблему.

Відомості про Сукупне оновлення

SQL Server 2008 R2 Service Pack 1

Виправлення для цієї проблеми уперше випущено в сукупному оновленні 1 для SQL Server 2008 R2 Service Pack 1. Щоб отримати докладні відомості про отримання цього сукупного оновлення пакета, клацніть цей номер статті, щоб переглянути статтю в базі знань Microsoft Knowledge Base:

2544793 Сукупний пакет оновлень пакета 1 для SQL Server 2008 R2 Service Pack 1Примітка. Оскільки будує сукупну версію, кожен новий випуск Fix містить всі виправлення та виправлення безпеки, які були включені до попередньої версії SQL Server 2008 R2 Fix Release. Радимо застосувати найновішу версію виправлення, що містить це виправлення. Щоб отримати докладні відомості, клацніть номер цієї статті бази знань Microsoft:

2567616 Випущено пакет оновлень 1 для SQL Server 2008 R2, випущеній після випуску SQL Server 2008 R2 Service SP1

SQL Server 2008 R2

Виправлення для цієї проблеми уперше випущено в сукупному оновленні 7. Щоб отримати докладні відомості про отримання цього сукупного оновлення пакета для SQL Server 2008 R2, клацніть цей номер статті, щоб переглянути статтю в базі знань Microsoft Knowledge Base:

2507770 Сукупний пакет оновлень пакета 7 для SQL Server 2008 R2 Примітка. Оскільки будує сукупну версію, кожен новий випуск Fix містить всі виправлення та виправлення безпеки, які були включені до попередньої версії SQL Server 2008 R2 Fix Release. Радимо застосувати найновішу версію виправлення, що містить це виправлення. Щоб отримати докладні відомості, клацніть номер цієї статті бази знань Microsoft:

981356 Випущено SQL Server 2008 R2, випущеній після випуску SQL Server 2008 R2

Стан

Корпорація Майкрософт підтвердила, що це проблема в продуктах Microsoft, перелічених у розділі "застосовується до".

Інші способи вирішення

Щоб вирішити цю проблему в SQL Server 2008 і в SQL Server 2008 R2, перенесіть будь-які посилання на тимчасові таблиці всередину збереженої процедури.

Додаткові відомості

Щоб отримати докладні відомості про створення та змінення основ таблиці, перейдіть на такий веб-сайт MSDN:

Створення та змінення основ таблиціТвердження spdlock можна визначити в поданні динамічного керування sys.dm_os_spinlock_stats (DMV), який має високу частоту затвердження SOS_CACHESTORE spdlock. Щоб визначити цю проблему, виконайте запит приблизно такого вигляду:

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Якщо під час запуску цього запиту виконуються наведені нижче умови, можуть виникати проблеми з продуктивністю:

  • Цей запит створює той самий текст запиту.

  • Кількість для тієї самої bucketid велика.Примітка. Великий підрахунок для одних і тих самих bucketid зазвичай перевищує 1000.

  • Запити, що посилаються на тимчасові таблиці

Потрібна додаткова довідка?

Потрібні додаткові параметри?

Ознайомтеся з перевагами передплати, перегляньте навчальні курси, дізнайтесь, як захистити свій пристрій тощо.

Спільноти допомагають ставити запитання й відповідати на них, надавати відгуки та дізнаватися думки висококваліфікованих експертів.

Чи ця інформація була корисною?

Наскільки ви задоволені якістю мови?
Що вплинуло на ваші враження?
Натиснувши кнопку "Надіслати", ви надасте свій відгук для покращення продуктів і служб Microsoft. Ваш ІТ-адміністратор зможе збирати ці дані. Декларація про конфіденційність.

Дякуємо за відгук!

×