Az adatok tárolása. Indexek. BME-AAIT 2015 Informatika 2 1

Hasonló dokumentumok
Fájlszervezés. Adatbázisok tervezése, megvalósítása és menedzselése

Adatbázis kezelés Delphiben. SQL lekérdezések

Adatbázisok I. Definíció: DDL: - objektum létrehozás CREATE - objektum megszüntetés DROP - objektum módosítás ALTER

TABLE ACCESS FULL HASH CLUSTER BY INDEX ROWID BY USER ROWID BY GLOBAL INDEX ROWID BY LOCAL INDEX ROWID

Adatbázis, adatbázis-kezelő

Lekérdezések feldolgozása és optimalizálása

Adatbázis-kezelés. Harmadik előadás

Adatbázis-lekérdezés. Az SQL nyelv. Makány György

8. Gyakorlat SQL. DDL (Data Definition Language) adatdefiníciós nyelv utasításai:

BEVEZETÉS Az objektum fogalma

Adatbázis rendszerek SQL nyomkövetés

SQL ALAPOK. Bevezetés A MYSQL szintaxisa Táblák, adatok kezelésének alapjai

Adatbázis Rendszerek II. 8. Gyakorló környezet

Adatbázis Rendszerek I. 10. SQL alapok (DML esettanulmány)

Alapvető fizikai tárolási szerkezetek, indexek, B-fák

Indexek és SQL hangolás

Marton József BME-TMIT. Adatbázisok VITMAB november 11.

BGF. 4. Mi tartozik az adatmodellek szerkezeti elemei

Az SQL nyelv Structured Query Language (Struktúrált lekérdező nyelv)

ADATBÁZIS-KEZELÉS FÉLÉVES FELADAT

SQL PÉLDATÁR. készült a PTE TTK Iskolai informatika III. kurzus teljesítésére

INFORMATIKA ÁGAZATI ALKALMAZÁSAI. Az Agrármérnöki MSc szak tananyagfejlesztése TÁMOP /1/A

Nézetek és indexek. AB1_06C_Nézetek_Indexek - Adatbázisok-1 EA (Hajas Csilla, ELTE IK) - J.D. Ullman elıadásai alapján

SELECT DISTINCT deptno FROM emp; (distinct) SELECT STATEMENT HASH UNIQUE TABLE ACCESS FULL EMP

Adatbázisműveletek és lekérdezésoptimalizálás

Ellenőrző kérdések. 36. Ha t szintű indexet használunk, mennyi a keresési költség blokkműveletek számában mérve? (1 pont) log 2 (B(I (t) )) + t

Adatbázisok elmélete 9. előadás

Adatbázis-kezelő rendszerek. dr. Siki Zoltán

A gyakorlat során MySQL adatbázis szerver és a böngészőben futó phpmyadmin használata javasolt. A gyakorlat során a következőket fogjuk gyakorolni:

Adatbázisok. 8. gyakorlat. SQL: CREATE TABLE, aktualizálás (INSERT, UPDATE, DELETE), SELECT október október 26. Adatbázisok 1 / 17

Adatbázis rendszerek Gy: Az adattárolás fejlődése

Tartalomjegyzék. Tartalomjegyzék 1. Az SQL nyelv 1 Az SQL DDL alapjai 2

Adatbázisok elmélete 9. előadás

AB1 ZH mintafeladatok. 6. Minősítse az állításokat! I-igaz, H-hamis

Gyakorlás: Hozzunk létre egy Alkalmazottak táblát AZO szám, Részleg szöveg, Munkakör szöveg és BelépésDátuma dátum típussal.

Adatbázis rendszerek. dr. Siki Zoltán

ADATBÁZISOK gyakorlat: SQL 2. rész SELECT

LBRA6i integrált rendszer

Adatbáziskezelés. Indexek, normalizálás NZS 1

Nyíregyházi Egyetem Matematika és Informatika Intézete. Fájl rendszer

SQL. Táblák összekapcsolása lekérdezéskor Aliasok Allekérdezések Nézettáblák

MS ACCESS 2010 ADATBÁZIS-KEZELÉS ELMÉLET SZE INFORMATIKAI KÉPZÉS 1

Dr. Pál László, Sapientia EMTE, Csíkszereda WEB PROGRAMOZÁS 4.ELŐADÁS. Adatbázis alapú alkalmazások készítése PHP-ben

Adatbázisok elmélete 10. előadás

A gyakorlat során MySQL adatbázis szerver és a böngészőben futó phpmyadmin használata javasolt. A gyakorlat során a következőket fogjuk gyakorolni:

Adatbáziskezelı-szerver SQL. Relációs adatbázis-kezelık. Relációs adatszerkezet. Házi feladat

ADATBÁZIS-KEZELÉS - BEVEZETŐ - Tarcsi Ádám, ade@inf.elte.hu

Adattípusok. Max. 2GByte

A relációs adatbáziskezelés szabványos nyelve Két fő csoportba sorolhatók az utasításai

17. A 2-3 fák és B-fák. 2-3 fák

Adattípusok. Max. 2GByte

SQL- Utasítások csoportosítása Definíció: DDL: - objektum létrehozás CREATE - objektum megszüntetés DROP - objektum módosítás ALTER

Adatbáziskezelő-szerver. Relációs adatbázis-kezelők SQL. Házi feladat. Relációs adatszerkezet

Indexek, tömörítés és más állatfajták

B I T M A N B I v: T M A N

Nem klaszterezett index. Klaszterezett index. Beágyazott oszlopok. Index kitöltési faktor. Indexek tulajdonságai

Webfejlesztés 4. alkalom

AutoCAD MAP DWG mapobject TOPOBASE konvertáló program dokumentáció

Célkitűzések Az Oracle10 g felépítésének, használatának alapszíntű megismerése

Adatbázis-kezelés Access XP-vel. Tanmenet

Adatbázisok* tulajdonságai

Algoritmuselmélet. 2-3 fák. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem. 8.

SQL DDL-1: táblák és megszorítások

SQL jogosultság-kezelés. Privilégiumok Grant és Revoke Grant Diagrammok

Óravázlat. az ECDL oktatócsomaghoz. 5. modul. Adatbáziskezelés. Krea Kft Budapest, Szőlő u 21. Tel/fax: / krea@krea.

elektronikus adattárolást memóriacím

Adatbázisok. 2. gyakorlat SQL november november 12. Adatbázisok 1 / 31

RELÁCIÓS LEKÉRDEZÉSEK OPTIMALIZÁLÁSA. Marton József november BME TMIT

Nem klaszterezett index. Beágyazott oszlopok. Klaszterezett index. Indexek tulajdonságai. Index kitöltési faktor

Választó lekérdezés létrehozása

Tájékoztató. Használható segédeszköz: -

Adatmodellezés. 1. Fogalmi modell

SQL haladó. Külső összekapcsolások, Csoportosítás/Összesítés, Beszúrás/Törlés/Módosítás, Táblák létrehozása/kulcs megszorítások

ALAPOK. 0 és 255 közé eső számértékek tárolására. Számértékek, például távolságok, pontszámok, darabszámok.

Adatbázisok elmélete

Gazdasági informatika II (SZIE GTK GVAM 1. évfolyam) 2009/2010. tanév 2. félév

Bevezetés: az SQL-be

STRUCTURED QUERY LANGUAGE(SQL) - ALAPOK

Indexek és Teljesítményoptimalizálás

5. Gyakorlat. 5.1 Hálós adatbázis modell műveleti része. NDQL, hálós lekérdező nyelv:

BEVEZETÉS Az objektum fogalma

Adatbázisok elmélete

Relációsémák létrehozása SQL nyelvben

Csima Judit szeptember 6.

Adatbázisok. 8. gyakorlat. SQL: CREATE TABLE, aktualizálás (INSERT, UPDATE, DELETE) október október 22. Adatbázisok 1 / 14

Adatbázis-kezelés alapok Adatbázisok című tárgyhoz, ismétlés kapcsán

Access XP alapokon Tartalomjegyzék

ADATBÁZISKEZELÉS ADATBÁZIS

Informatika szigorlat 9-es tétel: Az adatbázis-kezelő rendszerek fogalmai

Informatikai képzés Információs rendszerek dr. Hajas Csilla (ELTE IK)

Az indexelés újdonságai Oracle Database 12c R1 és 12c R2

Adatbázis rendszerek tervezése

SQL. 1.rész. 1.elıadás // Adatbázisok-1 elıadás // Ullman-Widom (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 1

SQL parancsok feldolgozása

Tábla létrehozása: CREATE TABLE alma( ID INT( 3 ) NOT NULL PRIMARY KEY, Leiras VARCHAR( 100 ) );

2 Access 2016 zsebkönyv

Relációs algebra áttekintés és egy táblára vonatkozó lekérdezések

SQLServer. DB Recovery modes

Informatikai alapismeretek Földtudományi BSC számára

Az SQL adatbázisnyelv: DML

Átírás:

Az adatok tárolása Indexek BME-AAIT 2015 Informatika 2 1

Memória hierarchia Cache Néhány MB Néhány ns Rendszermemória ~GB 10-100 ns Másodlagos tár ~TB ~10ms Harmadlagos tár ~PB s-min Virtuális memória Cache Rendszermemória Lemez Másodlagos tár Fájl rendszer Harmadlagos tár BME-AAIT 2015 Informatika 2 2

Adatok mozgatása a szintek között Blokkok Írás/olvasás egysége a lemezen (4-64kb) => A közösen használt adatokat célszerű egy blokkba tenni Harmadlagos tár Pl szalagos meghajtó: amire tipikusan egyszerre van szükség, azt egy egységre tesszük BME-AAIT 2015 Informatika 2 3

Szekvenciális keresés Szekvenciális keresés (sequential/table scan) A kérdéses reláció valamennyi rekordját felolvassa és megvizsgálja Az első rekordtól kezdve, szekvenciálisan az utolsó beolvasásáig Költséges I/O műveletek lassúak Feleslegesen foglalja a rendszermemóriát Tányér 1 Tányér 2 Tányér 3 BME-AAIT 2015 Informatika 2 4

Mikor jó a szekvenciális keresés? Nagyon kis méretű tábláknál Néhány blokkban elfér, minimális az I/O költség Ha nagyon sok rekord érintett Az egész táblát fel kell olvasni egyébként is Pl aggregálás szűrés nélkül SELECT SUM(Value) FROM Invoices A szűrőfeltételek nem nagyon korlátozóak Pl alacsony kardinalitású oszlopok (ember neme, családi állapota...) Olcsóbb, mint közvetlenül megcímezni minden egyes rekordot BME-AAIT 2015 Informatika 2 5

Mikor nem jó a szekvenciális keresés? A szűrőfeltétel szelktivitása nagy Csak néhány rekord felel meg a feltételnek (pl < 5%) Minél kevesebb, annál pazarlóbb A rekordok elszórtan helyezkednek el Pl SELECT * FROM Alkalmazott WHERE SzigSzam= AA123456 0 vagy egy rekord felelhet csak meg SELECT * FROM Alkalmazott WHERE TelMellek= 1234 Legfeljebb néhány alkalmazott osztozik egyszerre ugyanazon a telefonon BME-AAIT 2015 Informatika 2 6

Mikor nem jó a szekvenciális keresés? 2 Join művelet két reláció között Legalább az egyik reláció nagy Egyébként kevés I/O művelettel betölthetők a memóriába Csak néhány rekordban illeszkednek Lépésszám O(n*m) Pl SELECT * FROM Megrendeles INNER JOIN MegrendelesTetel ON Megrendeles.Id=MegrendelesId WHERE MegrendelesTetel Megrendeles BME-AAIT 2015 Informatika 2 7

Indexek Ötlet: készítsünk egy tartalomjegyzéket (indexet) a reláció egy (vagy több) oszlopához Egy érték => Illeszkedő rekordok (u.a. a mező, u.a. az érték) Index Tábla Sokkal kisebb helyen elfér, gyorsan betölthető A lemezműveletek dominálnak! Végezzük el a szűrést ebben BME-AAIT 2015 Informatika 2 8

Indexek 2 SELECT * FROM Alkalmazott WHERE SzigSzam= AA123456 Szekvenciális keresés helyett elég az indexet végignézni, majd az általa mutatott rekordot visszaadni (1-1 megfeleltetés). SzigSzam Index Alkalmazottak Valójában az index még csak nem is soros, hanem fa szerkezetű, még gyorsabb a keresés (lsd később) BME-AAIT 2015 Informatika 2 9

Indexek 3 Join: Keresés az indexben SELECT * FROM Megrendeles INNER JOIN MegrendelesTetel ON Megrendeles.Id=MegrendelesId WHERE Datum > 2014 Szekvenciális keresés a Megrendelések között, majd index alapján a tételek között O(n+m) (n*m helyett) MegrendelésTétel INDEX(MegrendelésId) Megrendelés BME-AAIT 2015 Informatika 2 10

Indexek Példa Adott 2 tábla t1: 100 sor és t2: 100.000 sor Mindkettőben unique index van a joinolt mezőkön (col1, col2) Feltételezzünk 1 rekord/blokk helyfoglalást (1 olvasás / rekord) t1: tfh. egy rekord: 2 index + 1 rekord olvasás => 3 olvasás t2: tfh. egy rekord: 3 index + 1 rekord olvasás => 4 olvasás Lekérdezés: SELECT * FROM t1, t2 where t1.col1=t2.col2 Szükséges I/O műveletek száma (lekérdezés optimalizálótól függően) Szekvenciális olvasás mindkét táblában, indexek használata nélkül 100*100.000 = 10.000.000 olvasás szekvenciális olvasás t2-ben, majd index alapján joinolás t1-hez 100.000 olvasás t2-hez, majd 100.000*3 olvasás a t1-ben való kereséshez 400.000 olvasás szekvenciális olvasás t1-ben, majd index alapján joinolás t2-höz 100 olvasás a szekvenciális olvasáshoz, 100*4 olvasás a t2-ben való kereséshez 500 olvasás BME-AAIT 2015 Informatika 2 11

Indexek SQL Nem része az SQL szabványnak CREATE INDEX [indexnév] ON [táblanév]([oszlopnevek]) CREATE INDEX idx_megrendelesid ON MegrendelesTetel(MegrendelesId) CREATE INDEX idx_ev ON Megrendeles(Ev) CREATE INDEX idx_vevo ON Vevo(Varos, Cim) Varos+Cim attribútumra lehet hatékonyan keresni Általában a két mező konkatenáltja Hatékonyan kereshető az első attribútum alapján is ALTER TABLE [táblanév] DROP INDEX [indexnév] BME-AAIT 2015 Informatika 2 12

Indexek megválasztása Ellentétes eredmények Gyorsítja a lekérdezéseket, amelyek használni tudják Szűrőfeltétel az indexált mezőn Joinok amelyek használják ezeket a mezőket Lassítja a módosítást, beszúrást, törlést Módosítani kell az indexstruktúrát is BME-AAIT 2015 Informatika 2 13

Indexek megválasztása 2 Tipikus indexek Elsődleges kulcson Sok lekérdezés használja, legtöbb join kulcs alapján történik DBMS-ek általában automatikusan létrehozzák Egy lekérdezés egy kulcs érték alapján legfeljebb egy rekordot ad Legfeljebb egy blokkot kell beolvasni + néhány blokkot az index beolvasásához (ha nincs a memóriában) Külső kulcs Hatékony join (törlésnél is) Egyedi értékek Így biztosított az egyediség a tábla végigolvasása nélkül (auto) Ha majdnem kulcs Viszonylag kevés rekord rendelkezik egyező értékkel Vásárló neve Bár az összes találat lehet különböző blokkban is, a reláció teljes méretéhez képes viszonylag kevés blokk érintett BME-AAIT 2015 Informatika 2 14

Indexek megválasztása 3 Adatok módosítása Az összes érintett indexet aktuálizálni kell Be kell olvasni, ki kell írni őket DE: a legtöbb módosító utasítás használ szelekciót Az indexekkel nagyságrendekkel gyorsítható Ha nem kicsi a szűrő mező szelektivitása DELETE FROM Vevo WHERE Id = 5 => nagy a szelektivitás DELETE FROM Vevo WHERE Varos= Budapest => kicsi a szelektivitás, nagyon sok rekord érintett Figyelembe kell venni a várható felhasználást Lekérdezés/módosítás aránya Sokszor automatikus támogatás a log alapján BME-AAIT 2015 Informatika 2 15