Databáze. Optimalizace, základní konstrukty T-SQL David Hoksza

Podobné dokumenty
Databáze 2011/2012. Optimalizace, základní konstrukty T-SQL RNDr.David Hoksza, Ph.D.

Databáze 2011/2012 SQL DDL (CREATE/ALTER/DROP TABLE), DML (INSERT/UPDATE/DELETE) RNDr.David Hoksza, Ph.D.

Databáze 2011/2012 T-SQL - kurzory, funkce. RNDr.David Hoksza, Ph.D.

Databáze 2011/2012 SQL SELECT II. RNDr.David Hoksza, Ph.D.

4 Datový typ, proměnné, literály, konstanty, výrazy, operátory, příkazy

FRONTA. Podobně jako u zásobníku lze prvek z fronty vyjmout pouze za takové podmínky, že je na řadě. Avšak jeho hodnotu můžeme přečíst kdykoliv.

Transakce Profinit. All rights reserved.

Helios Orange Plugin Zadávání vlastností

Sledování provedených změn v programu SAS

TEORIE ZPRACOVÁNÍ DAT Cvičení 8

Databázové systémy Cvičení 5.2

Databázové systémy I

Databázové systémy I. - II. 2009/2010

Databázové systémy úvod

Databáze 2011/2012 Konceptuální model DB. RNDr. David Hoksza, Ph.D.

PL/SQL. Jazyk SQL je jazykem deklarativním, který neobsahuje procedurální příkazy jako jsou cykly, podmínky, procedury, funkce, atd.

Vykreslení obrázku z databázového sloupce na referenční bod geometrie

Návrh a tvorba WWW stránek 1/14. PHP a databáze

Vizualizace TIN (trojúhelníková nepravidelná síť) v Marushka Designu

Text úlohy. Systémový katalog (DICTIONARY):

Databáze 2011/2012. Logický model DB. RNDr.David Hoksza, Ph.D.

Databáze SQL SELECT. David Hoksza

HTML šablona v MarushkaDesignu

Databázové systémy II. KIV/DB2 LS 2007/2008. Zadání semestrální práce

Informační systémy 2008/2009. Radim Farana. Obsah. Jazyk SQL

Verzování a publikace dat na webu za pomoci PostgreSQL

Kurz Databáze. Obsah. Dotazy. Zpracování dat. Doc. Ing. Radim Farana, CSc.

Kód v databázi. RNDr. Ondřej Zýka

2. blok část B Základní syntaxe příkazů SELECT, INSERT, UPDATE, DELETE

SQL - trigger, Databázové modelování

Západočeská univerzita v Plzni Katedra informatiky a výpočetní techniky. 9. června krovacek@students.zcu.cz

Informační systémy 2008/2009. Radim Farana. Obsah. Skripty a dávky. Nastavení aktuální databáze. USE DatabaseName

Databázové systémy. - SQL * definice dat * aktualizace * pohledy. Tomáš Skopal

Stored Procedures & Database Triggers, Tiskové sestavy v Oracle Reports

SQL v14. 4D Developer konference. 4D Developer conference 2015 Prague, CZ Celebrating 30 years

Eda. Evidence obchodních aktivit. Proces nákupu

Informační ikony v MarushkaDesignu

InnoDB transakce, cizí klíče, neumí fulltext (a nebo už ano?) CSV v textovém souboru ve formátu hodnot oddělených čárkou

Práce s WKT řetězci v MarushkaDesignu

ZŠ ÚnO, Bratří Čapků 1332

7. Integrita a bezpečnost dat v DBS

7. Integrita a bezpečnost dat v DBS

Kapitola 6: Omezení integrity. Omezení domény

Design databáze. MI-DSP 2013/14 RNDr. Ondřej Zýka,

Databáze I. Přednáška 4

Informační systémy 2008/2009. Radim Farana. Obsah. Dotazy přes více tabulek

Databázové systémy. Cvičení 6: SQL

Portál veřejné správy

Obchodní akademie a Jazyková škola s právem státní jazykové zkoušky Jihlava

Portál veřejné správy

Plánování směn verze 2.1, revize 03

Spisová služba/elisa - Dodatek k manuálu - subverze 1.28

Optimalizace Profinit. All rights reserved.

Témata v MarushkaDesignu

Odpisy a opravné položky pohledávek

5. Zobrazení stručné informace o právě běžícím programu. 6. Zobrazení podrobné informace o právě běžícím programu

Možnosti připojení WMS služby do Klienta v Marushka Designu

Integrace dat Profinit. All rights reserved.

Modul pro vyhodnocení ročních výsledků finančních kontrol

PG 9.5 novinky ve vývoji aplikací

Uložené procedury Úvod ulehčit správu zabezpečení rychleji

Autorizace mapového serveru

Upomínky a kontroly E S O 9 i n t e r n a t i o n a l a. s.

Úvod do databázových systémů

Jazyk SQL databáze SQLite. připravil ing. petr polách

Instalace a technické informace

ŽENSKÝ POHÁR 2015 PROPOZICE SOUTĚŽE

Fakulta elektrotechniky a informatiky Databázové systémy 2. Leden 2010 souhrn. Červené dobře (nejspíš), modré možná

8. Zpracování dotazu. J. Zendulka: Databázové systémy 8 Zpracování dotazu 1

8.2 Používání a tvorba databází

Dotaz typu Common Info v MarushkaDesignu

Prováděcí předpisy pro soutěžní lezení pro rok 2014

GLOBÁLNÍ ARCHITEKTURA ROB

Design databáze. NDBI /14 RNDr. Ondřej Zýka,

KIV/ZIS cvičení 6. Tomáš Potužák

VIS ČAK - Uživatelský manuál - OnLine semináře

Maturitní témata z předmětu PROGRAMOVÉ VYBAVENÍ pro šk. rok 2012/2013

MS Word pro administrátory projektů Základy

Metadata Profinit. All rights reserved.

B0M33BDT Technologie pro velká data. Supercvičení SQL, Python, Linux

DATABÁZOVÉ A INFORMAČNÍ SYSTÉMY

Nastavení funkce pro Elektronickou evidenci tržeb EET v programu Aconto

Generování Homepage ze serveru AReality.sk

Databázové systémy a SQL

DJ2 rekurze v SQL. slajdy k přednášce NDBI001. Jaroslav Pokorný

Inovace a zkvalitnění výuky prostřednictvím ICT. Základní seznámení s MySQL Ing. Kotásek Jaroslav

10. Architektura klient/server a třívrstvá architektura

Tile systém v Marushka Designu

10. Architektura klient/server a třívrstvá architektura

REZERVACE24 S.R.O. PROVOZOVATEL SYSTÉMU RISORSA PRO VĚRNOSTNÍ PROGRAMY. Případová studie. Implementace věrnostního programu s.

Jazyk SQL 3 - DML, DDL, TCL, DCL

Projektový manuál: SME Instrument Brno

Jazyk PL/SQL Úvod, blok

Embedded SQL v C/C++ úvod. Administrace Oracle Kateřina Opočenská

Základní přehled SQL příkazů

EXTRAKT z mezinárodní normy

Configuration Management

Distanční opora předmětu: Databázové systémy Tématický blok č. 8: Transact SQL Autor: RNDr. Jan Lánský, Ph.D.

Mimořádná účetní uzávěrka

Transkript:

Databáze Optimalizace, základní knstrukty T-SQL David Hksza http://siret.cz/hksza

Osnva Principy indexvání Optimalizace dtazů v MSSQL Základní knstrukty T-SQL prměnné pdmíněný tk prgramu cykly prcedury Cvičení

Index Struktura umžňující rychlejší vyhledávání na daném slupci/slupcích tabulky Urychlení dsažen pmcnu datvu strukturu, umžňující neprhlížet všechny záznamy v tabulce (sekvenční průchd) Na index lze nahlížet jak na rejstřík v knize, neb na telefnní seznam nevýhdy větší časvé nárky na vkládání dat (nutnst aktualizvat index) větší paměťvá nárčnst

B-strm Strm je speciální typ rientvanéh grafu, ve kterém neexistují cykly Orientvaný graf je datvá struktura bsahující knečnu mnžinu tzv. hran, kde hrany jsu uspřádané páry tzv. uzlů (vlná definice) Princip vyhledávacích strmvých struktur je takvý, že pdstrmy uzlu dělí data d vzájemně disjunktních částí, čehž lze využít při vyhledávání pdle danéh klíče např. u binárníh strmu jsu všechny hdnty v levém pdstrmě menší než v pravém Varianty B-strmu jsu nejčastěji využívané indexvé struktury v sučasných relačních DB redundantní neredundantní

Neredundantní B-strm 1. Křen má alespň 2 ptmky, pkud není listem 2. Každý uzel krmě křene má nejméně m/2 a nejvíce m ptmků 3. Všechny větve jsu stejně dluhé 4. Každý uzel má nejméně m/2 1 a nejvíce m datvých plžek 5. Data v uzlu jsu rganizvána následvně: p, k 1, p 1, d 1,, k n, p n, d n p ukazatele na ptmky k vzestupně (sestupně) uspřádané klíče d ascivaná data k i, p i, d i datvé plžky 6. Je-li U(p i ) pdstrm uzlu p i, pak platí: k U(p i 1 ): k < k i k U(p i ): k > k i

B-strm - Příklad Klíče: 25, 48, 27, 91, 35, 78, 12, 56, 38, 19 48 19 27 78 12 25 35 38 56 91

Redundantní B-strm 5. Data jsu umístěna puze v listech, neb jsu z listů dkazvána 6. Je-li U(p i ) pdstrm uzlu p i, pak platí: k U(p i 1 ): k k i k U(p i ): k > k i Pdmínka 2 zajišťuje, že každá cesta z křene d listu má délku lgm N infrmace existenci neb 2 neexistenci záznamu lze získat v lgaritmickém čase

Prhledávání B-strmu Cílem dtazu je k dtazvacímu klíči nalézt příslušná data, případně zjistit, že se takvý klíč ve strmě nevyskytuje. 1. Vstupíme d křene strmu. 2. Pkud se jedná neredundantní B-strm a dtaz je rven některému z klíčů, pak vrátíme příslušná data a prces uknčíme. V pačném případě vybereme interval d kteréh dtaz spadá a přesuneme se d křene pdstrmu pdle bdu 6 definice B- strmu. 3. Iterujeme pdle bdu 2. Pkud se žádný z klíčů v listvé úrvni neshduje s dtazem uknčíme prhledávání s infrmací, že příslušná data nejsu k dispzici. V pačném případě vrátíme pžadvaná data a uknčíme prces vyhledávání.

B-strm Insert (1) 27 Insert 91 27 25 48 25 48 91 Insert 35 27 48 35 spadne d uzlu (48,91) (35, 48, 91) prstřední klíč (48) se přesune d rdičvskéh uzlu 25 35 91 L L

B-strm Insert (2) 27 48 Insert 78,12 12 25 35 78 91 Insert 56 27 12 25 35 56 91 48 78 78 spadne d uzlu (27, 48) (27, 48, 78) prstřední klíč (48) se psune d rdičvskéh uzlu nvý křen 56 spadne d uzlu (78,91) (56, 78, 91) prstřední klíč (78) se přesune d rdičvskéh uzlu

Příklad knstrukce B- strmu (m=3) credit:wikipedia

B-strmvé indexy v DBS Hdnty slupce na kterém je pstaven index, tvří klíče uzlů indexu Data jsu ulžena puze v listech, případně jsu z listvých uzlů dkazvána (redundantní B-strm) Typicky B+-strmy, ve kterých jsu data na listvé úrvni prvázána busměrným spjvým seznamem (v případě MSSQL i na vnitřní úrvni) efektivní implementace rzsahvéh dtazu nalezení hraničníh bdu intervalu a sekvenční průchd listvu úrvní Víceslupcvé indexy přadí je určen hdntu prvníh slupce, v případě shdy rzhduje druhý slupec (atd.)

Klastrvaný vs neklastrvaný index Klastrvaný index Neklastrvaný index Indexvé stránky Datvé stránky

Vytvření a smazání indexu CREATE [UNIQUE] [CLUSTERED NONCLUSTERED] INDEX ixname ON tab(slupec1[, slupec2[, ]]) DROP INDEX ixname

Pužití indexu Index se pužije/nepužije autmaticky (pdle rzhdnutí ptimalizátru) Vytvářet indexy na čast dtazvaných slupcích Vytvářet index na cizích klíčích při JOINu při DELETE nadřazenéh klíče netřeba prjít sekvenčně tabulky s FK Index nepmůže u dtazu s nízku selektivitu (velikst výsledku ve srvnání s velikstí tabulky) Index klást na slupce, kde je předpklad diverzifikvané dmény Autmaticky vytvářené klíče PRIMARY KEY UNIQUE

Plán dtazu Způsb prvádění danéh dtazu, tj. přadí prvádění perací veducí k výsledné mnžině vrácené DB serverem uživateli Dtaz je převeden d relační algebry a následně je vytvřen strm vyhdncení dtazu

Spustí plán dtazu (samtný dtaz se nespustí) Zahrne d výsledku plán dtazu Plán dtazu

T-SQL Prcedurální rzšíření SQL Micrsft SQL Server - Transact-SQL Oracle PL/SQL Pstgres PL/pgSQL Mžnsti prměnné IF WHILE prcedury Funkce kurzry vyjímky transakce

Prměnné v T-SQL Každý výskyt prměnné uvzen @ Deklarace prměnné pmcí DECLARE datvé typy jsu splečné pr prměnné a slupce tabulek DECLARE @i INT; Přiřazení hdnty pmcí SET, SELECT SET @i = 1; SELECT @i = @i + 1; Výpis d knzli lze řešit prceduru PRINT PRINT @i Živtnst prměnné je mezena aktuální dávku (příkaz GO) DECLARE @i INT; SET @i = 1; GO PRINT @i;

Pdmínky v T-SQL IF pdmínka blk ELSE blk V rámci blku může být 1 příkaz, neb více uzavřených mezi BEGIN END V pdmínce lze využívat knstruktů známých z WHERE klauzule příkazu SELECT, tj. EXISTST, NOT NULL,. IF EXISTS(SELECT * FROM t WHERE cl1 > 10) BEGIN PRINT greater than PRINT greater than END ELSE PRINT less than

Datvý slvník v MSSQL datvý slvník bsahuje metadata ke všem bjektům v DB serveru V MSSQL přístup přes 2 schémata sys bsahuje phledy s detailními infrmacemi prakticky všech bjektech v DB INFORMATION_SCHEMA infrmace vyžadvané standardem SQL-92 méně pdrbné IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME= t ) DROP TABLE t; IF EXISTS (SELECT * FROM sys.tables WHERE name = t ) DROP TABLE t; IF OBJECT_ID( t ) IS NOT NULL DROP TABLE t;

Cykly v T-SQL WHILE pdminka {blk BREAK CONTINUE} V rámci blku může být 1 příkaz, neb více uzavřených mezi BEGIN END DECLARE @i INT; SET @i = 1; WHILE @i <= 10 BEGIN PRINT @i; SET @i = @i + 1; END

Vytvření prcedury Prcedura může zapuzdřvat prakticky libvlný T-SQL kód včetně DML příkazů CREATE PROCEDURE uspprc1 (@param1 INT, @param2 VARCHAR(30)) AS BEGIN tel_prcedury END CREATE PROCEDURE uspprc1 (@param1 INT, @param2 VARCHAR(30)) AS tel_prcedury GO

Vytvření prcedury Návratvé hdnty OUT parametry RETURN funguje puze pr datvý typ INTEGER CREATE PROCEDURE uspprc2 (@param1 INT, @param2 VARCHAR(30) OUTPUT) AS BEGIN END PRINT @param2; SET @param2 = @param1; RETURN @param1 + 1;

Vlání prcedury Prcedura je vlána pmcí příkazu EXECUTE Parametry jsu dděleny d jména prcedury mezeru a vzájemně čárku EXEC uspprc1 10, 'test' DECLARE @rv INT; DECLARE @param VARCHAR(30) = 'test'; EXEC @rv = uspprc2 5, @param OUT PRINT @rv PRINT @param