SlideShare ist ein Scribd-Unternehmen logo
1 von 16
Downloaden Sie, um offline zu lesen
© High Wheel Software All rights reserved
Wydajne zapytania w Entity Framework
Przemysław Dzierżak
2WWW.HIGHWEELSOFTWARE.COM
Kto mówi?
• Przemysław Dzierżak
• Programista .NET od 2005 roku
• Architekt hurtowni danych (Microsoft SQL Server)
• Współwłaściciel
• Miłośnik:
• Automatyzacji
• Czytelnego kodu
• LEAN Software Development / Agile
WWW.HIGHWEELSOFTWARE.COM
Agenda
• DBContext a IoC/DI
• DateTime.Date wg EF ☺
• Jak efektywnie pracować z ORM
• Odczyt
• Tylko odczyt, duży wolumen
• Zapis
3
DBContext a IoC/DI
WWW.HIGHWEELSOFTWARE.COM 4
WWW.HIGHWEELSOFTWARE.COM
DBContext
• Wzorzec „Repository”:
• dostęp do danych – DbSet<Entity>, Linq-to-entities
• Wzorzec „Unit of Work”
• Śledzenie zmian, wspólny commit
• Cache 1-go poziomu
• „Repeatable read”
DEMO
5
WWW.HIGHWEELSOFTWARE.COM
DBContext a Dependency Injection ?
[Dependency]
public MyDbContext { get; set; }
Ile powinien żyć DbContext?
6
WWW.HIGHWEELSOFTWARE.COM
Ile powinien żyć DbContext?
Pełna odpowiedź – Unit of Work – transakcja biznesowa
• Parametr każdej metody dostępu do danych
• AddUser (context, userData), DisableUser(context, userId) , …
• … lub magia
• -> http://mehdi.me/ambient-dbcontext-in-ef6/
Prosta odpowiedź:
• Web – 1 request
• Desktop – 1 okno (form)
• https://msdn.microsoft.com/en-us/library/jj729737(v=vs.113).aspx
Koniecznie Dispose()
7
DATE, DATETIME, DATETIME2
WWW.HIGHWEELSOFTWARE.COM 8
WWW.HIGHWEELSOFTWARE.COM
Typy danych daty / czasu
• DATE, DATETIME, DATETIME2
• Zakresy – Microsoft SQL Server
• DATE – 0001-01-01 … 9999-12-31 3 bajty
• DATETIME – 1753-01-01 … 9999-12-31 8 bajtów
• DATETIME2 – 0001-01-01 … 9999-12-31 6-8 bajtów
• Dokładność – Microsoft SQL Server
• DATE – 1 dzień
• DATETIME – 3-4 ms !
• DATETIME2(0) – 1 s
• DATETIME2(3) – 1 ms
• DATETIME2(7) – 0.0001 ms
DEMO
9
WWW.HIGHWEELSOFTWARE.COM
DbFunctions.TruncateTime - tłumaczenie
convert (datetime2, convert(varchar(255), [Extent1].[OrderDate], 102) , 102)
Czyli:
DateTime.Parse( orderDate.ToString("yyyy.MM.dd") )
10
Wydajne zapytania z użyciem
Entity Framework
WWW.HIGHWEELSOFTWARE.COM 11
WWW.HIGHWEELSOFTWARE.COM
Praca z bazą danych – ogólne zasady
• Niewielka liczba zapytań, najlepiej O(1)
• W bazie danych:
• Filtrowanie
• Ograniczenie liczby kolumn
• Grupowanie
• Sortowanie
• Stronicowanie
DEMO
12
WWW.HIGHWEELSOFTWARE.COM
Efektywne zapytania - narzędzia
• SQL Profiler i narzędzia VS
• Opóźnione wykonanie ( IQueryable<T> vs ToList, AsEnumerable)
• Include()
• Szczegół -> ogół / SelectMany
• Unikanie CAST
Tylko odczyt?
• Ograniczanie kolumn
• AsNoTracking()
• Brak cache’a
13
WWW.HIGHWEELSOFTWARE.COM
Entity Framework – zapis dużych wolumenów danych
DEMO
• Wyłączenie śledzenia zmian
context.Configuration.AutoDetectChangesEnabled = false;
• Dzielenie na paczki po 1-10k wierszy
• W ostateczności Bulk Insert
Dużo zmian? („UPSERT”)
• Wczytaj zbiór, modyfikuj/dodawaj
• Lub tabela ‚tymczasowa’ + MERGE
14
WWW.HIGHWEELSOFTWARE.COM
Na zakończenie
• Nie dajmy się zwariować
• mało danych – prostsze wygrywa
• EF (i inne ORM) mają być wygodne, nie szybkie
• Znajomość wykorzystywanej technologii
15
Pytania?
Al. Zwycięstwa 96/98, 81-451 Gdynia
www.highwheelsoftware.com
przemyslaw.dzierzak@highwheelsoftware.com

Weitere ähnliche Inhalte

Was ist angesagt?

Testowanie EDW czyli projekt piekło - Bartłomiej Nikiel
Testowanie EDW czyli projekt piekło - Bartłomiej NikielTestowanie EDW czyli projekt piekło - Bartłomiej Nikiel
Testowanie EDW czyli projekt piekło - Bartłomiej Nikielkraqa
 
Wprowadzenie do Cloud OS
Wprowadzenie do Cloud OSWprowadzenie do Cloud OS
Wprowadzenie do Cloud OSLukasz Kaluzny
 
SQLServer dla Programistów
SQLServer dla ProgramistówSQLServer dla Programistów
SQLServer dla ProgramistówHighWheelSoftware
 
Info meet pomiary wydajności
Info meet pomiary wydajnościInfo meet pomiary wydajności
Info meet pomiary wydajnościmagda3695
 
Websites vs Cloud Services - OLMUG
Websites vs Cloud Services - OLMUGWebsites vs Cloud Services - OLMUG
Websites vs Cloud Services - OLMUGBart Zaremba
 
Exchange 2013 sp1 - what's new
Exchange 2013 sp1 - what's newExchange 2013 sp1 - what's new
Exchange 2013 sp1 - what's newKonrad Sagala
 
Projektowanie wysokowydajnych i skalowalnych serwisów WWW - Warstwa aplikacji
Projektowanie wysokowydajnych i skalowalnych serwisów WWW - Warstwa aplikacjiProjektowanie wysokowydajnych i skalowalnych serwisów WWW - Warstwa aplikacji
Projektowanie wysokowydajnych i skalowalnych serwisów WWW - Warstwa aplikacjiAntoni Orfin
 
W3 Total Cache - skuteczne przyśpieszanie WordPressa
W3 Total Cache - skuteczne przyśpieszanie WordPressaW3 Total Cache - skuteczne przyśpieszanie WordPressa
W3 Total Cache - skuteczne przyśpieszanie WordPressaBartosz Romanowski
 

Was ist angesagt? (11)

Testowanie EDW czyli projekt piekło - Bartłomiej Nikiel
Testowanie EDW czyli projekt piekło - Bartłomiej NikielTestowanie EDW czyli projekt piekło - Bartłomiej Nikiel
Testowanie EDW czyli projekt piekło - Bartłomiej Nikiel
 
Wprowadzenie do Cloud OS
Wprowadzenie do Cloud OSWprowadzenie do Cloud OS
Wprowadzenie do Cloud OS
 
SQLServer dla Programistów
SQLServer dla ProgramistówSQLServer dla Programistów
SQLServer dla Programistów
 
Info meet pomiary wydajności
Info meet pomiary wydajnościInfo meet pomiary wydajności
Info meet pomiary wydajności
 
PyLadies #3
PyLadies #3PyLadies #3
PyLadies #3
 
MongoDB 2011
MongoDB 2011MongoDB 2011
MongoDB 2011
 
Azure Site Recovery
Azure Site RecoveryAzure Site Recovery
Azure Site Recovery
 
Websites vs Cloud Services - OLMUG
Websites vs Cloud Services - OLMUGWebsites vs Cloud Services - OLMUG
Websites vs Cloud Services - OLMUG
 
Exchange 2013 sp1 - what's new
Exchange 2013 sp1 - what's newExchange 2013 sp1 - what's new
Exchange 2013 sp1 - what's new
 
Projektowanie wysokowydajnych i skalowalnych serwisów WWW - Warstwa aplikacji
Projektowanie wysokowydajnych i skalowalnych serwisów WWW - Warstwa aplikacjiProjektowanie wysokowydajnych i skalowalnych serwisów WWW - Warstwa aplikacji
Projektowanie wysokowydajnych i skalowalnych serwisów WWW - Warstwa aplikacji
 
W3 Total Cache - skuteczne przyśpieszanie WordPressa
W3 Total Cache - skuteczne przyśpieszanie WordPressaW3 Total Cache - skuteczne przyśpieszanie WordPressa
W3 Total Cache - skuteczne przyśpieszanie WordPressa
 

Ähnlich wie Jak nie narobić sobie problemów korzystając z EntityFramework

IT od kuchni w Nokaut.pl
IT od kuchni w Nokaut.pl IT od kuchni w Nokaut.pl
IT od kuchni w Nokaut.pl 3camp
 
Jak oszczędzać czas zespołu w środowisku mikroserwisów, czyli efektywny flow ...
Jak oszczędzać czas zespołu w środowisku mikroserwisów, czyli efektywny flow ...Jak oszczędzać czas zespołu w środowisku mikroserwisów, czyli efektywny flow ...
Jak oszczędzać czas zespołu w środowisku mikroserwisów, czyli efektywny flow ...Mateusz Paprocki, PMP
 
SQLDAY2022-AdrianChodkowski-10BledowPowerBI.pdf
SQLDAY2022-AdrianChodkowski-10BledowPowerBI.pdfSQLDAY2022-AdrianChodkowski-10BledowPowerBI.pdf
SQLDAY2022-AdrianChodkowski-10BledowPowerBI.pdfSeeQuality.net
 
PLNOG16: Nowe założenia dla zbieranie logów, statystyk i alertów, Maciej Kałk...
PLNOG16: Nowe założenia dla zbieranie logów, statystyk i alertów, Maciej Kałk...PLNOG16: Nowe założenia dla zbieranie logów, statystyk i alertów, Maciej Kałk...
PLNOG16: Nowe założenia dla zbieranie logów, statystyk i alertów, Maciej Kałk...PROIDEA
 
SQL Server 2008 Tips & tricks administracji
SQL Server 2008 Tips & tricks administracjiSQL Server 2008 Tips & tricks administracji
SQL Server 2008 Tips & tricks administracjiSQLExpert.pl
 
Wprowadzenie do modelowania danych w PowerPivot
Wprowadzenie do modelowania danych w PowerPivotWprowadzenie do modelowania danych w PowerPivot
Wprowadzenie do modelowania danych w PowerPivotKamil Nowinski
 
Microsoft Business Intelligence w 2017 roku
Microsoft Business Intelligence w 2017 rokuMicrosoft Business Intelligence w 2017 roku
Microsoft Business Intelligence w 2017 rokuHighWheelSoftware
 
Maintenance_Plans_Zupełnie_Znienacka
Maintenance_Plans_Zupełnie_ZnienackaMaintenance_Plans_Zupełnie_Znienacka
Maintenance_Plans_Zupełnie_ZnienackaTobias Koprowski
 
Michał Dec - Quality in Clouds
Michał Dec - Quality in CloudsMichał Dec - Quality in Clouds
Michał Dec - Quality in Cloudskraqa
 
"Administrator z przypadku" - Jak działa SQL Server i jak o niego dbać
"Administrator z przypadku" - Jak działa SQL Server i jak o niego dbać"Administrator z przypadku" - Jak działa SQL Server i jak o niego dbać
"Administrator z przypadku" - Jak działa SQL Server i jak o niego dbaćBartosz Ratajczyk
 
Nowości w zakresie bezpieczeństwa w SQL Server 2016
Nowości w zakresie bezpieczeństwa w SQL Server 2016Nowości w zakresie bezpieczeństwa w SQL Server 2016
Nowości w zakresie bezpieczeństwa w SQL Server 2016Kamil Nowinski
 
Jak szybko przetwarzasz hurtowe ilości XML?
Jak szybko przetwarzasz hurtowe ilości XML?Jak szybko przetwarzasz hurtowe ilości XML?
Jak szybko przetwarzasz hurtowe ilości XML?Bartosz Ratajczyk
 
[#4] spark - IBM Integrated Analytics System
[#4] spark - IBM Integrated Analytics System[#4] spark - IBM Integrated Analytics System
[#4] spark - IBM Integrated Analytics SystemArtur Wronski
 
Microsoft SQL Server 2000. Księga eksperta
Microsoft SQL Server 2000. Księga ekspertaMicrosoft SQL Server 2000. Księga eksperta
Microsoft SQL Server 2000. Księga ekspertaWydawnictwo Helion
 
20160309 AzureDay 2016 - Azure Stream Analytics & Azure Machine Learning
20160309   AzureDay 2016 - Azure Stream Analytics & Azure Machine Learning20160309   AzureDay 2016 - Azure Stream Analytics & Azure Machine Learning
20160309 AzureDay 2016 - Azure Stream Analytics & Azure Machine LearningŁukasz Grala
 
20160316 techstolica - cloudanalytics -tidk
20160316  techstolica - cloudanalytics -tidk20160316  techstolica - cloudanalytics -tidk
20160316 techstolica - cloudanalytics -tidkŁukasz Grala
 
Jak przerobić monolityczną aplikację na architekturę mikro serwisów ?
Jak przerobić monolityczną aplikację na architekturę mikro serwisów ?Jak przerobić monolityczną aplikację na architekturę mikro serwisów ?
Jak przerobić monolityczną aplikację na architekturę mikro serwisów ?Tomasz Lelek
 

Ähnlich wie Jak nie narobić sobie problemów korzystając z EntityFramework (20)

IT od kuchni w Nokaut.pl
IT od kuchni w Nokaut.pl IT od kuchni w Nokaut.pl
IT od kuchni w Nokaut.pl
 
Mikrousługi w allegro
Mikrousługi w allegroMikrousługi w allegro
Mikrousługi w allegro
 
Jak oszczędzać czas zespołu w środowisku mikroserwisów, czyli efektywny flow ...
Jak oszczędzać czas zespołu w środowisku mikroserwisów, czyli efektywny flow ...Jak oszczędzać czas zespołu w środowisku mikroserwisów, czyli efektywny flow ...
Jak oszczędzać czas zespołu w środowisku mikroserwisów, czyli efektywny flow ...
 
SQLDAY2022-AdrianChodkowski-10BledowPowerBI.pdf
SQLDAY2022-AdrianChodkowski-10BledowPowerBI.pdfSQLDAY2022-AdrianChodkowski-10BledowPowerBI.pdf
SQLDAY2022-AdrianChodkowski-10BledowPowerBI.pdf
 
Podstawy ETL z SSIS
Podstawy ETL z SSISPodstawy ETL z SSIS
Podstawy ETL z SSIS
 
PLNOG16: Nowe założenia dla zbieranie logów, statystyk i alertów, Maciej Kałk...
PLNOG16: Nowe założenia dla zbieranie logów, statystyk i alertów, Maciej Kałk...PLNOG16: Nowe założenia dla zbieranie logów, statystyk i alertów, Maciej Kałk...
PLNOG16: Nowe założenia dla zbieranie logów, statystyk i alertów, Maciej Kałk...
 
SQL Server 2008 Tips & tricks administracji
SQL Server 2008 Tips & tricks administracjiSQL Server 2008 Tips & tricks administracji
SQL Server 2008 Tips & tricks administracji
 
Wprowadzenie do modelowania danych w PowerPivot
Wprowadzenie do modelowania danych w PowerPivotWprowadzenie do modelowania danych w PowerPivot
Wprowadzenie do modelowania danych w PowerPivot
 
Microsoft Business Intelligence w 2017 roku
Microsoft Business Intelligence w 2017 rokuMicrosoft Business Intelligence w 2017 roku
Microsoft Business Intelligence w 2017 roku
 
Maintenance_Plans_Zupełnie_Znienacka
Maintenance_Plans_Zupełnie_ZnienackaMaintenance_Plans_Zupełnie_Znienacka
Maintenance_Plans_Zupełnie_Znienacka
 
Michał Dec - Quality in Clouds
Michał Dec - Quality in CloudsMichał Dec - Quality in Clouds
Michał Dec - Quality in Clouds
 
"Administrator z przypadku" - Jak działa SQL Server i jak o niego dbać
"Administrator z przypadku" - Jak działa SQL Server i jak o niego dbać"Administrator z przypadku" - Jak działa SQL Server i jak o niego dbać
"Administrator z przypadku" - Jak działa SQL Server i jak o niego dbać
 
Nowości w zakresie bezpieczeństwa w SQL Server 2016
Nowości w zakresie bezpieczeństwa w SQL Server 2016Nowości w zakresie bezpieczeństwa w SQL Server 2016
Nowości w zakresie bezpieczeństwa w SQL Server 2016
 
Jak szybko przetwarzasz hurtowe ilości XML?
Jak szybko przetwarzasz hurtowe ilości XML?Jak szybko przetwarzasz hurtowe ilości XML?
Jak szybko przetwarzasz hurtowe ilości XML?
 
[#4] spark - IBM Integrated Analytics System
[#4] spark - IBM Integrated Analytics System[#4] spark - IBM Integrated Analytics System
[#4] spark - IBM Integrated Analytics System
 
Microsoft SQL Server 2000. Księga eksperta
Microsoft SQL Server 2000. Księga ekspertaMicrosoft SQL Server 2000. Księga eksperta
Microsoft SQL Server 2000. Księga eksperta
 
Transact-SQL. Czarna księga
Transact-SQL. Czarna księgaTransact-SQL. Czarna księga
Transact-SQL. Czarna księga
 
20160309 AzureDay 2016 - Azure Stream Analytics & Azure Machine Learning
20160309   AzureDay 2016 - Azure Stream Analytics & Azure Machine Learning20160309   AzureDay 2016 - Azure Stream Analytics & Azure Machine Learning
20160309 AzureDay 2016 - Azure Stream Analytics & Azure Machine Learning
 
20160316 techstolica - cloudanalytics -tidk
20160316  techstolica - cloudanalytics -tidk20160316  techstolica - cloudanalytics -tidk
20160316 techstolica - cloudanalytics -tidk
 
Jak przerobić monolityczną aplikację na architekturę mikro serwisów ?
Jak przerobić monolityczną aplikację na architekturę mikro serwisów ?Jak przerobić monolityczną aplikację na architekturę mikro serwisów ?
Jak przerobić monolityczną aplikację na architekturę mikro serwisów ?
 

Jak nie narobić sobie problemów korzystając z EntityFramework