Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 63300|Odpowiedź: 7

[.NET Core] ADO.NET Utworzenie puli połączeń SqlConnection przez ObjectPool

[Skopiuj link]
Opublikowano 2020-4-19 18:51:31 | | | |
ObjectPool to nowa funkcja Microsoftu, Microsoft pomaga nam utrzymywać niektóre obiekty, które można ponownie wykorzystać.

Mówiąc prosto, podobnie jak w przypadku wspólnych rowerów, gdy go używasz, skanujesz kod, aby go odblokować, pojazd oznacza, że jest zajęty, a gdy go używasz, gdy zamykasz samochód, pojazd zwolni miejsce zajęcia. Te okupacje i zwolnienia są utrzymywane przez platformę dla nas.

Niektóre obiekty nie są bezpieczne dla wątków, ale za każdym razem, gdy je instancjonujemy, musimy zużyć pewne zasoby.

Szczegółowe wyjaśnienie puli obiektów w .NET Core
https://www.itsvse.com/thread-9152-1-1.html
(Źródło: Architect_Programmer)
Najpierw tworzymy nową klasę SqlConnectionPooledObjectPolicy, która dziedziczy interfejs IPooledObjectPolicy <T>i musi zaimplementować jego dwie metody.

Jak instancjonować obiekt w metodzie Create,Return wskazuje, czy obiekt nadal może być ponownie użyty, a gdy falsis zostanie zwrócony, obiekt zostanie usunięty z puli obiektów.

Kod źródłowy testu wygląda następująco:

Wyniki testów są następujące:



Widać, że pula połączeń jest nieco wolniejsza przy pierwszych 10 zapytaniach, a potem szybsza niż przy każdej instancji SqlConnection.

Załączony jest kod źródłowy

Turyści, jeśli chcecie zobaczyć ukrytą zawartość tego wpisu, proszęOdpowiedź






Poprzedni:Programy w C# wykonują czasochłonne klasy testowe
Następny:MSSQL Trusted_Connection konfiguracja
Opublikowano 2020-4-19 21:58:46 |
To coś nowego
Opublikowano 30.04.2020 13:05:18 |
Chodź zobaczyć, wsparcie, sofa
 Ziemianin| Opublikowano 2021-3-22 15:31:43 |
Kod źródłowy DefaultObjectPoolProvider
MaximumRetained Default Environment.ProcessorCount * 2;





 Ziemianin| Opublikowano 2021-3-22 15:34:51 |
Może być też zapisany bezpośrednio


 Ziemianin| Opublikowano 2021-3-23 09:50:57 |
Kod testowy:

maximumRetained jest ustawiony na 5, a test jest instancjonowany tylko raz, gdy jest zwracany za każdym razem, gdy jest używany, jak pokazano na poniższym rysunku:



W przypadku braku powrotu Test jest instancjonowany 10 razy, choć przekracza ustawienie maksimumRetained wynoszący 5 i nie wygeneruje wyjątku, może się zdarzyć, że po zakończeniu użycia zostanie powoli powtórzony, a następnie zachowane zostaną tylko 5 instancji:


 Ziemianin| Opublikowano 2021-3-24 18:23:44 |
SQL Server Connection Pool (ADO.NET)

Za każdym razem, gdy użytkownik wywołuje Otwarte na połączeniu, proces puli szuka połączeń dostępnych w puli. Jeśli dostępne jest połączenie pulowe, jest ono zwracane do dzwoniącego zamiast otwierać nowe połączenie. Gdy aplikacja wywołuje Close na tym połączeniu, proces puli zwraca połączenie do aktywnego zestawu połączeń zamiast zamykać połączenie.

https://docs.microsoft.com/zh-cn ... -connection-pooling

Opublikowano 2021-8-17 10:13:07 |
Naucz się uczyć
Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com