Programování

Jak funguje sdružování připojení ADO.Net?

Připojení k databázi je operace náročná na prostředky, která obvykle zahrnuje několik kroků. Než dojde k počátečnímu potřesení rukou s databázovým serverem, měl by být vytvořen komunikační kanál mezi aplikací a databází. Tento kanál může být buď zásuvka nebo pojmenovaná trubka. Jakmile je toto připojení navázáno a počáteční navázání spojení se serverem je úspěšné, jsou metadata připojení (informace o připojovacím řetězci pro připojení k databázi) analyzována a připojení k databázi je ověřeno databázovým serverem.

ADO.Net je již dlouho jedním z nejpopulárnějších rámců pro přístup k datům. Sdružování připojení je funkce v ADO.Net, která vám umožňuje zlepšit výkon přístupu k datům ve vaší aplikaci.

Co je sdružování připojení?

Sdružování připojení je strategie, která se používá k minimalizaci nákladů spojených s otevíráním a zavíráním připojení k databázi. Umožňuje vám opakovaně používat připojení, nikoli vytvářet nová připojení k databázi, jakmile jsou požadována.

Fond připojení obsahuje kolekci nečinných, otevřených a opakovaně použitelných připojení. Pooler spravuje fond připojení a udržuje sadu aktivních připojení pro každé dané metadata připojení, informace o konfiguraci připojení.

Všimněte si, že ve stejné doméně aplikace může existovat více fondů připojení. Fond připojení se vytváří na jedinečný připojovací řetězec, který používáte pro připojení k databázi, a nikoli na databázi. Takže při prvním připojení k databázi s konkrétním připojovacím řetězcem se vytvoří nový fond připojení. Když se příště připojíte ke stejné databázi se stejným připojovacím řetězcem, nevytvoří se žádný nový fond připojení, spíše se znovu použije existující fond připojení.

Je třeba poznamenat, že když používáte integrované zabezpečení, fond připojení by byl vytvořen pro každého uživatele, který přistupuje ke klientskému systému, tj. Připojení jsou sdružována podle Windows Identity. V tomto ohledu uvádí MSDN: "Při prvním otevření připojení je vytvořen fond připojení založený na algoritmu přesné shody, který sdružuje fond s připojovacím řetězcem v připojení. Každý fond připojení je spojen s odlišným připojovacím řetězcem." Při otevření nového připojení, pokud připojovací řetězec není přesnou shodou s existujícím fondem, je vytvořen nový fond. "

Konfigurace sdružování připojení

Jak ovládáte chování sdružování připojení? Fondy připojení můžete spravovat pomocí určitých klíčových slov v řetězci připojení. Mezi důležité patří:

  • ConnectionTimeout - slouží k určení doby čekání (v sekundách), kdy je požadováno nové připojení k databázi. Výchozí hodnota je 15.
  • MinPoolSize - to představuje minimální počet připojení ve fondu.
  • MaxPoolSize - to představuje maximální počet připojení ve fondu. Výchozí hodnota je 100.
  • Pooling - toto určuje, zda je sdružování připojení zapnuto nebo vypnuto a může mít hodnotu true z false. Když je toto nastaveno na true, požadované připojení se načte z příslušného fondu připojení.

Následující fragment kódu ukazuje, jak lze konfigurovat fond připojení pomocí připojovacího řetězce:

string connectionString = "Zdroj dat = localhost; Počáteční katalog = Ukázka; Integrované zabezpečení = SSPI; Časový limit připojení = 30; Životnost připojení = 0; Min. velikost fondu = 0; Max. velikost fondu = 100; Sdružování = true;";

pomocí (připojení SqlConnection = nový SqlConnection (connectionString))

{

connection.Open ();

// Sem napište kód pro provedení operací CRUD v ukázkové databázi

}

Chování sdružování připojení můžete sledovat spuštěním sp_who nebo sp_who2 uložených procedur na serveru SQL Server. Můžete také použít SQL Server Profiler nebo využít čítače výkonu ke sledování chování sdružování připojení.

Existuje několik potenciálních problémů se sdružováním připojení. Jedním z takových problémů je fragmentace fondu. Při práci s sdružováním připojení byste si měli být vědomi fragmentace fondu a zajistit, aby byla přijata vhodná opatření (vaše architektura by měla být navržena tak, aby řešila strategie zmírňování fragmentace fondu), aby se zabránilo fragmentaci fondu. Všimněte si, že k fragmentaci fondu může dojít, pokud používáte integrované zabezpečení nebo dokonce když vaše aplikace používá příliš mnoho fondů připojení.

Aby bylo zajištěno, že sdružování připojení funguje efektivně, měli byste se ujistit, že zavřete připojení k databázi, když již nejsou potřeba. Nikdy byste neměli volat metodu Close nebo Dispose na instanci Connection v metodě Finalize. Měli byste také zavřít instance transakce před uzavřením nebo odstraněním souvisejících objektů připojení. Zde je pěkné čtení tohoto tématu.

$config[zx-auto] not found$config[zx-overlay] not found