Эта статья является зеркальной статьёй машинного перевода, пожалуйста, нажмите здесь, чтобы перейти к оригиналу.

Вид: 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 |
Приходи посмотреть, поддержка, диван
 Хозяин| Опубликовано 22.03.2021 15:31:43 |
Исходный код DefaultObjectPoolProvider
MaximumRetained Default Environment.ProcessorCount * 2;





 Хозяин| Опубликовано 22.03.2021 15:34:51 |
Его также можно написать напрямую


 Хозяин| Опубликовано 23.03.2021 09:50:57 |
Тестовый код:

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



В случае отсутствия возврата тест инстанцируется 10 раз, хотя он превышает максимальную удержанность 5, и исключения не будет; возможно, после завершения использования он будет медленно перерабатывать, и тогда сохраняется только 5 экземпляров:


 Хозяин| Опубликовано 24.03.2021 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