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

Kondisi Balapan Antrian Proses SQL Server

Sunting:

Saya mencari di Google untuk memeriksa jawaban saya:"Memproses Antrian Data di SQL Server dengan READPAST dan UPDLOCK". Sudah bertahun-tahun sejak saya membaca dan bermain dengan solusi ini.

Asli:

Jika Anda menggunakan petunjuk READPAST, maka baris yang terkunci akan dilewati. Anda telah menggunakan ROWLOCK sehingga Anda harus menghindari eskalasi penguncian. Anda juga perlu UPDLOCK, seperti yang saya temukan.

Jadi proses 1 mengunci 20 baris, proses 2 akan mengambil 20 baris berikutnya, proses 3 mengambil baris 41 hingga 60, dst

Pembaruan juga dapat ditulis seperti ini:

UPDATE TOP (20)
    foo
SET
    ProcessorID = @PROCID
FROM
    OrderTable foo WITH (ROWLOCK, READPAST, UPDLOCK)
WHERE
    ProcessorID = 0

Segarkan, Okt 2011

Ini dapat dilakukan dengan lebih elegan dengan klausa OUTPUT jika Anda memerlukan SELECT dan UPDATE sekaligus.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Menjatuhkan Batasan di SQL Server (T-SQL)

  2. Internal dari Tujuh Jenis SQL Server – Bagian 1

  3. Simulasi CONNECT SEBELUMNYA dari Oracle di SQL Server

  4. Buat Fungsi Bernilai Tabel Sebaris (ITVF) di SQL Server

  5. GROUP BY untuk menggabungkan/menyatukan kolom