Entity Framework .net core. На каком объеме строк в базе данных он начнет подтормаживать?
Вопрос к тем кто пользовался EF на больших базах данных. Если я добавлю одно обновление которое сейчас готовится, моя база может разрастись до 58 миллионов или более строк в одной из таблиц. Подскажите будет ли справляться с подобной базой EF? Или лучше уже начинать думать в сторону ADO.Net где можно руками оптимизировать SQL запросы ?
Вообще до какого объема записей в базе можно безболезненно использовать EF?
Ответы (2 шт):
Если это простой SELECT без сложных JOIN'ов, то можно использовать Entity Framework даже для больших объёмов данных. В EF Core 5.0 появился метод ToQueryString (https://docs.microsoft.com/ru-ru/dotnet/api/microsoft.entityframeworkcore.entityframeworkqueryableextensions.toquerystring?view=efcore-5.0), который превращает IQueryable в соответствующий SQL-запрос, всегда можно проверить, какой запрос составляет EF. Также, если это запрос для чтения, то для ускорения можно пользоваться методом AsNoTracking для отключения change tracking на выбираемых сущностях (https://docs.microsoft.com/ru-ru/dotnet/api/system.data.entity.dbextensions.asnotracking?view=entity-framework-5.0.0).
EF Core 3.1 свыше 100_000_000_000 записей в одной таблице PostgreSQL (8 полей, 1 ключевое, 2 индекса) - полёт отличный, пишется телеметрия по over 10_000 записей в секунду на HDD Seagate ST2000DM008 и при этом связанные значения выдёргиваются за какие-то доли секунд через индексы в кол-ве тысяч записей.
EF Core надёжная вещь, ничего на опережение делать не приходилось, а если и были где-то проблемы, самим EF Cor'ом они и решались. Единственное что возникала проблема читать последнее значение по каждому связанному FK. Но в EF Core 5 кажется это исправили.