Dalam senario di mana jadual berfungsi sebagai baris gilir, adalah penting untuk mengkonfigurasinya dan menanyakannya dengan cara yang membolehkan berbilang pelanggan memproses item baris gilir secara serentak.
Apabila menggunakan baris pesimis mengunci dengan UPDLOCK dan ROWLOCK, hanya seorang pekerja boleh memperoleh kunci dan memproses satu baris. Untuk menyelesaikan isu ini dan membolehkan pemprosesan serentak, pertimbangkan pendekatan berikut:
Pelaksanaan Baris Menggunakan Klausa OUTPUT
Klausa OUTPUT menyediakan mekanisme untuk mengambil semula dan mengubah suai baris secara atom . Begini cara untuk melaksanakan baris gilir menggunakan klausa OUTPUT:
with CTE as ( SELECT TOP(1) COMMAND, PROCESSED FROM TABLE WITH (READPAST) WHERE PROCESSED = 0) UPDATE CTE SET PROCESSED = 1 OUTPUT INSERTED.*;
Pertanyaan ini melaksanakan langkah berikut secara atom:
Pengoptimuman Indeks Berkelompok
Untuk mengoptimumkan prestasi selanjutnya, adalah penting untuk mencipta indeks berkelompok pada lajur DIPROSES. Ini memastikan data disimpan mengikut tertib pemprosesan.
CREATE CLUSTERED INDEX cdxTable on TABLE(PROCESSED, ID);
Elakkan Pertanyaan Bukan Standard
Untuk pemprosesan optimum, adalah penting untuk mengelak daripada membuat pertanyaan jadual gilir menggunakan kaedah selain daripada operasi dequeue yang diterangkan di atas. Percubaan untuk mengintip atau menggunakan jadual untuk tujuan tambahan boleh menyebabkan kebuntuan dan kemerosotan prestasi.
Atas ialah kandungan terperinci Bagaimanakah Pelayan SQL Boleh Digunakan sebagai Baris Serentak untuk Berbilang Pelanggan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!