Bagaimana penyatuan ADO.Net berfungsi?

Sambungan ke pangkalan data adalah operasi intensif sumber yang biasanya merangkumi beberapa langkah. Saluran komunikasi antara aplikasi dan pangkalan data harus dibuat sebelum jabat tangan awal dengan pelayan pangkalan data dapat terjadi. Saluran ini boleh menjadi soket atau paip bernama. Setelah sambungan ini dibuat dan jabat tangan awal dengan pelayan berjaya, metadata sambungan (maklumat rentetan sambungan untuk menyambung ke pangkalan data) diuraikan dan sambungan ke pangkalan data disahkan oleh pelayan pangkalan data.

ADO.Net telah lama menjadi salah satu kerangka akses data yang paling popular. Penyatuan penyambungan adalah ciri dalam ADO.Net yang membolehkan anda meningkatkan prestasi akses data dalam aplikasi anda.

Apakah penyatuan sambungan?

Penyatuan penyambungan adalah strategi yang digunakan untuk meminimumkan kos yang berkaitan dengan membuka dan menutup sambungan ke pangkalan data. Ini membolehkan anda menggunakan semula sambungan daripada membuat sambungan baru ke pangkalan data apabila diminta.

Kumpulan sambungan mengandungi koleksi sambungan terbiar, terbuka dan boleh digunakan semula. Pooler menguruskan kumpulan sambungan dan mengekalkan satu set sambungan aktif untuk setiap metadata sambungan yang diberikan, maklumat konfigurasi sambungan.

Perhatikan bahawa anda boleh mempunyai banyak kumpulan sambungan di domain aplikasi yang sama. Kumpulan sambungan dibuat per rentetan sambungan unik yang anda gunakan untuk menyambung ke pangkalan data dan bukan per pangkalan data. Jadi, pada kali pertama anda menyambung ke pangkalan data dengan rentetan sambungan tertentu, kumpulan sambungan baru dibuat. Apabila anda menyambung ke pangkalan data yang sama dengan rentetan sambungan yang sama pada waktu berikutnya, tidak ada kumpulan sambungan baru yang dibuat, sebaliknya kumpulan sambungan yang ada digunakan kembali.

Perlu diperhatikan bahawa ketika anda menggunakan Keamanan Bersepadu, kumpulan sambungan akan dibuat untuk setiap pengguna yang mengakses sistem klien, iaitu, sambungan disatukan setiap Windows Identity. Dalam hal ini, MSDN menyatakan: "Ketika sambungan pertama kali dibuka, kumpulan sambungan dibuat berdasarkan algoritma pencocokan tepat yang mengaitkan kumpulan dengan rentetan sambungan dalam sambungan. Setiap kumpulan sambungan dikaitkan dengan rentetan sambungan yang berbeza. Ketika sambungan baru dibuka, jika rentetan sambungan tidak sesuai dengan kumpulan yang ada, kumpulan baru akan dibuat. "

Mengkonfigurasi penyatuan sambungan

Bagaimana anda mengawal tingkah laku penyatuan sambungan? Anda boleh menguruskan kumpulan sambungan menggunakan kata kunci tertentu dalam rentetan sambungan anda. Yang penting merangkumi yang berikut:

  • ConnectionTimeout - ini digunakan untuk menentukan tempoh menunggu (dalam beberapa saat) apabila sambungan pangkalan data baru diminta. Nilai lalai adalah 15.
  • MinPoolSize - ini mewakili bilangan sambungan minimum di kolam renang.
  • MaxPoolSize - ini mewakili bilangan maksimum sambungan di kolam. Nilai lalai adalah 100.
  • Pengumpulan - ini mengawal jika penyatuan sambungan dihidupkan atau dimatikan dan boleh mempunyai nilai benar dari salah. Apabila ini ditetapkan ke benar, sambungan yang diminta diambil dari kumpulan sambungan yang sesuai.

Coretan kod berikut menggambarkan bagaimana kumpulan sambungan dapat dikonfigurasi menggunakan rentetan sambungan:

string connectionString="Data Source=localhost;Initial Catalog=Sample; Integrated security=SSPI;Connection Timeout=30; Connection Lifetime=0;Min Pool Size=0;Max Pool Size=100;Pooling=true;";

using (SqlConnection connection = new SqlConnection(connectionString))

{

   connection.Open();

   //Write code here to perform CRUD operations on the Sample database

}

Anda boleh memantau tingkah laku penyatuan sambungan dengan melaksanakan prosedur yang tersimpan sp_who atau sp_who2 di SQL Server. Anda juga boleh menggunakan SQL Server Profiler atau memanfaatkan Performance Counters untuk memantau tingkah laku penyatuan sambungan.

Terdapat beberapa masalah yang berpotensi dengan penyatuan sambungan. Satu masalah seperti itu ialah pemecahan kumpulan. Semasa bekerja dengan penyatuan sambungan, Anda harus mengetahui fragmentasi kolam dan memastikan langkah-langkah yang tepat (seni bina anda harus dirancang untuk mengatasi strategi mitigasi fragmentasi kolam) diadopsi untuk menghindari fragmentasi kolam. Perhatikan bahawa pemecahan kumpulan mungkin berlaku jika Anda menggunakan Keamanan Bersepadu atau bahkan ketika aplikasi Anda menggunakan kumpulan sambungan terlalu banyak.

Untuk memastikan penyatuan sambungan berfungsi dengan cekap, anda harus memastikan bahawa anda menutup sambungan pangkalan data apabila tidak diperlukan lagi. Anda tidak boleh memanggil kaedah Tutup atau Buang pada contoh Sambungan dalam kaedah Menyelesaikan. Anda juga harus menutup contoh transaksi sebelum objek sambungan yang berkaitan ditutup atau dilupuskan. Inilah bacaan yang baik mengenai topik ini.