Dua pernyataan Anda memperoleh kunci baris dalam urutan yang berbeda. Itu kasus klasik untuk kebuntuan. Anda dapat memperbaikinya dengan memastikan bahwa urutan kunci yang diambil selalu dalam beberapa urutan global (misalnya, diurutkan berdasarkan ID). Anda mungkin harus menggabungkan dua UPDATE
pernyataan menjadi satu dan mengurutkan daftar ID pada klien sebelum mengirimkannya ke SQL Server. Untuk banyak UPDATE
typical rencana ini benar-benar berfungsi dengan baik (meskipun tidak dijamin).
Atau, Anda menambahkan logika coba lagi jika Anda mendeteksi kebuntuan (SqlException.Number == 1205
). Ini lebih elegan karena tidak memerlukan perubahan kode yang lebih dalam. Tetapi kebuntuan memiliki implikasi kinerja, jadi lakukan ini hanya untuk tingkat kebuntuan yang rendah.
Jika pemrosesan paralel Anda menghasilkan banyak pembaruan, Anda dapat INSERT
semua pembaruan itu ke dalam tabel temp (yang dapat dilakukan secara bersamaan) dan ketika Anda selesai, Anda menjalankan satu UPDATE
besar yang menyalin semua catatan pembaruan individu ke tabel utama. Anda cukup mengubah sumber bergabung dalam kueri sampel Anda.