Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Kode sederhana ini menghasilkan kebuntuan. Program Contoh Sederhana disertakan

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Algoritma T-SQL untuk Mengkodekan Karakter HTML yang Tidak Aman sebagai Referensi Entitas Karakter HTML

  2. Bagaimana saya bisa mendapatkan 50% terbawah dari kueri pemilihan di SQL server?

  3. Tabel yang ditentukan pengguna dalam Memori, bukan di memori?

  4. Cara membuat server tertaut untuk SQL Server 2008 di mana kami memiliki database dari tahun 2000 dan 2005

  5. Cte sql rekursif dengan untuk level hierarki