Menggunakan SQL Server sebagai Baris Gilir DB dengan Pemprosesan Berbilang Pelanggan Serentak
Keupayaan untuk memproses arahan dengan cekap daripada baris gilir secara serentak merentas berbilang pelanggan ialah penting apabila menggunakan SQL Server sebagai baris gilir pangkalan data. Untuk mencapai matlamat ini, konfigurasi dan pengoptimuman pertanyaan tertentu mesti dilaksanakan.
Satu pendekatan melibatkan penggunaan kunci pesimis dengan pertanyaan seperti:
select top 1 COMMAND from EXAMPLE_TABLE with (UPDLOCK, ROWLOCK) where PROCESSED=false;
Walau bagaimanapun, strategi ini boleh menyebabkan perbalahan di kalangan berbilang pekerja yang cuba mendapatkan kunci baris yang sama. Penyelesaian yang lebih berkesan ialah memanfaatkan klausa OUTPUT, yang diperkenalkan dalam SQL Server 2005.
Klausa OUTPUT membenarkan operasi dequeue atom. Ia memudahkan mencari baris yang sesuai, melangkau baris terkunci dan menandakan baris yang dipilih sebagai ditamatkan dalam satu operasi:
with CTE as ( SELECT TOP(1) COMMAND, PROCESSED FROM TABLE WITH (READPAST) WHERE PROCESSED = 0) UPDATE CTE SET PROCESSED = 1 OUTPUT INSERTED.*;
Untuk prestasi optimum, adalah penting untuk menstruktur jadual dengan kunci indeks berkelompok paling kiri pada Lajur DIPROSES. Jika ID wujud sebagai kunci utama, ia harus dialihkan ke lajur kedua dalam kunci berkelompok. Selain itu, adalah disyorkan untuk mengelak daripada menggunakan indeks tidak berkelompok di atas baris gilir.
CREATE CLUSTERED INDEX cdxTable on TABLE(PROCESSED, ID);
Selain itu, adalah penting untuk mengelak daripada menggunakan jadual untuk operasi mengintip atau dwiguna sebagai baris gilir dan kedai. Amalan ini boleh mengakibatkan kebuntuan dan daya tampung yang berkurangan.
Dengan mematuhi proses dequeue atom, menggunakan pembayang READPAST dan melaksanakan jadual berstruktur dengan betul, adalah mungkin untuk mencapai daya pemprosesan yang tinggi di bawah beban yang sangat serentak apabila menggunakan SQL Server sebagai baris gilir DB dengan berbilang pelanggan.
Atas ialah kandungan terperinci Bagaimanakah Pelayan SQL Boleh Mengendalikan Pemprosesan Baris Serentak Dengan Cekap Merentas Berbilang Pelanggan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!