SET NOKAUN HIDUP dalam SQL Server: Tukar ganti
Sama ada hendak menggunakan "SET NOCOUNT ON" dalam SQL Server sentiasa menjadi topik perdebatan di kalangan pembangun. Sesetengah melihatnya sebagai faedah prestasi, sementara yang lain memberi amaran tentang potensi kelemahannya.
Pengetahuan latar belakang
Arahan "SET NOCOUNT ON" menyekat mesej "bilangan baris yang terjejas xx baris" yang muncul selepas operasi DML. Mesej ini ialah set hasil yang mesti diproses oleh pelanggan, yang memerlukan overhed yang remeh tetapi boleh diukur. Dalam senario yang melibatkan pencetus atau prosedur tersimpan, berbilang mesej "baris terjejas xx baris" boleh menyebabkan ralat dengan beberapa ORM, termasuk MS Access dan JPA.
Penyokong SET NOCOUNT ON
Kebijaksanaan konvensional menyatakan bahawa "SET NOCOUNT ON" harus digunakan untuk meningkatkan prestasi. Hujahnya ialah kerana mesej "bilangan baris yang terjejas xx baris" tidak diperlukan untuk kebanyakan aplikasi, menekannya boleh mengurangkan trafik rangkaian dan masa pemprosesan. Selain itu, dipercayai bahawa SET NOCOUNT ON menghalang ralat dalam senario tertentu di mana pelanggan menjangkakan bilangan baris tertentu.
Lawan SET NOCOUNT ON
Penentang "SET NOCOUNT ON" berhujah bahawa ia mungkin menghalang operasi pangkalan data lanjutan. Contohnya, menyekat maklumat kiraan baris mungkin mengganggu:
Selain itu, SET NOCOUNT ON boleh menyebabkan tingkah laku yang tidak dijangka dengan beberapa rangka kerja pelanggan (seperti SqlDataAdapter dan JPA ADO.NET). Rangka kerja ini mengharapkan maklumat kiraan baris, dan ketiadaannya boleh menyebabkan ralat atau hasil yang salah.
Impak prestasi
Walaupun lazimnya dipercayai bahawa SET NOCOUNT ON meningkatkan prestasi, data menunjukkan sebaliknya. Dalam protokol TDS, SET NOCOUNT ON hanya menyimpan 9 bait bagi setiap pertanyaan, manakala arahan itu sendiri ialah 14 bait. Mesej "bilangan baris yang terjejas xx baris" bukanlah paket rangkaian yang berasingan, tetapi struktur terbenam yang kecil. Oleh itu, peningkatan prestasi adalah minimum.
Kesimpulan
Sama ada mahu menggunakan "SET NOCOUNT ON" atau tidak bergantung pada keperluan dan pertimbangan tertentu. Ia boleh berfaedah dalam senario di mana prestasi adalah kritikal atau di mana rangka kerja klien tidak bergantung pada maklumat kiraan baris. Walau bagaimanapun, sebelum melaksanakan SET NOCOUNT ON secara global, pastikan anda mempertimbangkan potensi kelemahannya.
Atas ialah kandungan terperinci Sekiranya Anda Menggunakan SET NOCOUNT ON dalam SQL Server?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!