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
Алексей Капустяненко "Почему же мой запрос на Entity Framework 6 тормозит? Часть 9000""
Search
DotNetRu
August 28, 2019
Programming
0
33
Алексей Капустяненко "Почему же мой запрос на Entity Framework 6 тормозит? Часть 9000""
DotNetRu
August 28, 2019
Tweet
Share
More Decks by DotNetRu
See All by DotNetRu
Кирилл Лихтарович «Версионирование и кодогенерация в REST API»
dotnetru
0
190
Дмитрий Бабушкин «Мержилка .sln: быстро и надёжно, без UI и юнит-тестов»
dotnetru
0
120
Артём Микулич «Как интегрироваться с (не-)надёжным third-party API при помощи Polly»
dotnetru
0
120
Иван Патудин «gRPC и его реализация в .NET Core»
dotnetru
0
440
Дмитрий Павлов «Greenplum: Быстро, параллельно, консистентно»
dotnetru
0
230
Филипп Бочаров «Распределенная трассировка Jaeger в .NET»
dotnetru
0
260
Андрей Сергеев "Вопросы nullabilily в платформе .NET, применение функционального подхода в разработке с использованием типов Unit, Tagged Union, Optional, Result, разделение исключительных ситуаций и ожидаемых результатов при обработке ошибок."
dotnetru
0
130
Павел Московой "Работа с HTTP в платформе .NET, собственный движок для работы с HTTP, использующий функциональный подход на основе типа Result для обработки HTTP-ответа вместо исключений."
dotnetru
0
100
Сергей Огородников "Практика построения сервисов на основе ViennaNET"
dotnetru
0
110
Other Decks in Programming
See All in Programming
コードレビューで学ぶ!Kotlinオブジェクト指向デザインパターン
akkie76
2
190
코틀린으로 멀티플랫폼 만들기
pangmoo
0
140
Java 22 Overview
kishida
1
180
R言語の環境構築と基礎 Tokyo.R 112
bob3bob3
0
250
PHP8.3の機能を振り返る / Review of PHP 8.3 features
seike460
PRO
1
110
Build Apps for iOS, Android & Desktop in 100% Kotlin With Compose Multiplatform (mDevCamp 2024)
zsmb
0
180
MicrosoftのPlatform Engineeringガイドを読んで実際になにかやってみた
ymd65536
1
250
Goのエラースタックトレースの歴史と今後
sonatard
6
600
雑に思考を整理する技術と効能
konifar
58
28k
0→1と1→10の狭間で Javaという技術選定を振り返る/Reflecting on the Decision to Choose Java Between Scaling from 0 to 1 and 1 to 10
jaguar_imo
2
380
新宿ダンジョンを可視化してみた
satoshi7190
2
210
"config" ってなんだ? / What is "config"?
okashoi
0
240
Featured
See All Featured
The Art of Programming - Codeland 2020
erikaheidi
41
12k
Creatively Recalculating Your Daily Design Routine
revolveconf
209
11k
How to Ace a Technical Interview
jacobian
272
22k
The Mythical Team-Month
searls
215
42k
How GitHub (no longer) Works
holman
304
140k
A better future with KSS
kneath
231
16k
Thoughts on Productivity
jonyablonski
57
3.8k
Automating Front-end Workflow
addyosmani
1355
200k
Principles of Awesome APIs and How to Build Them.
keavy
120
16k
The Invisible Customer
myddelton
114
12k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
60
14k
Design by the Numbers
sachag
274
18k
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