Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Алексей Капустяненко "Почему же мой запрос на E...
Search
DotNetRu
August 28, 2019
Programming
0
43
Алексей Капустяненко "Почему же мой запрос на Entity Framework 6 тормозит? Часть 9000""
DotNetRu
August 28, 2019
Tweet
Share
More Decks by DotNetRu
See All by DotNetRu
Кирилл Лихтарович «Версионирование и кодогенерация в REST API»
dotnetru
0
250
Дмитрий Бабушкин «Мержилка .sln: быстро и надёжно, без UI и юнит-тестов»
dotnetru
0
170
Артём Микулич «Как интегрироваться с (не-)надёжным third-party API при помощи Polly»
dotnetru
0
160
Иван Патудин «gRPC и его реализация в .NET Core»
dotnetru
0
550
Дмитрий Павлов «Greenplum: Быстро, параллельно, консистентно»
dotnetru
0
310
Филипп Бочаров «Распределенная трассировка Jaeger в .NET»
dotnetru
0
330
Андрей Сергеев "Вопросы nullabilily в платформе .NET, применение функционального подхода в разработке с использованием типов Unit, Tagged Union, Optional, Result, разделение исключительных ситуаций и ожидаемых результатов при обработке ошибок."
dotnetru
0
150
Павел Московой "Работа с HTTP в платформе .NET, собственный движок для работы с HTTP, использующий функциональный подход на основе типа Result для обработки HTTP-ответа вместо исключений."
dotnetru
0
130
Сергей Огородников "Практика построения сервисов на основе ViennaNET"
dotnetru
0
150
Other Decks in Programming
See All in Programming
Select API from Kotlin Coroutine
jmatsu
1
190
既存デザインを変更せずにタップ領域を広げる方法
tahia910
1
240
Goで作る、開発・CI環境
sin392
0
160
Kotlin エンジニアへ送る:Swift 案件に参加させられる日に備えて~似てるけど色々違う Swift の仕様 / from Kotlin to Swift
lovee
1
260
Go1.25からのGOMAXPROCS
kuro_kurorrr
1
820
What Spring Developers Should Know About Jakarta EE
ivargrimstad
0
320
PostgreSQLのRow Level SecurityをPHPのORMで扱う Eloquent vs Doctrine #phpcon #track2
77web
2
400
第9回 情シス転職ミートアップ 株式会社IVRy(アイブリー)の紹介
ivry_presentationmaterials
1
250
Modern Angular with Signals and Signal Store:New Rules for Your Architecture @enterJS Advanced Angular Day 2025
manfredsteyer
PRO
0
150
ニーリーにおけるプロダクトエンジニア
nealle
0
630
プロダクト志向ってなんなんだろうね
righttouch
PRO
0
170
Java on Azure で LangGraph!
kohei3110
0
170
Featured
See All Featured
Mobile First: as difficult as doing things right
swwweet
223
9.7k
Site-Speed That Sticks
csswizardry
10
670
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
3.9k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
138
34k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
Become a Pro
speakerdeck
PRO
28
5.4k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
181
53k
The World Runs on Bad Software
bkeepers
PRO
69
11k
Designing for humans not robots
tammielis
253
25k
Side Projects
sachag
455
42k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
30
2.1k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
107
19k
Transcript
"Почему же мой запрос на Entity Framework 6 тормозит?" Часть
9000 Алексей Капустяненко
Стек на проекте • ASP.NET Web API • EntityFramework 6
• AutoMapper • MS SQL + в дальнейшем Postgres 2
С чего все началось 3 50 строк C# 3000+ строк
SQL
Live Demo 1 4
Суть проблемы • Запрос большой и страшный, но выполняется он
быстро • Значит, EF делает “что-то” помимо запроса, довольно продолжительное по времени 5
Начало расследования • Переписать запрос • AsNoTracking() • Догружать связанные
сущности отдельными запросами • Compiled Queries • Перейти на EF Core 6
След найден • Performance Considerations (Entity Framework) • Performance considerations
for EF 4, 5, and 6 7
Performance Considerations (Entity Framework) 8 https://docs.microsoft.com/ru-ru/dotnet/framework/data/adonet/ef/performance-considerations
Этапы выполнения запросов 9 Загрузка метаданных Открытие подключения базы данных
Создание представлений Подготовка запроса Выполнение запроса Загрузка и проверка типов Отслеживание Подготовка материализатора
Performance considerations for EF 4, 5, and 6 10 https://docs.microsoft.com/ru-ru/ef/ef6/fundamentals/performance/perf-whitepaper
Performance considerations for EF 4, 5, and 6 11 https://docs.microsoft.com/ru-ru/ef/ef6/fundamentals/performance/perf-whitepaper
Что из этого кешируется 12 Загрузка метаданных Открытие подключения базы
данных Создание представлений Подготовка запроса Выполнение запроса Загрузка и проверка типов Отслеживание Подготовка материализатора
Подводные камни Entity Framework и производительность 13 https://habr.com/ru/post/269901/
Contains 14 Live Demo 2
Any (All) 15 Live Demo 3
Константы 16 Live Demo 4
Результат 17 Live Demo 5
Заключение • + Техника довольно действенная • - Страдает код
• За абстракции приходится платить отказом от абстракций 18
Спасибо за внимание!!! 19
20 Гитхаб с демо: https://github.com/alexeykap/Ef6Part 9000PresentationMaterials Мой telegram: https://t.me/KapAleksey