MEMPERBAIKI: Masalah kinerja yang terjadi saat pangkalan data bukti kunci aktivitas meningkat di SQL Server

PENTING: Artikel ini diterjemahkan oleh perangkat lunak penerjemahan mesin Microsoft, dan mungkin telah diedit oleh Masyarakat Microsoft melalui teknologi CTF dan bukan oleh seorang penerjemah profesional. Microsoft menawarkan baik artikel yang diterjemahkan oleh manusia maupun artikel hasil editan terjemahan oleh mesin/komunitas, sehingga Anda dapat mengakses semua artikel di Sentra Pengetahuan yang kami miliki dalam berbagai bahasa. Namun artikel hasil editan mesin atau bahkan komunitas tidak selalu sempurna. Artikel ini dapat mengandung kesalahan dalam hal kosa kata, sintaksis atau tatabahasa, sangat mirip dengan penutur asing yang membuat kekeliruan ketika berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab atas ketidakakuratan, kesalahan atau kerugian apa pun akibat dari kekeliruan dalam penerjemahan isi atau penggunaannya oleh pelanggan kami. Microsoft juga akan senantiasa memperbarui perangkat lunak penerjemahan mesin dan alat untuk menyempurnakan Editan Hasil Penerjemahan Mesin.

Klik disini untuk melihat versi Inggris dari artikel ini: 2926217
Pemberitahuan
secara asali, Service Pack 1 untuk SQL Server 2014 dan Service Pack 3 untuk SQL Server 2012 menyertakan perbaikan ini dan Anda tidak harus menambahkan setiap bendera pelacakan untuk mengaktifkan perbaikan. Untuk mengaktifkan perbaikan setelah Anda menginstal salah satu pembaruan kumulatif di bagian pemecahan masalah, Anda harus memulai Microsoft SQL Server dengan menambahkan bendera pelacakan 1236 parameter permulaan.
Gejala
Misalnya Anda menjalankan contoh Microsoft SQL Server 2014, SQL Server 2012, SQL Server 2008, atau SQL Server 2008 R2 di komputer yang berisi banyak prosesor. Bila jumlah bukti kunci (tipe sumber daya = DATABASE) untuk pangkalan data khusus melebihi batas tertentu, Anda mengalami masalah kinerja berikut ini:
  • Nilai-nilai yang ditinggikan terjadi karena jumlah spinlock LOCK_HASH .

    Catatan Lihat bagian "Informasi selengkapnya" untuk informasi tentang cara untuk memantau spinlock ini.
  • Operasi yang memerlukan pangkalan data bukti kunci atau permintaan memakan waktu lama untuk diselesaikan. Misalnya, Anda mungkin melihat penundaan kinerja berikut ini:
    • Login SQL Server
    • Pertanyaan terkait server
    • sp_reset_connection
    • Transaksi
Catatan Untuk Telisik daftar bukti kunci (tipe sumber daya = pangkalan data) pada database tertentu, lihat bagian "Informasi selengkapnya". Nilai ambang berbeda-beda berdasarkan lingkungan.
Pemecahan masalah

Informasi pembaruan kumulatif

Masalah pertama kali diperbaiki dalam pemutakhiran kumulatif berikut ini dari SQL Server.

Pembaruan kumulatif 13 untuk SQL Server 2008 R2 SP2

17 pembaruan kumulatif untuk SQL Server 2008 SP3

Pemutakhiran kumulatif 1 untuk SQL Server 2014

Pembaruan kumulatif 9 untuk SQL Server 2012 SP1

Tentang pembaruan kumulatif untuk SQL Server

Setiap pembaruan kumulatif yang baru untuk SQL Server berisi semua hotfix dan semua perbaikan keamanan yang disertakan dengan pembaruan kumulatif sebelumnya. Periksa pembaruan kumulatif terbaru untuk SQL Server:

Informasi Hotfix

Tersedia hotfix yang didukung dari Microsoft. Namun, hotfix ini ditujukan untuk memperbaiki masalah yang dijelaskan di artikel ini. Menerapkan hotfix ini hanya ke sistem yang mengalami masalah khusus ini.

Apabila hotfix tersedia untuk diunduh, ada bagian "Tersedia Unduhan Hotfix" di bagian atas artikel Pangkalan Pengetahuan ini. Jika bagian ini tidak muncul, kirimkan permintaan ke layanan pelanggan Microsoft dan dukungan untuk mendapatkan hotfix.

Catatan Jika terjadi masalah tambahan atau apabila pemecahan masalah apa pun diperlukan, Anda mungkin harus membuat Layanan Pertanyaan secara terpisah. Biaya dukungan biasa akan berlaku untuk dukungan tambahan pertanyaan dan masalah yang tidak memenuhi syarat untuk hotfix ini. Untuk daftar lengkap nomor telepon layanan pelanggan Microsoft dan dukungan atau untuk membuat Layanan Pertanyaan terpisah, kunjungi situs web Microsoft berikut: Catatan Formulir "Tersedia Unduhan Hotfix" menampilkan bahasa hotfix tersedia. Jika Anda tidak melihat bahasa Anda, hal ini karena hotfix tidak tersedia untuk bahasa tersebut.

Status
Microsoft telah memastikan bahwa ini merupakan masalah di dalam produk Microsoft sebagaimana tercantum di bagian "Berlaku untuk".
Informasi lebih lanjut
Ketika aplikasi membuat sambungan ke SQL Server, pertama-tama menetapkan konteks pangkalan data. secara asali, sambungan akan mencoba mendapatkan bukti kunci pangkalan data dalam SH mode. bukti kunci SH-DATABASE akan meluncurkan ketika sambungan dihentikan atau database konteks diubah selama masa sambungan. Jika Anda memiliki banyak sambungan aktif yang menggunakan konteks pangkalan data yang sama, Anda dapat memiliki banyak bukti kunci DATABASE jenis sumber daya untuk pangkalan data yang spesifik.

Pada komputer yang memiliki 16 atau lebih CPU, hanya Daftar Tabel objek menggunakan penguncian terpartisi skema. Namun, pangkalan data bukti kunci tidak dibagi. Oleh karena itu, semakin besar jumlah pangkalan data bukti kunci, lama waktu yang dibutuhkan untuk SQL Server untuk mendapatkan bukti kunci di pangkalan data. Sebagian besar aplikasi tidak mengalami masalah yang disebabkan oleh desain ini. Tetapi sebagai nomor melebihi batas tertentu, upaya tambahan dan waktu diperlukan untuk mendapatkan bukti kunci. Meskipun biaya hanya mikro detik untuk setiap bukti kunci tambahan, total waktu cepat dapat meningkatkan karena bukti kunci hash ember dilindungi dengan menggunakan spinlock. Hal ini menyebabkan tambahan Lingkaran Berkelanjutan CPU dan menunggu untuk pekerja tambahan untuk mendapatkan bukti kunci.

Hotfix ini memperkenalkan pangkalan data bukti kunci partisi saat bendera pelacakan T1236 diaktifkan pada startup. Partisi data bukti kunci terus-menerus kedalaman bukti kunci daftar dikelola di setiap partisi lokal. Hal ini sangat mengoptimalkan garis jatuh berseri akses yang digunakan untuk mendapatkan bukti kunci pangkalan data .

Untuk memantau LOCK_HASH spinlock, Anda dapat menggunakan kueri berikut ini.
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
Untuk informasi selengkapnya tentang mendiagnosis dan menyelesaikan spinlock sanggahan di SQL Server, buka kumpulan dokumen berikut ini:

Catatan Meskipun kumpulan dokumen ini ditulis untuk SQL Server 2008 R2, informasi ini masih berlaku untuk SQL Server 2012.
Referensi
Untuk informasi selengkapnya tentang bendera pelacakan di SQL Server 2012, kunjungi situs web TechNet berikut:


Untuk informasi selengkapnya tentang cara menemukan nomor pangkalan data bukti kunci pengguna per database, menggunakan kueri berikut ini untuk menghitung nilai ini:
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


Peringatan: Artikel ini telah diterjemahkan secara otomatis

Properti

ID Artikel: 2926217 - Tinjauan Terakhir: 12/03/2015 15:51:00 - Revisi: 7.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 KbMtid
Tanggapan