Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 63300|Відповідь: 7

[.NET Core] ADO.NET Створити пул з'єднань SqlConnection через ObjectPool

[Копіювати посилання]
Опубліковано 2020-4-19 18:51:31 | | | |
ObjectPool — це нова функція від Microsoft, Microsoft допомагає нам підтримувати деякі об'єкти, які можна повторно використовувати.

Простіше кажучи, подібно до спільних велосипедів: коли ви користуєтеся ним, скануєте код, щоб розблокувати, автомобіль означає, що він зайнятий, коли ви ним користуєтеся, коли ви замикаєте машину, автомобіль відпускає пасажира. Усі ці професії та звільнення підтримуються платформою для нас.

Деякі об'єкти не є захищеними для потоків, але кожного разу, коли ми їх створюємо, потрібно споживати певні ресурси.

Детальне пояснення Object Pool у .NET Core
https://www.itsvse.com/thread-9152-1-1.html
(Джерело: Architect_Programmer)
По-перше, ми створюємо новий клас SqlConnectionPooledObjectPolicy, який успадковує <T>інтерфейс IPooledObjectPolicy і потребує реалізації двох його методів.

Як створити об'єкт у методі Create,Return вказує, чи можна об'єкт ще використовувати повторно, і при поверненні false об'єкт видаляється з пулу об'єктів.

Вихідний код тесту виглядає так:

Результати тесту такі:



Видно, що пул з'єднань трохи повільніший на перших 10 запитах, а після цього він швидший за кожну інстанцію SqlConnection.

Додано вихідний код

Туристи, якщо ви хочете побачити прихований контент цього допису, будь ласкаВідповідь






Попередній:Програми на C# виконують трудомісткі тестові класи
Наступний:Конфігурація MSSQL Trusted_Connection
Опубліковано 2020-4-19 21:58:46 |
Це щось нове
Опубліковано 2020-4-30 13:05:18 |
Приходь подивитися, підтримка, диван
 Орендодавець| Опубліковано 2021-3-22 15:31:43 |
Source-код DefaultObjectPoolProvider
MaximumRetained Default Environment.ProcessorCount * 2;





 Орендодавець| Опубліковано 2021-3-22 15:34:51 |
Його також можна написати безпосередньо


 Орендодавець| Опубліковано 2021-3-23 09:50:57 |
Тестовий код:

maxumRetained встановлено на 5, і тест запускається лише один раз, коли його повертають щоразу, як показано на рисунку нижче:



У разі неповернення тест запускається 10 разів, хоча він перевищує налаштування maxumRetained 5, і не буде виключення, можливо, після завершення використання він повільно переробляє його, і тоді зберігається лише 5 екземплярів:


 Орендодавець| Опубліковано 2021-3-24 18:23:44 |
Пул з'єднань SQL Server (ADO.NET)

Щоразу, коли користувач викликає Open на з'єднанні, процес пулу шукає доступні з'єднання в пулі. Якщо доступне пулове з'єднання, воно повертається абоненту замість відкриття нового з'єднання. Коли додаток викликає Close на цьому з'єднанні, процес пулу повертає з'єднання до активного пулу з'єднань замість закриття з'єднання.

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

Опубліковано 2021-8-17 10:13:07 |
Вчитися вчитися
Застереження:
Усе програмне забезпечення, програмні матеріали або статті, опубліковані Code Farmer Network, призначені лише для навчання та досліджень; Вищезазначений контент не повинен використовуватися в комерційних чи незаконних цілях, інакше користувачі несуть усі наслідки. Інформація на цьому сайті надходить з Інтернету, і спори щодо авторських прав не мають до цього сайту. Ви повинні повністю видалити вищезазначений контент зі свого комп'ютера протягом 24 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com