Entity Framework vs SQL Server Ji EF inura















- Slides: 15

Entity Framework vs. SQL Server Jiří EF Činčura, Vladimír SQL Mužný

… co jste mohli udělat a neudělali; a co jste dělat neměli a přesto udělali – extended edition § Nevhodný návrh schématu • Datové typy a normalizace § Chybějící a přebývající indexy § Nevyužívání SQL modulů • Uložené procedury, built-in funkce, UDF § Složité dotazy – plány vykonání

Nevhodný návrh schématu

Nevhodné datové typy § EF • • § SQL String Date. Time. Span DBGeography • • Nvarchar(max), char(x) Date Time Geography/geometry • Datetime/datetime 2

Nevhodná míra normalizace § I. NF − Skalární atributy, neopakující se skupiny atributů (Adresy) § II. NF − Neklíčové atributy entity plně funkčně závislé na celém kandidátním klíči § III. NF − „co můžeš počítat, neukládej“ (Vek – SQL computed column) − Výkonnostní výjimka

Nevhodný návrh § NULL/NOT NULL (Jmeno) § Chybějící constraints − CHECK (Datum. Narozeni < Datum. Uhynu, rozsah hodnot datového typu (Vek >= 0)) − UNIQUE (Clenske. Cislo) − Cizí klíče a kaskádní chování (NULLABLE cizí klíč) § Využití schémat § Jmenné konvence

Nevhodné nastavení databáze § Nelze příliš ovlivnit v EF § Collation − Záleží na nastavení na straně SQL Serveru Server default collection Database default collection Column collation § Rozmístění souborů § Database Scoped Configuration (trace flags? )

Nevhodná indexace

Underindexing § Cizí klíče § Často filtrované položky − Kombinace sloupců − Included columns − Filtrované indexy

Overindexing § Index_all § Index column by column − V případě velkých (např. agregačních) nepredikovatelných dotazů zvážit columnstore index § Diagnostika: sys. dm_db_index_usage_stats

SQL moduly

SQL Moduly § Výhody užití − Skrytí komplexnosti manipulace s daty − Skrytí komplexnosti složitých dotazů § Činčura chce hintovat dotazy − SQL developers zvedli klávesnice k útoku § Nenechat se unést − Uložené procedury – velmi efektivní pro řízení komplexních transakcí − View – rozhraní pro import/export + skrytí komplexnosti db schématu − Funkce – dvojsečné − Triggery – snižují self-documentation databáze, výkonnostní problémy

Plány vykonání § SQL Server konvertuje SQL požadavek na tzv. plán vykonání − Estimated − Actual − Live Statistics § Metody získání plánů (live) § Diagnostika frekventovaných dotazů (live)

Závěrem § SQL developer by měl tušit, co dělá EF § EF developer by měl tušit, co dělá SQL § Více na kurzech − GOC 312, NETCORE_EF - development − GOC 630, GOC 631 – db optimization

Post Scriptum pro ty, co zůstali do konce § Cena přednášky − Letité zkušenosti − 5 velkých Krakonošů − 1 malý Krakonoš − 4 velké Gambrinusy − 1 malý Gambrinus − Grilovaná krkovice 200 g − Nakládaný Hermelín − Palačinky se šlehačkou