Udostępnij za pośrednictwem


Buforowanie połączeń OLE DB, ODBC i Oracle

Połączenia puli mogą znacznie zwiększyć wydajność i skalowalność aplikacji. W tej sekcji omówiono buforowanie połączeń dla dostawców danych programu .NET Framework dla ole DB, ODBC i Oracle.

Oledb

Program .NET Framework Dostawca danych dla ole DB automatycznie pule połączeń przy użyciu puli sesji OLE DB. Argumenty ciągu Połączenie ion mogą służyć do włączania lub wyłączania usług OLE DB, w tym buforowania. Na przykład następujące parametry połączenia wyłącza buforowanie sesji OLE DB i automatyczne rejestrowanie transakcji.

Provider=SQLOLEDB;OLE DB Services=-4;Data Source=localhost;Integrated Security=SSPI;

Zalecamy, aby zawsze zamykać lub usuwać połączenie po zakończeniu korzystania z niego w celu zwrócenia połączenia z pulą. Połączenie iony, które nie są jawnie zamknięte, mogą nie zostać zwrócone do puli. Na przykład połączenie, które wyszło poza zakres, ale nie zostało jawnie zamknięte, zostanie zwrócone tylko do puli połączeń, jeśli osiągnięto maksymalny rozmiar puli, a połączenie jest nadal prawidłowe.

Aby uzyskać więcej informacji na temat sesji lub puli zasobów OLE DB, a także sposobu wyłączania buforowania przez zastępowanie domyślnych ustawień usługi dostawcy OLE DB, zobacz Przewodnik programisty OLE DB.

ODBC

buforowanie Połączenie ion dla platformy .NET Framework Dostawca danych dla ODBC jest zarządzane przez menedżera sterowników ODBC używanego na potrzeby połączenia i nie ma to wpływu na program .NET Framework Dostawca danych dla ODBC.

Aby włączyć lub wyłączyć buforowanie połączeń, otwórz Administracja istrator źródła danych ODBC w folderze Administracja istrative Tools Panel sterowania. Karta Buforowanie Połączenie ion umożliwia określenie parametrów puli połączeń dla każdego zainstalowanego sterownika ODBC. Połączenie zmiany buforowania dla określonego sterownika ODBC mają wpływ na wszystkie aplikacje korzystające z tego sterownika ODBC.

OracleClient

Program .NET Framework Dostawca danych for Oracle zapewnia automatyczne buforowanie połączeń dla aplikacji klienckiej ADO.NET. Można również podać kilka modyfikatorów parametry połączenia w celu kontrolowania zachowania puli połączeń (zobacz "Kontrolowanie buforowania Połączenie ion za pomocą słów kluczowych ciągu Połączenie ion", w dalszej części tego tematu.

Tworzenie i przypisywanie pul

Po otwarciu połączenia pula połączeń jest tworzona na podstawie dokładnego zgodnego algorytmu, który kojarzy pulę z parametry połączenia w połączeniu. Każda pula połączeń jest skojarzona z odrębnym parametry połączenia. Po otwarciu nowego połączenia, jeśli parametry połączenia nie jest dokładnie zgodny z istniejącą pulą, zostanie utworzona nowa pula.

Po utworzeniu pule połączeń nie zostaną zniszczone do momentu zakończenia aktywnego procesu. Utrzymywanie nieaktywnych lub pustych pul używa bardzo niewielu zasobów systemowych.

Dodawanie Połączenie ion

Pula połączeń jest tworzona dla każdego unikatowego parametry połączenia. Po utworzeniu puli zostanie utworzonych i dodanych wiele obiektów połączenia do puli, aby spełnić minimalne wymaganie dotyczące rozmiaru puli. Połączenie są dodawane do puli zgodnie z potrzebami do maksymalnego rozmiaru puli.

OracleConnection Gdy zażądano obiektu, jest on uzyskiwany z puli, jeśli jest dostępne możliwe do użycia połączenie. Aby można było go używać, połączenie musi być obecnie nieużywane, mieć zgodny kontekst transakcji lub nie być skojarzone z żadnym kontekstem transakcji i mieć prawidłowy link do serwera.

Jeśli osiągnięto maksymalny rozmiar puli i nie jest dostępne żadne możliwe do użycia połączenie, żądanie jest kolejkowane. Program puli połączeń spełnia te żądania przez ponowne przydzielanie połączeń, ponieważ są one zwalniane z powrotem do puli. Połączenie iony są zwalniane z powrotem do puli po ich zamknięciu lub usunięciu.

Usuwanie Połączenie ion

Moduł puli połączeń usuwa połączenie z puli po bezczynności przez dłuższy czas lub jeśli moduł puli wykryje, że połączenie z serwerem zostało zerwane. Można to wykryć dopiero po próbie komunikowania się z serwerem. Jeśli zostanie znalezione połączenie, które nie jest już połączone z serwerem, jest oznaczone jako nieprawidłowe. Program puli połączeń okresowo skanuje pule połączeń, wyszukując obiekty, które zostały wydane w puli i są oznaczone jako nieprawidłowe. Te połączenia są następnie trwale usuwane.

Jeśli istnieje połączenie z serwerem, który zniknął, to połączenie można pobrać z puli, jeśli moduł puli połączeń nie wykrył zerwanego połączenia i oznaczył go jako nieprawidłowe. W takim przypadku jest generowany wyjątek. Należy jednak nadal zamknąć połączenie, aby zwolnić je z powrotem do puli.

Nie należy wywoływać Close ani Dispose w Connectionobiekcie , ani DataReaderw żadnym innym obiekcie zarządzanym w Finalize metodzie klasy. W finalizatorze zwalniaj tylko niezarządzane zasoby, które należą do klasy bezpośrednio. Jeśli klasa nie jest właścicielem żadnych zasobów niezarządzanych, nie dołączaj Finalize metody do definicji klasy. Aby uzyskać więcej informacji, zobacz Odzyskiwanie pamięci.

Obsługa transakcji

Połączenie są pobierane z puli i przypisywane na podstawie kontekstu transakcji. Kontekst wątku żądającego i przypisane połączenie musi być zgodny. W związku z tym każda pula połączeń jest podzielona na połączenia bez skojarzonego kontekstu transakcji i do N podziałów, które zawierają połączenia z określonym kontekstem transakcji.

Po zamknięciu połączenia zostanie ono zwolnione z powrotem do puli i do odpowiedniej poddziału na podstawie kontekstu transakcji. W związku z tym można zamknąć połączenie bez generowania błędu, mimo że transakcja rozproszona jest nadal oczekująca. Umożliwia to zatwierdzenie lub przerwanie transakcji rozproszonej w późniejszym czasie.

Kontrolowanie buforowania Połączenie ion za pomocą słów kluczowych ciągu Połączenie ion

Właściwość ConnectionStringOracleConnection obiektu obsługuje pary parametry połączenia klucz/wartość, których można użyć do dostosowania zachowania logiki buforowania połączeń.

W poniższej tabeli opisano ConnectionString wartości, których można użyć do dostosowania zachowania puli połączeń.

Nazwisko Domyślny opis
Connection Lifetime 0 Gdy połączenie jest zwracane do puli, jego czas tworzenia jest porównywany z bieżącym czasem, a połączenie jest niszczone, jeśli ten przedział czasu (w sekundach) przekracza wartość określoną przez Connection Lifetime. Jest to przydatne w konfiguracjach klastrowanych, aby wymusić równoważenie obciążenia między uruchomionym serwerem a serwerem właśnie przeniesionym w tryb online.

Wartość zero (0) spowoduje, że połączenia w puli mają maksymalny limit czasu.
Enlist "true" Gdy trueprogram puli automatycznie enlistuje połączenie w bieżącym kontekście transakcji wątku tworzenia, jeśli istnieje kontekst transakcji.
Max Pool Size 100 Maksymalna liczba połączeń dozwolonych w puli.
Min Pool Size 0 Minimalna liczba połączeń utrzymywanych w puli.
Pooling "true" Gdy truepołączenie zostanie pobrane z odpowiedniej puli lub w razie potrzeby, zostanie utworzone i dodane do odpowiedniej puli.

Zobacz też