TETAPKAN PRIORITAS_KEBUNTUAN (Transact-SQL)

Berlaku untuk:Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics (hanya kumpulan SQL tanpa server)

Menentukan kepentingan relatif bahwa sesi saat ini terus diproses jika di-deadlock dengan sesi lain.

Konvensi sintaks transact-SQL

Sintaksis

SET DEADLOCK_PRIORITY { LOW | NORMAL | HIGH | <numeric-priority> | @deadlock_var | @deadlock_intvar }
  
<numeric-priority> ::= { -10 | -9 | -8 | ... | 0 | ... | 8 | 9 | 10 }

Catatan

Untuk melihat sintaks Transact-SQL untuk SQL Server 2014 (12.x) dan versi yang lebih lama, lihat Dokumentasi versi sebelumnya.

Argumen

 Rendah

Menentukan bahwa sesi saat ini akan menjadi korban kebuntuan jika terlibat dalam kebuntuan dan sesi lain yang terlibat dalam rantai kebuntuan memiliki prioritas kebuntuan yang diatur ke NORMAL atau TINGGI atau ke nilai bilangan bulat yang lebih besar dari -5. Sesi saat ini tidak akan menjadi korban kebuntuan jika sesi lain memiliki prioritas kebuntuan yang diatur ke nilai bilangan bulat kurang dari -5. Ini juga menentukan bahwa sesi saat ini memenuhi syarat untuk menjadi korban kebuntuan jika sesi lain telah mengatur prioritas kebuntuan yang diatur ke RENDAH atau ke nilai bilangan bulat yang sama dengan -5.

NORMAL

Menentukan bahwa sesi saat ini akan menjadi korban kebuntuan jika sesi lain yang terlibat dalam rantai kebuntuan memiliki prioritas kebuntuan yang diatur ke TINGGI atau ke nilai bilangan bulat yang lebih besar dari 0, tetapi tidak akan menjadi korban kebuntuan jika sesi lain memiliki prioritas kebuntuan yang diatur ke RENDAH atau ke nilai bilangan bulat kurang dari 0. Ini juga menentukan bahwa sesi saat ini memenuhi syarat untuk menjadi korban kebuntuan jika sesi lain telah menetapkan prioritas kebuntuan ke NORMAL atau ke nilai bilangan bulat yang sama dengan 0. NORMAL adalah prioritas default.

TINGGI

Menentukan bahwa sesi saat ini akan menjadi korban kebuntuan jika sesi lain yang terlibat dalam rantai kebuntuan memiliki prioritas kebuntuan yang diatur ke nilai bilangan bulat yang lebih besar dari 5, atau memenuhi syarat untuk menjadi korban kebuntuan jika sesi lain juga telah menetapkan prioritas kebuntuan ke TINGGI atau ke nilai bilangan bulat yang sama dengan 5.

<prioritas numerik>

Adalah rentang nilai bilangan bulat (-10 hingga 10) untuk memberikan 21 tingkat prioritas kebuntuan. Ini menentukan bahwa sesi saat ini akan menjadi korban kebuntuan jika sesi lain dalam rantai kebuntuan berjalan pada nilai prioritas kebuntuan yang lebih tinggi, tetapi tidak akan menjadi korban kebuntuan jika sesi lain berjalan pada nilai prioritas kebuntuan yang lebih rendah dari nilai sesi saat ini. Ini juga menentukan bahwa sesi saat ini memenuhi syarat untuk menjadi korban kebuntuan jika sesi lain berjalan dengan nilai prioritas kebuntuan yang sama dengan sesi saat ini. Peta RENDAH ke -5, NORMAL ke 0, dan TINGGI hingga 5.

@deadlock_var

Adalah variabel karakter yang menentukan prioritas kebuntuan. Variabel harus diatur ke nilai 'LOW', 'NORMAL' atau 'HIGH'. Variabel harus cukup besar untuk menahan seluruh string.

@deadlock_intvar

Adalah variabel bilangan bulat yang menentukan prioritas kebuntuan. Variabel harus diatur ke nilai bilangan bulat dalam rentang (-10 hingga 10).

Keterangan

Kebuntuan muncul ketika dua sesi keduanya menunggu akses ke sumber daya yang dikunci oleh yang lain. Ketika instans SQL Server mendeteksi bahwa dua sesi mengalami kebuntuan, instans tersebut menyelesaikan kebuntuan dengan memilih salah satu sesi sebagai korban kebuntuan. Transaksi korban saat ini digulung balik dan pesan kesalahan kebuntuan 1205 dikembalikan ke klien. Ini melepaskan semua kunci yang dipegang oleh sesi itu, memungkinkan sesi lain untuk melanjutkan.

Sesi mana yang dipilih sebagai korban kebuntuan tergantung pada prioritas kebuntuan setiap sesi:

  • Jika kedua sesi memiliki prioritas kebuntuan yang sama, instans SQL Server memilih sesi yang lebih murah untuk digulung balik sebagai korban kebuntuan. Misalnya, jika kedua sesi telah mengatur prioritas kebuntuannya ke TINGGI, instans akan memilih sebagai korban sesi yang diperkirakan lebih murah untuk digulung balik. Biaya ditentukan dengan membandingkan jumlah byte log yang ditulis ke titik tersebut dalam setiap transaksi. (Anda dapat melihat nilai ini sebagai "Log Digunakan" dalam grafik kebuntuan).

  • Jika sesi memiliki prioritas kebuntuan yang berbeda, sesi dengan prioritas kebuntuan terendah dipilih sebagai korban kebuntuan.

SET DEADLOCK_PRIORITY diatur pada waktu eksekusi atau eksekusi dan bukan pada waktu penguraian.

Sintaks ini tidak didukung dalam kumpulan SQL khusus di Azure Synapse Analytics. Ini didukung di kumpulan SQL tanpa server di Azure Synapse Analytics.

Izin

Memerlukan keanggotaan dalam peran publik .

Contoh

Contoh berikut menggunakan variabel untuk mengatur prioritas kebuntuan ke LOW.

DECLARE @deadlock_var NCHAR(3);
SET @deadlock_var = N'LOW';
  
SET DEADLOCK_PRIORITY @deadlock_var;
GO

Contoh berikut menetapkan prioritas kebuntuan ke NORMAL.

SET DEADLOCK_PRIORITY NORMAL;
GO

Langkah berikutnya