Каждый запрос к базе данных SQLite с использованием EF Core в Docker выполняется очень медленно, если нет явного вызова OpenConnection. - PullRequest
5 голосов
/ 11 марта 2020

Я работаю просто. NET Веб-приложение Core 3.1 на localhost. Веб-приложение работает в контейнере Docker Linux (моя операционная система - Windows 10). База данных, используемая веб-приложением (очень маленькая (60 КБ), SQLite, почти пустая (все таблицы имеют около 20 записей), для подключения к ней используется EF Core), хранится в хост-ОС и монтируется в контейнер с помощью следующей команды:

--mount type=bind,source='SomeDummyHostPath',target=/mnt/hostFolder

Проблема в том, что каждый запрос, выполняемый в DBContext, выполняется очень медленно (~ 2 с для чтения 2 строк). Пока я запускаю приложение вне контейнера Docker, все, очевидно, работает гладко (тот же запрос выполняется за ~ 1 мс).

Что странно, после вызова dbContext.Database.OpenConnectionAsync() перед каждым вызовом DBSets EF, каждый запрос даже на Docker контейнер работает быстро (несколько миллисекунд).

Почему производительность в этом сценарии такая низкая? Есть ли способ увеличить его без явного вызова OpenConnectionAsync перед каждым запросом?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...