Sdílet prostřednictvím


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, DataReadernebo 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 truese 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.

Viz také