ВИПРАВЛЕННЯ: Проблеми із продуктивністю виникають при бази даних блокування справи, що збільшується в SQL Server

ВАЖЛИВО! Ця стаття перекладена засобами машинного перекладу Microsoft. Статтю можна редагувати в середовищі Community Translation Framework (CTF). Щоб якомога швидше перекласти всі статті у своїй базі знань різними мовами, компанія Microsoft не лише звертається до професійних перекладачів, але й вдається до машинного перекладу, який потім редагується спільнотою. Такі статті можуть містити лексичні, синтаксичні та граматичні помилки. Microsoft не несе відповідальності за будь-які неточності, помилки або збитки, до яких може призвести неправильний переклад статей або їх використання. Докладніше про CTF див. на веб-сторінці http://support.microsoft.com/gp/machine-translation-corrections/uk-ua.

Клацніть тут, щоб переглянути цю статтю англійською мовою: 2926217
Примітка
За промовчанням пакет оновлень 1 для SQL Server 2014, містить виправлення, і не потрібно додати будь-які позначки трасування, щоб активувати виправлення. Для активації виправлення після інсталювання одного сукупний пакет оновлень, у розділі "вирішення", слід запустити Microsoft SQL Server, додавши прапор трасування 1236 параметрів запуску.
Ознаки
Припустімо, що запуску служб Microsoft SQL Server-2014 року, SQL Server 2012, SQL Server 2008 або SQL Server 2008 R2 на комп'ютері, який містить багато процесорів. Якщо кількість блокувань (тип ресурсу = база даних), для певної бази даних, перевищує об'єму, виникають такі проблеми:
  • Значення в режимі адміністратора, що виникають LOCK_HASH блокування з очікуванням кількість.

    Примітка. Див. розділ "Додаткові відомості", щоб отримати відомості про відстеження цього з блокування з очікуванням.
  • Запити або операції, які потребують бази даних, locks, зайняти багато часу буде завершено. Наприклад, можна помітити такі затримки продуктивність:
    • Вхід з SQL Server
    • Зв'язаний сервер запитів
    • sp_reset_connection
    • Операції
Примітка Щоб знайти список locks (тип ресурсу = база даних) для певного бази даних, див. розділ "Додаткові відомості". Граничне значення, що залежить від середовища.
Розв'язанн

Відомості про сукупний пакет оновлень

Проблему, спочатку було усунуто у такий сукупний пакет оновлень із сервера SQL Server.

Сукупний пакет оновлень, 13 для SQL Server 2008 R2 пакетом оновлень SP2

Сукупний пакет оновлень, 17 для SQL Server 2008 SP3

Сукупний пакет оновлень 1, для SQL Server 2014 року

Сукупний пакет оновлень, 9 для SQL Server 2012 з пакетом оновлень 1

Про сукупний пакет оновлень для SQL Server

Нові накопичувальне оновлення для SQL Server, містить усі виправлення, і усі виправлення безпеки, які входять до складу попередній сукупний пакет оновлень. Перевірте останній сукупний пакет оновлень для SQL Server:

Відомості про виправлення

Виправлення доступне від корпорації Майкрософт. Проте, це виправлення призначене тільки для вирішення проблеми, описаної в цій статті. Застосовуйте це виправлення лише до системний інтегратор, які зазнають цієї конкретної проблеми.

Якщо виправлення доступне для завантаження, у верхній частині цієї статті бази знань буде розділ "Завантажити доступні виправлення ". Якщо цей розділ не відображається, надішліть запит до клієнтської служби та підтримки Microsoft, щоб отримати виправлення.

Примітка Якщо виникають додаткові проблеми, або якщо будь-які виправлення, можливо, доведеться створити окремий запит на обслуговування. Застосунок-служба технічної підтримки буде застосовуватися додаткові питання і проблеми, які не пов'язані з цим виправленням. Для повного списку телефонів представник служби підтримки клієнтів користувачів і технічної підтримки, або щоб створити окремий запит на обслуговування відвідайте веб-сайт корпорації Microsoft: Примітка У формі "Завантажити доступні виправлення" відображаються мови, для яких доступне виправлення. Якщо потрібна мова не відображається, то виправлення недоступне для даної мови.

Стан
корпорація Майкрософт підтвердила існування цієї неполадки у продуктах Майкрософт, перелічених у розділі "Застосовується до".
Додаткові відомості
Після того, як програма, забезпечує підключення до SQL Server, спочатку визначить контексті бази даних. За промовчанням підключення спробує отримати блокування бази даних в SH режимі. Блокування SH-база даних буде випущено під Вільний час підключення зупинено або бази даних контекст змінено під Вільний час роботи підключення. За наявності багато активних підключення, яких використовується в контексті одного бази даних, ви можете мати багато locks типу бази даних ресурсів для цього підключення бази.

На комп'ютері, з 16 або кілька процесорів лише в таблиці об'єктів, сценарій виконання схеми розділами блокування. Однак, locks-бази даних не розділити. Таким чином, що блокує більше кількість баз даних, тим більше часу потрібно для отримання блокування бази даних SQL Server. Більшість програм не мають будь-які проблеми, які виникають через цей проект. Але як число, перевищує об'єму, додаткових дій і Вільний час потрібно отримати блокування. Хоча витрати тільки micro секунд, для кожного додаткового блокування, загальний Вільний час можна збільшити швидко, тому що блокування геш-набори захист комп'ютера за допомогою з блокування з очікуванням. Це призводить до додаткового процесора і чекає додаткові робочі отримати блокування.

Це виправлення вносить, база даних блокування розбивання на розділи при прапор трасування T1236 під Вільний час запуску. Розбивання на розділи блокування бази даних продовжує глибини списку блокування невеликі в кожному локального розділу. Це значно оптимізує, доступ до шлях, який використовується для отримання блокування бази даних .

Відстеження LOCK_HASH на блокування з очікуванням, використовується такий запит.
SET NOCOUNT ONCREATE TABLE #spinlock_stats([CaptureTime] datetime,[name] nvarchar(512),[collisions] bigint,[spins] bigint,[spins_per_collision] real,[sleep_time] bigint,[backoffs] int)DECLARE @counter int = 1WHILE @counter < 100      BEGIN            INSERT INTO #spinlock_stats SELECT GETDATE() as "CaptureTime" , * FROM sys.dm_os_spinlock_stats WHERE [name] = 'LOCK_HASH'            WAITFOR DELAY '00:00:05'            SET @counter +=1      ENDSELECT * FROM #spinlock_stats ORDER BY [CaptureTime]DROP TABLE #spinlock_stats
Щоб отримати додаткові відомості про діагностування та вирішення блокування з очікуванням твердження на SQL Server, перейдіть на такий документ.

Примітка Хоча у цьому документі, написана для SQL Server 2008 R2, інформацію, застосовуються до SQL Server 2012.
Посилання
Щоб отримати додаткові відомості про позначки трасування, SQL Server 2012, перейдіть на веб-сайті TechNet.


Щоб отримати додаткові відомості про те, як знайти кількість баз даних locks користувача на базі даних слід використовувати такий запит для обчислення цього значення:
select  Resource_database_id, resource_type, request_mode, request_status,  count (*) 'LockCount' from sys.dm_tran_locks group by  Resource_database_id, resource_type, request_mode, request_status


Попередження. Цю статтю переведено автоматично

Властивості

Ідентифікатор статті: 2926217 – останній перегляд: 07/29/2015 18:37:00 – виправлення: 6.0

Microsoft SQL Server 2012 Enterprise, Microsoft SQL Server 2012 Developer, Microsoft SQL Server 2012 Standard, Microsoft SQL Server 2012 Express, Microsoft SQL Server 2012 Web, Microsoft SQL Server 2012 Service Pack 1, Microsoft SQL Server 2014 Developer, Microsoft SQL Server 2014 Enterprise, Microsoft SQL Server 2014 Standard, Microsoft SQL Server 2008 Service Pack 3, Microsoft SQL Server 2008 R2 Service Pack 2

  • kbqfe kbfix kbsurveynew kbexpertiseadvanced kbautohotfix kbhotfixserver kbmt KB2926217 KbMtuk
Зворотний зв’язок