Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Melaksanakan Operasi INSERT atau UPDATE dengan Cekap dalam Pelayan SQL Semasa Mencegah Kebuntuan?

Bagaimana untuk Melaksanakan Operasi INSERT atau UPDATE dengan Cekap dalam Pelayan SQL Semasa Mencegah Kebuntuan?

Mary-Kate Olsen
Lepaskan: 2025-01-22 16:32:09
asal
1019 orang telah melayarinya

How to Efficiently Perform INSERT or UPDATE Operations in SQL Server While Preventing Deadlocks?

Mengoptimumkan Operasi INSERT dan UPDATE dalam SQL Server untuk Mengelakkan Kebuntuan

Mengurus operasi serentak INSERT dan UPDATE pada jadual seperti MyTable (KEY, datafield1, datafield2...) selalunya memerlukan pendekatan "pertanyaan langsung" – mengemas kini baris sedia ada atau memasukkan baris baharu jika tidak. wujud. Prestasi dan integriti data adalah kebimbangan utama.

Kaedah "jika wujud" yang naif adalah tidak cekap dan terdedah kepada pelanggaran kunci utama dalam persekitaran berbilang benang. Untuk menjamin ketekalan data dan mengelakkan kebuntuan, strategi berasaskan transaksi adalah lebih baik:

Kaedah 1:

<code class="language-sql">BEGIN TRANSACTION
IF EXISTS (SELECT * FROM table WITH (UPDLOCK,SERIALIZABLE) WHERE key = @key)
BEGIN
      UPDATE table SET ...
      WHERE key = @key
END
ELSE
BEGIN
      INSERT INTO table (key, ...)
      VALUES (@key, ...)
END
COMMIT TRANSACTION</code>
Salin selepas log masuk

Kaedah 2:

<code class="language-sql">BEGIN TRANSACTION
      UPDATE table WITH (SERIALIZABLE) SET ...
      WHERE key = @key

      IF @@ROWCOUNT = 0
      BEGIN
            INSERT INTO table (key, ...) VALUES (@key,...)
      END

COMMIT TRANSACTION</code>
Salin selepas log masuk

Kedua-dua kaedah menggunakan SERIALIZABLE tahap pengasingan untuk menghapuskan kebuntuan dan mengekalkan integriti data. Ini memastikan prestasi optimum, terutamanya apabila beberapa utas secara serentak mencuba operasi INSERT atau UPDATE. Pilihan antara dua kaedah mungkin bergantung pada ciri prestasi khusus dan pilihan gaya pengekodan.

Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Operasi INSERT atau UPDATE dengan Cekap dalam Pelayan SQL Semasa Mencegah Kebuntuan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan