Update: Leistungsprobleme auftreten erhöht die Sperraktivität Datenbank in SQL Server

Wichtig: Dieser Artikel wurde maschinell übersetzt und wird dann möglicherweise mithilfe des Community Translation Framework (CTF) von Mitgliedern unserer Microsoft Community nachbearbeitet. Weitere Informationen zu CTF finden Sie unter http://support.microsoft.com/gp/machine-translation-corrections/de.

Den englischen Originalartikel können Sie über folgenden Link abrufen: 2926217
Hinweis
Service Pack 1 für SQL Server 2014 und Service Pack 3 für SQL Server 2012 dieses Update enthalten, und Sie keinen hinzufügen alle Ablaufverfolgungsflags, um das Update zu aktivieren. Um das Update nach der Installation eines kumulativen Updates im Abschnitt "Lösung" zu aktivieren, müssen Sie zunächst Microsoft SQL Server-Startparameter Ablaufverfolgungsflag 1236 hinzu.
Problembeschreibung
Angenommen Sie, eine Instanz von Microsoft SQL Server 2014, SQL Server 2012, SQL Server 2008 oder SQL Server 2008 R2 auf einem Computer ausführen, der viele Prozessoren enthält. Wenn die Anzahl der Sperren (Typ = Datenbank) für eine bestimmte Datenbank einen bestimmten Schwellenwert überschreitet, treten die folgenden Leistungsprobleme:
  • Höhere Werte auftreten für LOCK_HASH Spinlock Count.

    Hinweis Siehe Abschnitt "Weitere Informationen" Informationen zu diesem Spinlock überwachen.
  • Abfragen oder Vorgänge, die Datenbanksperren erfordern, dauern ein lange abgeschlossen werden. Beispielsweise können die folgenden Leistung verzögert beachten:
    • SQL Server-Benutzernamen
    • Verknüpfte Serverabfragen
    • sp_reset_connection
    • Transaktionen
Hinweis Um die Sperren zu finden (Typ = Datenbank) in einer bestimmten Datenbank finden Sie im Abschnitt "Weitere Informationen". Der Schwellenwert je nach Umgebung unterschiedlich.
Lösung

Kumulatives Update-Informationen

Das Problem wurde erstmals in folgenden kumulativen Update von SQL Server behoben.

Kumulatives Update 13 für SQL Server 2008 R2 SP2

Kumulatives Update 17 für SQL Server 2008 SP3

Kumulative Update 1 für SQL Server 2014

Kumulative Update 9 für SQL Server 2012 SP1

Zu kumulativen Updates für SQL Server

Jedes neue kumulative Update für SQL Server enthält alle Hotfixes und alle Sicherheits-Updates, die im vorherigen kumulativen Update enthalten waren. Sehen Sie sich die neuesten kumulativen Updates für SQL Server an:

Hotfix-Informationen

Ein unterstützter Hotfix ist von Microsoft erhältlich. Dieser Hotfix soll nur der Behebung des Problems dienen, das in diesem Artikel beschrieben wird. Verwenden Sie diesen Hotfix nur auf Systemen, bei denen dieses spezielle Problem auftritt.

Wenn der Hotfix zum Download zur Verfügung steht, gibt es einen Abschnitt "Hotfix download available" ("Hotfixdownload verfügbar") im oberen Bereich dieses Knowledge Base-Artikels. Wenn dieser Abschnitt nicht angezeigt wird, senden Sie eine Anforderung an Microsoft Customer Service and Support, um den Hotfix zu erhalten.

Hinweis Falls weitere Probleme auftreten oder andere Schritte zur Problembehandlung erforderlich ist, müssen Sie möglicherweise eine separate Serviceanfrage erstellen. Die normalen Supportkosten gilt für zusätzliche Supportfragen und Probleme, die für diesen speziellen Hotfix nicht qualifizieren. Für eine vollständige Liste der Telefonnummern von Microsoft Customer Service and Support oder für Erstellung eine separate Serviceanfrage, fahren Sie auf der folgenden Microsoft-Website fort: Hinweis Formular "Hotfixdownload verfügbar" zeigt die Sprachen an, für die der Hotfix verfügbar ist. Wenn Ihre Sprache nicht angezeigt wird, ist dieser Hotfix für Ihre Sprache nicht verfügbar.

Status
Microsoft hat bestätigt, dass es sich um ein Problem bei den Microsoft-Produkten handelt, die im Abschnitt "Eigenschaften" aufgeführt sind.
Weitere Informationen
Wenn eine Anwendung eine Verbindung zu SQL Server herstellt, wird zuerst einen Datenbankkontext. Standardmäßig versucht die Verbindung mit einer Datenbank im Modus für SH Sperre. SH Datenbanksperre werden freigegeben, wenn die Verbindung beendet oder Datenbank während der Lebensdauer der Verbindung geändert wird. Wenn Sie viele aktive Verbindungen, dieselbe Datenbankkontext haben, haben Sie viele Sperren der Datenbank Ressourcentyp für die betreffende Datenbank.

Auf dem Computer mit 16 oder mehr CPUs, verwenden nur Tabellenobjekte ein partitionierten sperren. Allerdings sind die Datenbanksperren nicht partitioniert. Daher je größer die Anzahl der Sperren, desto länger dauert für SQL Server beim Abrufen einer Sperre für die Datenbank. Die meisten treten keine Probleme auf, die dadurch verursacht werden. Aber als die Zahl einen bestimmten Schwellenwert überschreitet, zusätzliche und muss die Sperre erhalten. Obwohl nur Mikrosekunden für jede zusätzliche Sperre kostet kann die Gesamtzeit schnell steigern Sperre Hash Buckets mit einem Spinlock geschützt sind. Dadurch werden zusätzliche CPU-Zyklen und wartet auf weitere Arbeitskräfte die Sperre erhalten.

Dieser Hotfix stellt Sperre partitionieren Ablaufverfolgungsflag T1236 beim Start aktiviert ist . Partitionieren die Datenbanksperre hält die Tiefe der Sperrliste in jeder lokalen Partition überschaubar. Diese Vorgehensweise wird eine Datenbanksperre Zugriffspfad erheblich optimiert.

LOCK_HASH Spinlock überwachen, können Sie die folgende Abfrage.
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
Weitere Informationen zu Diagnosemaßnahmen und Spinlock Konflikte für SQL Server finden Sie im folgenden Dokument:

Hinweis Obwohl dieses Dokument für SQL Server 2008 R2 geschrieben wird, sind die Informationen noch für SQL Server 2012.
Informationsquellen
Weitere Informationen zu Ablaufverfolgungsflags in SQL Server 2012 finden Sie im folgenden TechNet-Website:


Weitere Informationen zum ermitteln die Anzahl von Datenbanksperren Benutzer pro Datenbank verwenden Sie die folgende Abfrage zum Berechnen dieses Werts:
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


Warnung: Dieser Artikel wurde automatisch übersetzt.

Eigenschaften

Artikelnummer: 2926217 – Letzte Überarbeitung: 12/03/2015 05:58:00 – Revision: 9.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 KbMtde
Feedback