Sdružování připojení OLE DB, ODBC a Oracle
Při sdružování připojení můžete výrazně zvýšit výkon a škálovatelnost aplikace. Tento článek popisuje sdružování připojení pro zprostředkovatele dat rozhraní .NET Framework pro OLE DB, ODBC a Oracle.
OleDb
Rozhraní .NET Framework Zprostředkovatel dat pro OLE DB automaticky s fondy připojení pomocí sdružování relací OLE DB. Argumenty připojovacího řetězce lze použít k povolení nebo zakázání služeb OLE DB včetně sdružování. Například následující připojovací řetězec zakáže sdružování relací OLE DB a automatické zařazení transakcí.
Provider=SQLOLEDB;OLE DB Services=-4;Data Source=localhost;Integrated Security=SSPI;
Důležité
Microsoft doporučuje používat nejbezpečnější dostupný tok ověřování. Pokud se připojujete k Azure SQL, spravované identity pro prostředky Azure se doporučují metodou ověřování.
Pokud chcete vrátit připojení do fondu, doporučujeme připojení vždy zavřít nebo odstranit, až ho budete používat. Připojení, která nejsou explicitně uzavřená, se nemusí vrátit do fondu. Například připojení, které bylo mimo rozsah, ale které nebylo explicitně uzavřeno, se vrátí do fondu připojení pouze v případě, že je dosaženo maximální velikosti fondu a připojení je stále platné.
Další informace o relaci OLE DB nebo sdružování zdrojů a o tom, jak zakázat sdružování přepsáním výchozích hodnot služby zprostředkovatele OLE DB, naleznete v Příručce programátora OLE DB.
ODBC
Sdružování připojení pro rozhraní .NET Framework Zprostředkovatel dat pro rozhraní ODBC spravuje Správce ovladačů ODBC, který se používá pro připojení, a není ovlivněn rozhraním .NET Framework Zprostředkovatel dat pro rozhraní ODBC.
Pokud chcete povolit nebo zakázat sdružování připojení, otevřete správce zdroje dat ODBC ve složce Nástroje pro správu Ovládací panely. Karta Sdružování připojení umožňuje zadat parametry sdružování připojení pro každý nainstalovaný ovladač ODBC. Změny sdružování připojení pro konkrétní ovladač ODBC ovlivňují všechny aplikace, které používají tento ovladač ODBC.
OracleClient
Rozhraní .NET Framework Zprostředkovatel dat pro Oracle poskytuje automatické sdružování připojení pro vaši klientskou aplikaci ADO.NET. Můžete také zadat několik modifikátorů připojovací řetězec pro řízení chování sdružování připojení (viz "Řízení sdružování připojení pomocí klíčových slov připojovacího řetězce", dále v tomto článku).
Vytváření a přiřazování fondů
Při otevření připojení se fond připojení vytvoří na základě přesného odpovídajícího algoritmu, který přidruží fond k připojovací řetězec v připojení. Každý fond připojení je přidružený k odlišnému připojovací řetězec. Pokud se otevře nové připojení, připojovací řetězec není přesná shoda s existujícím fondem, vytvoří se nový fond.
Po vytvoření se fondy připojení nezničí, dokud aktivní proces nedokončí. Údržba neaktivních nebo prázdných fondů používá velmi málo systémových prostředků.
Přidání připojení
Pro každý jedinečný připojovací řetězec se vytvoří fond připojení. Při vytvoření fondu se vytvoří a přidá do fondu více objektů připojení, aby byl splněn požadavek na minimální velikost fondu. Podle potřeby se do fondu přidají připojení až do maximální velikosti fondu.
OracleConnection Pokud je objekt požadován, získá se z fondu, pokud je k dispozici použitelné připojení. Aby bylo možné připojení použít, musí být aktuálně nepoužité, musí mít odpovídající kontext transakce nebo není přidružen k žádnému kontextu transakce a má platný odkaz na server.
Pokud byla dosažena maximální velikost fondu a není k dispozici žádné použitelné připojení, žádost se zařadí do fronty. Fond připojení tyto požadavky splňuje tím, že při jejich uvolnění zpět do fondu uvolní připojení. Připojení se uvolní zpět do fondu, když jsou zavřená nebo uvolněná.
Odebrání připojení
Nástroj pro sdružování připojení odebere připojení z fondu po delší dobu nečinnosti nebo pokud nástroj pro sdružování zjistí, že připojení k serveru bylo přerušeno. To se dá zjistit až po pokusu o komunikaci se serverem. Pokud se najde připojení, které už není připojené k serveru, označí se jako neplatné. Nástroj pro sdružování připojení pravidelně vyhledává objekty, které byly uvolněny do fondu, a jsou označené jako neplatné. Tato připojení se pak trvale odeberou.
Pokud existuje připojení k serveru, který zmizel, je možné toto připojení načíst z fondu, pokud nástroj pro sdružování připojení nezjistil přerušené připojení a označil ho jako neplatné. V takovém případě se vygeneruje výjimka. Přesto ale musíte připojení zavřít, aby se uvolnila zpět do fondu.
Nevyvolávejte ani nezavolávejte Close
Connection
, DataReader
nebo Dispose
žádný jiný spravovaný objekt v Finalize
metodě třídy. V finalizátoru uvolněte pouze nespravované prostředky, které vaše třída vlastní přímo. Pokud vaše třída nevlastní žádné nespravované prostředky, nezahrnujte do definice třídy metodu Finalize
. Další informace naleznete v tématu Uvolňování paměti.
Podpora transakcí
Připojení se načítají z fondu a přiřazují se na základě kontextu transakce. Kontext požadovaného vlákna a přiřazeného připojení se musí shodovat. Proto je každý fond připojení rozdělený na připojení bez přidruženého kontextu transakce a do dílčích dělení N , které každý obsahuje připojení s konkrétním kontextem transakce.
Když je připojení uzavřeno, uvolní se zpět do fondu a do příslušného dílčího dělení na základě jeho kontextu transakce. Připojení proto můžete zavřít bez generování chyby, i když distribuovaná transakce stále čeká na vyřízení. To vám umožní potvrdit nebo přerušit distribuovanou transakci později.
Řízení sdružování připojení pomocí klíčových slov připojovací řetězec
ConnectionString Vlastnost objektu OracleConnection podporuje připojovací řetězec páry klíč/hodnota, které lze použít k úpravě chování logiky sdružování připojení.
Následující tabulka popisuje ConnectionString hodnoty, které můžete použít k úpravě chování sdružování připojení.
Název | Výchozí | Popis |
---|---|---|
Connection Lifetime |
0 | Když se připojení vrátí do fondu, porovná se jeho čas vytvoření s aktuálním časem a připojení se zničí, pokud toto časové rozpětí (v sekundách) překročí hodnotu určenou Connection Lifetime . To je užitečné v clusterovaných konfiguracích k vynucení vyrovnávání zatížení mezi běžícím serverem a serverem, který jste právě převedli do režimu online.Hodnota nuly (0) způsobí, že připojení ve fondu budou mít maximální časový limit. |
Enlist |
"true" | Když true , pooler automaticky zařadí připojení do aktuálního transakčního kontextu vlákna vytvoření, pokud existuje kontext transakce. |
Max Pool Size |
100 | Maximální počet připojení povolených ve fondu. |
Min Pool Size |
0 | Minimální počet připojení udržovaných ve fondu. |
Pooling |
"true" | Pokud true se připojení nakreslí z příslušného fondu nebo v případě potřeby vytvoří a přidá do příslušného fondu. |