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

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

Adatbázis használat I. 5. gyakorlat

Adattípusok. Max. 2GByte

Adattípusok. Max. 2GByte

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

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

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

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

Exadata hibrid oszlopos adattömörítés automatizálása; DB 12c partition merge

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-kezelés. Harmadik előadás

Bevezetés: az SQL-be

Adatbázisok* tulajdonságai

Indexek és SQL hangolás

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

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

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

SQL*Plus. Felhasználók: SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP (dolgozó), DEPT (osztály) "közönséges" felhasználók

INDEXSTRUKTÚRÁK III.

Adatbázis Rendszerek I. 9. SQL alapok (DDL esettanulmány)

Készítette: Szabóné Nacsa Rozália

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

Adatbázis rendszerek SQL nyomkövetés

BEVEZETÉS Az objektum fogalma

Tranzakciókezelés PL/SQL-ben

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

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

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

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

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.

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

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

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

Java és web programozás

Elemi alkalmazások fejlesztése IV.

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

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

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

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

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

ADATBÁZIS RENDSZEREK I BEADANDÓ

LBRA6i integrált rendszer

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

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

SQLServer. Particionálás

Vizuális programozás gyakorlat

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

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

SQL parancsok feldolgozása

Csomag. Adatbázis-objektum Programozási eszközök gyűjteménye Két részből áll. specifikáció törzs (opcionális)

Adatbázis-kezelés, információs-rendszerek

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

Java és web programozás

Bevezetés az SQL-be. Tankönyv: Ullman-Widom: Adatbázisrendszerek Alapvetés Második, átdolgozott kiadás, Panem, 2009

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

Spatial a gyakorlatban

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

Adatbázisok-1 előadás Előadó: dr. Hajas Csilla

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

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

A könyv tartalomjegyzéke

Adatbázis Rendszerek II. 2. Ea: Gyakorló környezet

ORACLE. SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP (dolgozó), DEPT (osztály) "közönséges" felhasználók

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ázis Rendszerek II. 2. Gyakorló környezet

Adatbázisok webalkalmazásokban

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

GEIAL Kovács László. GEIAL Kovács László GEIAL Kovács László

SQL DDL-2 (aktív elemek) triggerek

Valós idejű megoldások: Realtime ODS és Database In-Memory tapasztalatok

Ügyviteli rendszerek hatékony fejlesztése Magic Xpa-val mobilos funkciókkal kiegészítve. Oktatók: Fülöp József, Smohai Ferenc, Nagy Csaba

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

Ügyviteli rendszerek hatékony fejlesztése Magic Xpa-val mobilos funkciókkal kiegészítve. Oktatók: Fülöp József, Smohai Ferenc, Nagy Csaba

5. téma XML DB. Az adatkezelés és XML kapcsolata. Miért fontos az XML használata az adatbázis kezelésben?

Adatbázis-kezelés alapjai SQL 1: DDL, DML. v: B IT MAN 92/1B IT MAN

Hozzunk ki többet abból amink van. Fehér Lajos

SQL gyakorló feladatok. 6. Adatbázis gyakorlat április 5.

Adatbázis rendszerek. Molnár Bence. Szerkesztette: Koppányi Zoltán

Oracle TTS migrációs technológia használata

ADATBÁZIS VERZIÓKÖVETÉSE: LIQUIBASE

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

Webfejlesztés 4. alkalom

A trigger egy aktualizálási művelet esetén végrehajtandó programrészletet definiál. Alakja:


Vektoros grafikát tároló adatbázisok. Katona Endre Térképi adatbázisok diasorozata alapján

Az SQL adatbázisnyelv: DML

SQLServer. SQLServer konfigurációk

SQLServer. Védelmi struktúra

IBM WebSphere Adapters 7. változat 5. alváltozat. IBM WebSphere Adapter for Oracle E-Business Suite felhasználói kézikönyv 7. változat 5.


Adatbázis Rendszerek I. 9. SQL alapok (DDL esettanulmány)

Megszorítások. AB1_06A_Megszorítások - Adatbázisok-1 EA (Hajas Csilla, ELTE IK) - J.D. Ullman elıadásai alapján

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

Multimédiás adatbázisok

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

Adatbázis használata PHP-ből

Oracle Audit Vault and Database Firewall. Gecseg Gyula Oracle DBA

BGF. 4. Mi tartozik az adatmodellek szerkezeti elemei

Táblakezelés: Open SQL Internal table. Tarcsi Ádám: Az SAP programozása 1.

Átírás:

Az indexelés újdonságai Oracle Database 12c R1 és 12c R2 Szabó Rozalinda Oracle adattárház szakértő, oktató szabo.rozalinda@gmail.com

Index tömörítés fejlődése 8.1.3-as verziótól: Basic (Prefixes) index tömörítés 12cR1-től: Advanced LOW index tömörítés 12cR2-től: Advanced HIGH index tömörítés

Basic index tömörítés Akkor érdemes alkalmazni, amikor az indexelt oszlopokban gyakrabban ismétlődnek az adatok (levél blokkon belül), mivel deduplikációs technikán alapul Meg lehet adni, hogy az indexelt oszlopok közül mennyit szeretnénk betömöríteni (az INDEX_STATS nézet OPT_CMPR_COUNT mezője mutatja hány oszlopot érdemes tömöríteni). Ha nincs megadva, akkor nem egyedi indexnél minden oszlopot, több oszlopos egyedi indexnél az utolsót kivéve minden oszlopot tömörít Ha a fenti ajánlást nem követjük (OPT_CMPR_COUNT), akkor akár nagyobb indexet is létre tudunk hozni tömörítéssel, mint tömörítés nélkül (negatív tömörítés) B-fa index esetén működik (IOT táblára is) az index levél blokkjaira Nem működik bitmap index és egy oszlopos egyedi index esetén

Advanced LOW Index tömörítés A Basic index tömörítés tovább fejlesztett változata Blokkonként dönti el, hogy Hány oszlopot tömörít (nem kell megadni!) Tömöríti-e a blokkot vagy sem (nem tömörít, ha nincs ismétlődés az index oszlopok rész csoportjára az adott blokkon belül) => Nincs negatív tömörítés Nem támogatja a bitmap indexet, az egy oszlopos egyedi kulcsot, valamint az index szervezett táblát A BASIC index tömörítéshez képest: Még hatékonyabban tömörít (minden tömörített blokk a deduplikálás szempontjából a leghatékonyabb tömörítést kapja) Az indexek még kisebbek lehetnek

Advanced HIGH Index tömörítés Az ADVANCED LOW tulajdonságai erre is vonatkoznak Minden blokknak van tömörített és tömörítetlen része Blokkonként dönti el, hogy Milyen algoritmust használ (több féle tömörítési algoritmust alkalmaz) Mely sorokat tömöríti és melyeket nem (Partial Compression) Az új sorok a tömörítetlen részbe kerülnek a blokkon belül, hogy csökkentse a művelet közben a tömörítésre fordított időt. Emellett is lassít valamennyit a DML műveleten (különösen az update-nél), ezért meg kell vizsgálni, hogy mit nyerünk a tömörítéssel egy DML intenzív táblán vagy partíción (partíciónként eltérhet a tömörítés beállítás) Egy belső batch a tömörítetlen részben lévő sorokat megpróbálja tömöríteni, ügyelve arra, hogy ne lógjanak át sorok egy másik blokkba Nem támogatja a függvény alapú indexet (és az előző slide-on felsoroltakat sem) Az ADVANCED LOW index tömörítéshez képest: Még hatékonyabb (minden index blokk a leghatékonyabb tömörítést kapja) Az indexek még kisebb helyet foglalnak el

Index tömörítés példa CREATE TABLE tmp (x number, y number,z number); CREATE INDEX tmp_idx on tmp (x,y) COMPRESS 1; CREATE INDEX tmp_idx on tmp (x,y) COMPRESS ADVANCED LOW; CREATE INDEX tmp_idx on tmp (x,y) COMPRESS ADVANCED HIGH;

Partial index (12cR1 újdonság) Csak bizonyos partíciókat indexelünk egy egész tábla indexelése helyett Lehet partial index Global index (nem particionált / particionált hash és range típus) Local index Unusuable-ben vannak azok a partíciók, melyeken ki van kapcsolva az index Truncate és rebuild után azon érintett partíciókon is lesz index, melyeken elvileg ki van kapcsolva az index, ugyanis usable-lé válnak ezen érintett partíciók is - B-fa index - Local Bitmap index (partialtól függetlenül bitmap index csak lokális lehet particionált táblán) Megszorítások: Unique index nem lehet partial Csak particionált táblán lehet partial index

Partial index példa CREATE TABLE rendeles_tetelek (ID number GENERATED BY DEFAULT AS IDENTITY, --12cR2-es feature MEGNEVEZES varchar2(40) not null, DB number not null, OSSZEG number not null, REND_DATUM date not null, STATUS number default 0 not Null ) INDEXING OFF - OFF: a partíció defaultban nem indexelt, ON: indexelt PARTITION BY RANGE (rend_datum) ( partition p_2016 values less than (to_date('2017-01-01', 'yyyy-mm-dd')), partition p_2017 values less than (to_date('2018-01-01', 'yyyy-mm-dd')) INDEXING OFF, partition p_2018 values less than (to_date('2019-01-01', 'yyyy-mm-dd')) INDEXING ON ); INDEXING ON / OFF: Tábla szinten definiálhatjuk, hogy egy partíció defaultban indexelt vagy sem Partíció szinten is meg lehet adni. Ha elhagyjuk, akkor a tábla szintű beállítást kapja ALTER TABLE rendeles_tetelek modify partition p_2016 INDEXING ON; A fenti utasítás automatikusan létrehoz egy új index partíció szegmenst local indexnél. Global index esetében rebuild-eli az indexet (INDEXING OFF esetében is van rebuild).

Partial index példa CREATE INDEX rend_tet_idx1 ON rendeles_tetelek (STATUS) INDEXING PARTIAL; CREATE BITMAP INDEX rend_tet_idx2 ON rendeles_tetelek (STATUS) LOCAL INDEXING PARTIAL INVISIBLE; CREATE INDEX rend_tet_idx3 on rendeles_tetelek (STATUS) global partition by range (STATUS) (partition p1 values less than(2), partition p2 values less than(3), partition p3 values less than(maxvalue) ) INDEXING PARTIAL INVISIBLE; INDEXING PARTIAL: Ezzel jelezzük, hogy Partial indexet szeretnénk létrehozni INVISIBLE: Láthatatlan az index INDEXING FULL: Teljes indexet épít attól függetlenül, hogy a tábla partíciója kér-e indexet 12cR1-es FEATURE: Egy oszlopot több féleképpen is indexelhetünk egyszerre, de csak egy lehet VISIBLE. Ezt a feature-t performancia tesztekre jól lehet használni, hogy ki tudjuk választani a megfelelő indexet. Normál esetben nem ajánlatos ugyanazt az oszlopot tartósan többféle módon is indexelni, hisz az index attól még karbantartódik, hogy nem látható (invisible).

Partial index adatszótár információk 1. SELECT partition_name, indexing from USER_TAB_PARTITIONS WHERE table_name='rendeles_tetelek'; PARTITION_NAME INDEXING P_2016 OFF mutatja, hogy melyik partícióra van index kérve P_2017 OFF P_2018 ON 2. SELECT index_name, partition_name, status from USER_IND_PARTITIONS WHERE index_name like 'REND_TET_IDX%'; INDEX_NAME PARTITION_NAME STATUS REND_TET_IDX2 P_2016 UNUSABLE mutatja az index partíciók státuszát REND_TET_IDX2 P_2017 UNUSABLE REND_TET_IDX2 P_2018 USABLE REND_TET_IDX3 P1 USABLE REND_TET_IDX3 P2 USABLE REND_TET_IDX3 P3 USABLE

Online tábla statisztika (12cR1 feature) Online tábla statisztika készül automatikusan az alábbi esetekben: CTAS használatakor (Create table as select.) Append Insert esetében (Insert /*+ append */ into select..), amennyiben előtte üres a tábla SELECT last_analyzed, num_rows from USER_TABLES WHERE table_name='rendeles_tetelek'; LAST_ANALYZED NUM_ROWS --itt még nincs statisztika a táblán - - INSERT /*+ append */ into rendeles_tetelek (megnevezes,db,osszeg,rend_datum) SELECT 'PIZZA ' rownum,1,1000,to_date(2018 '0401','yyyymmdd') from dual connect by level <=1000; LAST_ANALYZED NUM_ROWS 03-APR-18 1000 Ebben az esetben az indexre nem készül statisztika automatikusan, valamint a partíciókra / alpartíciókra sem.

További index újdonságok DROP, TRUNCATE PARTITION Aszinkron globál index karbantartás (12cR1) Láthatatlan (invisible) oszlop indexelése (12cR1) Indexelhető adattípusok köre bővítve lett (12cR1) Online DDL műveletek (12cR1) ALTER INDEX [VISIBLE INVISIBLE] ONLINE ALTER INDEX UNUSABLE ONLINE SET UNUSED COLUMN ONLINE DROP INDEX ONLINE DROP CONSTRAINT ONLINE Index használat követése (12cR2) V$INDEX_USAGE_INFO DBA_INDEX_USAGE Indexet is érintő újdonságok: Nem particionált tábla particionálása (index is particionált lesz) (12cR2) Objektumok neve max. 128 hosszú lehet (indexé is) (12cR2)

Fontosabb linkek Fontosabb new feature dokumentációk: https://docs.oracle.com/database/122/newft/title.htm https://docs.oracle.com/database/121/newft/chapter12101.htm#newft002 https://docs.oracle.com/database/121/newft/chapter12102.htm#newft003 18c online adatbázis elérhetősége: https://livesql.oracle.com

Köszönöm a figyelmet!