Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Алексей Капустяненко "Почему же мой запрос на Entity Framework 6 тормозит? Часть 9000""

Алексей Капустяненко "Почему же мой запрос на Entity Framework 6 тормозит? Часть 9000""

DotNetRu

August 28, 2019
Tweet

More Decks by DotNetRu

Other Decks in Programming

Transcript

  1. Стек на проекте • ASP.NET Web API • EntityFramework 6

    • AutoMapper • MS SQL + в дальнейшем Postgres 2
  2. Суть проблемы • Запрос большой и страшный, но выполняется он

    быстро • Значит, EF делает “что-то” помимо запроса, довольно продолжительное по времени 5
  3. Начало расследования • Переписать запрос • AsNoTracking() • Догружать связанные

    сущности отдельными запросами • Compiled Queries • Перейти на EF Core 6
  4. Этапы выполнения запросов 9 Загрузка метаданных Открытие подключения базы данных

    Создание представлений Подготовка запроса Выполнение запроса Загрузка и проверка типов Отслеживание Подготовка материализатора
  5. Что из этого кешируется 12 Загрузка метаданных Открытие подключения базы

    данных Создание представлений Подготовка запроса Выполнение запроса Загрузка и проверка типов Отслеживание Подготовка материализатора
  6. Заключение • + Техника довольно действенная • - Страдает код

    • За абстракции приходится платить отказом от абстракций 18