pnyarady@gmail.com http://oraoptimization.blogspot.com/ Sárecz Lajos Oracle Hungary kft. lajos.sarecz@oracle.com Oracle Adatbázisok Optimalizálása



Hasonló dokumentumok
Az Oracle rendszer komponensei

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

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

Indexek és SQL hangolás

Adatbázis, adatbázis-kezelő

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

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

Féléves feladat. Vezetéknév Keresztnév

Önálló laboratórium 7. félév

DAT adatcserefájl AutoCAD MAP DWG mapobject konvertáló program dokumentáció

elektronikus adattárolást memóriacím

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

Operációs rendszerek. UNIX/Linux fájlrendszerek

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

Programozás I gyakorlat

BaBér. Bérügyviteli rendszer. Telepítési segédlet 2014.

Adatbázis rendszerek. dr. Siki Zoltán

OE-NIK 2010/11 ősz OE-NIK ősz

A hierarchikus adatbázis struktúra jellemzői

Vectory telepítési útmutató

Döbrönte Zoltán. Data Vault alapú adattárház - Fél óra alatt. DMS Consulting Kft.

Adatbázis alapú rendszerek (2015 tavaszi félév) Előadás

Ismerkedjünk tovább a számítógéppel. Alaplap és a processzeor

Fogalmak: Adatbázis Tábla Adatbázis sorai: Adatbázis oszlopai azonosító mező, egyedi kulcs Lekérdezések Jelentés Adattípusok: Szöveg Feljegyzés Szám

LBRA6i integrált rendszer

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:

Operációs rendszerek. Az NT folyamatok kezelése

Microsoft SQL Server telepítése

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

A Java EE 5 plattform

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

Hálózati operációs rendszerek II.

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

Az ErdaGIS térinformatikai keretrendszer

RADPLAN. A Mentum Planet, Mentum Ellipse az InfoVista bejegyzett védjegye, minden jog fenntartva!

BaBér bérügyviteli rendszer telepítési segédlete év

Dr. Sipos Marianna ZMNE BJKMK

Önálló laboratórium beszámoló

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

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

Adattárház kialakítása a Szövetkezet Integrációban, UML eszközökkel. Németh Rajmund Vezető BI Szakértő március 28.

Az iskolai rendszerű képzésben az összefüggő szakmai gyakorlat időtartama. 10. évfolyam Adatbázis- és szoftverfejlesztés gyakorlat 50 óra

Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem

Adatbáziskezelés Delphi 5 alatt. Bese Antal

ÁLTALÁNOS RENDSZERTERV

Felhasználói leírás a DimNAV Server segédprogramhoz ( )

Az adatbázisrendszerek világa

Operációs rendszerek III.

Adatbáziskezelés alapjai. jegyzet

1. Mi a fejállományok szerepe C és C++ nyelvben és hogyan használjuk őket? 2. Milyen alapvető változókat használhatunk a C és C++ nyelvben?

Számítógép felépítése

Egyetemi könyvtári nyilvántartó rendszer

GALILEOS decemberi frissítés. Magyar

Adatbázisok és adattárházak az információs rendszerek adatkezelői

Programozás alapjai. 10. előadás

Az adatbáziskezelés alapjai

ADATBÁZISOK ADATBÁZIS-KEZELŐ RENDSZEREK. Debrenti Attila

Operációs Rendszerek II. Első verzió: 2009/2010. I. szemeszter Ez a verzió: 2009/2010. II. szemeszter

Oracle E-Business Suite üzemeltetés a Rába Járműipari Holding Nyrt.-nél

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

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

ADATBÁZIS-KEZELÉS. Adatbázis-kezelő rendszerek

Iroda DEMO telepítési útmutató

Programozási nyelvek Java

Az adatok a vállalat kulcsfontosságú erőforrásai. Az információs rendszer adatai kezelésének két alapvető változata:

Adatbázis alapú rendszerek

SZAKDOLGOZAT ÓBUDAI EGYETEM. Neumann János Informatikai kar Alba Regia Egyetemi Központ

Egyetemi könyvtári nyilvántartó rendszer

Avasi Gimnázium. Operációs rendszerek

Adatbázis alapú rendszerek (2016 tavaszi félév) Előadás

Kedvenc Linkek a témakörben: MySQL mindenkinek Vizuális adatbázis tervezés

Adatbázisok elmélete

Oracle Audit Vault and Database Firewall. Gecseg Gyula Oracle DBA

Utolsó módosítás:

TSIMMIS egy lekérdezés centrikus megközelítés. TSIMMIS célok, technikák, megoldások TSIMMIS korlátai További lehetségek

MÉRY Android Alkalmazás

Magic xpi 4.0 vadonatúj Architektúrája Gigaspaces alapokon

ALKALMAZÁS KERETRENDSZER

Hálózati operációs rendszerek II. Novell Netware 5.1 Hálózati nyomtatás

Intelligens közlekedési rendszerek (ITS)

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

Teljesítmény Mérés. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Teljesítmény Mérés / 20

Interaktív tábla szoftver: Lynx 4.x és Wordwall 2.x

A szürke háttérrel jelölt fejezet/alfejezet szövege a CD-mellékleten található. A CD-melléklet használata. 1. Elméleti áttekintés 1

Amit mindig is tudni akartál a Real Application Testing-ről. Földi Tamás Starschema Kft.

Leolvasói rendszer kialakításának koncepciója ipari mobil eszközökkel (ipari PDA-val)

Az Oracle adatbázis szerkezete

Védené értékes adatait, de még nem tudja hogyan?

A TANTÁRGY ADATLAPJA

Szathmáry László Debreceni Egyetem Informatikai Kar

Operációs rendszerek. Az NT memóriakezelése

Adattárház tiszta alapokon Oracle Day, Budapest, november 8.

AWK programozás, minták, vezérlési szerkezetek

Windows hálózati adminisztráció

Objektumorientált programozás Pál László. Sapientia EMTE, Csíkszereda, 2014/2015

Inczédy György Középiskola, Szakiskola és Kollégium Nyíregyháza, Árok u. 53. TANMENET. Informatika szakmacsoport

Enterprise User Security

Adatmodellezés. 1. Fogalmi modell

Átírás:

1. Személyes adatok Név: Neptun kód: E-mail: Blog oldal: Konzulensek: Nyárády Péter QJA31E pnyarady@gmail.com http://oraoptimization.blogspot.com/ Kardkovács Zsolt BME kardkovacs@tmit.bme.hu Marton József BME marton@db.bme.hu Sárecz Lajos Oracle Hungary kft. lajos.sarecz@oracle.com Feladat címe: Feladat leírása: Oracle Adatbázisok Optimalizálása Irodalomfeldolgozás Tanulmány: http://members.chello.hu/m.nyarady/blog/beszamolok/7felev/tanulmany_qja31e.pdf Tartalomjegyzék 1. Személyes adatok 1 2. Bevezetés 2 2.1. Elméleti bevezet................................... 2 2.2. A munka el zményei és kiindulási állapota..................... 3 3. Az elvégzett munka 3 3.1. Struktúra....................................... 3 3.2. Sémaobjektumok................................... 4 3.3. Adatszótár....................................... 4 3.4. Memória........................................ 5 3.5. Processzek....................................... 6 4. A végállapot ismertetése 6 1

2. Bevezetés 2.1. Elméleti bevezet Az optimalizálás témaköre egy biztos, alapos háttértudást igényl szakterület, melyhez számos területen szerzett elméleti alapok szükségesek. Óriási mennyiség szakirodalom található az Interneten, illetve az Oracle oldaláról 1 is rengeteg fórum és blog oldal érhet el, melyek a téma különböz területeit részletezik. Az adatbázis teljesítményét növel technikák megismerése el tt feltétlen fontos megérteni, hogy egy lekérdezés végrehajtása során mi játszódik le a háttérben. Ehhez az 1. ábra nyújt segítséget. 1. ábra. Lekérdezés végrehajtásának lépései [1]. A nyilak a transzformált lekérdezés áramlását jelölik az egyes lépések között. Az utasítás el ször egy szintaktikai elemzésen (parse) esik át, majd egy végrehajtási tervet (QEP query execution plan) készítünk a lekérdezéshez. Végül végrehajtjuk (execution) magát a lekérdezést, s visszaadjuk az eredményét. Az Oracle rendelkezik egy beépített optimizerrel, amely a végrehajtási terv kiszámításánál játszik fontos szerepet. Az optimizier kezdeti verzióiban a végrehajtási terv számítását szabály-alapú optimizáció (Rule Based Optimization, RBO [2]) segítette (Oracle 6-os verziójától). Ez gyakorlatilag egy statikus szabályrendszer, ami alapján az optimizer eldönti, hogy a táblákat milyen sorrendben illessze össze, milyen indexeket használjon, hogyan kérdezze le az adatokat, stb.. A szabályrendszer statikus mivolta miatt azonban nem m ködhet dinamikusan jól egy rendszer. Ennek folyamatos orvoslása miatt a szabályok száma az évek során hatalmasra n tt, ezért az RBO-t fokozatosan felváltotta a költség-alapú optimizáció (Cost Based Optimization, CBO) az Oracle 10g-t l az RBO mód használata már nem is engedélyezett. A CBO már egy jóval dinamikusabb módszer. Az összes rendelkezésére álló adat (könyvtárak, statisztikák, hisztogramok, paraméter beállítások) alapján próbálja a legoptimálisabb végrehajtási tervet kiszámítani. Gyakran el fordulhat azonban olyan eset, hogy az optimizer sem a legjobb végrehajtási tervet készíti el. Ekkor kerülnek el térbe az ún. SQL hintek, amelyekkel rákényszeríthetjük az adatbázist arra, hogy az általunk javasolt optimalizálási eljárást, tábla hozzáférést és/vagy illesztési sorrendet és metódust használja. 1 http://otn.oracle.com/ 2

Az SQL hintek által biztosított beavatkozásán kívül azonban számos egyéb lehet ség van arra, hogy növeljük az adatbázisunk teljesítményét. Ilyenek lehet például az adatbázis sémájának átkongurálása, indexek és materializált nézetek létrehozása a frekventáltan hozzáfért adatokra, valamint az Oracle összetett memóriarendszerének a nomhangolása. 2.2. A munka el zményei és kiindulási állapota A félév elején még gyakorlatilag semmilyen, a témához közel álló tudással nem rendelkeztem, ebb l kifolyólag nagy mennyiség irodalomfeldolgozás várt rám. Az adatbázis hatékony hangolásához elengedhetetlen, hogy az ember mélységében ismerje az adatbázis felépítését és m ködését. A féléves irodalomfeldolgozásom ezért f ként az Oracle Library - Concepts fejezetére [3] korlátozódott. Ezen felül még több, adatbázis programozással és SQL tuningolással foglalkozó, igencsak terjedelmes ebookokat dolgoztam fel. A kiindulási állapothoz hozzátartozik továbbá, hogy a (2007 szi) félév kezdetén jött ki az Oracle Database legújabb verziója, a 11g. Kezdetben ehhez csak Linux-os változat létezett, így Windows-os felhasználó lévén komoly id t és munkát kellett fordítanom a rendszer és az adatbázis telepítésére is. Ez utóbbi egyébként koránt sem olyan egyszer feladat, mint amire az ember számítana. Számos apró kis buktatója lehet a telepítésnek, ami hosszas keresést és utána olvasást igényelhet. Ennek megkönnyítése érdekében elérhet a neten néhány színvonalas video is 2, amelyek Oracle adatbázis telepítést mutatnak be lépésr l lépésre, s megválaszolják a felmerül kérdéseket, döntéshelyzeteket. 3. Az elvégzett munka A 7. szemeszteres önálló laboratóriumban el írt feladat az irodalomfeldogozás, így az én félévemet is f ként ez képezte. Fontos volt alaposan megismernem az Oracle adatbázisok felépítését és m ködését, amit az Oracle Library - Concepts fejezete [3] alapján végeztem. Az elvégzett munkáról egy 50 oldalas tanulmány [4] készült, melynek elérhet sége a borítón is fel van tüntetve itt csak egy rövid áttekintést adnék az érintett területekr l. 3.1. Struktúra Az Oracle Database logikai felépítése alapvet en három szintb l áll. A legkisebb egységet az adatblokkok képezik, amik egy el re meghatározott, x pár bytenyi részt jelentenek. A zikailag folytonosan elhelyezked, valamilyen tárolási célból el re lefoglalt adatblokkok képezik a következ szintet, az extenteket. Ha egy extent betelik, de szükség van további szabad helyre, akkor új extentet kell foglalnunk. Az így keletkez, azonos célra foglalt, s azonos táblateren belül elhelyezked extentek alkotják a harmadik hierarchia szintet, a szegmenseket. A tanulmány részletesen kifejti, hogy hogyan lehet az adatblokkok írásának engedélyezését szabályozni (pl. PCTFREE, PCTUSED paraméterekkel), valamint hogy hogyan m ködik az extentek és szegmensek területfoglalásai és -felszabadításai. A logikai adattárolás legnagyobb egységei a táblaterek, míg a zikai tárolás adatfájlok formájában történik. A táblaterek menedzselésére két mód kínálkozik: a lokálisan vezérelt táblaterek egy bitmap alapján m ködnek, míg a könyvtár vezérelt táblaterek az adatszótárban tartják nyilván a lefoglalt területeket. Egy adatfájl egyszerre csak egy táblatérhez tartozhat, 2 http://www.youtube.com/watch?v=chzv4lznvhc 3

azonban egy táblatér akár több adatfájlban is tárolhatja az adatait. Illetve léteznek ún. ideiglenes táblaterek és adatfájlok is, melyek a számítások gyorsítását hivatottak el segíteni. 3.2. Sémaobjektumok Sémának nevezzük az egy felhasználóhoz tartozó logikai adatstruktúrák (séma objektumok) összességét. Ezek az objektumok nem feleltethet ek meg egy az egyben zikai diszken tárolt fájloknak. Logikailag egy objektum egy tablespacen belül helyezkedik el, zikailag azonban tárolódhat akár több dataleban is. A sémák és tablespacek között nincs semmilyen összefüggés: egy tablespace tartalmazhat objektumokat több különböz sémából, illetve egy séma objektumai is tárolódhatnak különböz tablespacekben. Számos sémaobjektum létezik, melyek közül optimalizálási szempontból az indexek és a materializált nézetek a legfontosabbak, így itt csak ezekr l írnék röviden. Az indexek opcionális, táblákhoz és klaszterekhez rendelhet struktúrák. Indexeket lehet egy vagy több oszlophoz rendelni, melyek segítségével egy SQL utasítás esetén gyorsabban megtalálja a keresett információt az adatbázis - ezáltal a helyesen használt indexek jelentik az I/O m veletek csökkentésének f forrását. A következ index-sémák használhatóak: B-fa index, B-fa klaszter index, Hash klaszter index, Reverse key (inverz kulcs) index, Bitmap index, Bitmap join index. Az indexek használata automatikus, csak a létrehozásukkal és az esetleges törlésükkel kell foglalkozni. Továbbá az optimalizáló (optimizer) akár felhasználhat egy már létez indexet egy új index létrehozására, ami jóval gyorsabb index-építést eredményezhet. Az Oracle adatbázis B*-fákat használ az indexek tárolására. Ezáltal a szekvenciális keresés átlagos n/2 idejét lecsökkenti O(log(n))-re. A materializált nézeteket adatok összegzésére, számítására, replikázására és szétosztására használhatjuk. Ebb l kifolyólag f ként adattárházaknál, döntéstámogató rendszereknél és elosztott vagy mobil számításoknál használjuk ket. Az optimizer automatikusan felismeri, hogy mikor lehet egy kérést materializált nézet segítségével kielégíteni, s automatikusan behelyettesíti azt a lekérdezésbe. Így nem szükséges közvetlen a táblákból vagy nézetekb l kinyerni a kívánt adatokat, amivel növelhetjük a teljesítményt. 3.3. Adatszótár Az adatszótár (data dictionary) az Oracle adatbázis egyik legfontosabb részét képezi. A központi, csak olvasható referencia táblák és nézetek tartoznak hozzá, melyekben az adatbázisról tároljuk a következ lényeges információkat: séma objektumok deníciója séma objektumok számára allokált és felhasznált területek oszlopok alapértelmezett értékei integritás kényszerekr l információk az adatbázis felhasználóinak nevei az egyes felhasználókhoz tartozó jogok és szerepek naplózási információk 4

egyéb általános adatbázis információk A SYSTEM tabletérben tároljuk, ami mindig online, ezért ezek az információk mindig elérhet ek. Szerkezetileg kétféle objektumot tartalmaz: 1. Alap táblák (Base tables): az adatbázisról tartalmaznak információkat. Csak az Oracle adatbázis írhatja és olvashatja ket. Az adatokat titkosított formában tárolják. 2. Felhasználói nézetek (User-Accessible Views): nézetek, melyek összegzik és a felhasználók számára emészthet formában megjelenítik az Alap táblákban tárolt információkat. A legtöbb felhasználó ezekhez a nézetekhez férhet hozzá. 3.4. Memória Az Oracle adatbázis memóriájában a következ komponenseket tároljuk: programkód információ a csatlakozott active és inactive sessionökr l programvégrehajtás közben szükséges információk, állapotok az adatbázis processzei között megosztott információk (pl. zárak) cachelt adatok, mint pl. adatblokkok és redo log bejegyzések, amik ugyanakkor természetesen tárolva vannak a merevlemezeken is 2. ábra. Az Oracle Adatbázis memóriájának struktúrája [5]. A memória struktúrája (2. ábra) alapvet en három része osztható: Szoftver kód területek: az éppen futó vagy futtatható kódokat tartalmazza. Általában a felhasználói programoktól eltér helyen van. 5

System Global Area (SGA): az összes szerver- és háttérfolyamat (processz) között megosztott memória struktúrák (SGA komponensek lásd fenti ábra) csoportja. Adat és vezérlési információkat tartalmaz. Program Global Area (PGA): egy bizonyos szerver processzhez tartozó adat és vezérlési információkat tartalmazó memóriaterület, mely a szerverprocessz indításakor jön létre, s csak fér hozzá. Minden egyes szerverprocesszhez (és háttérfolyamathoz) tartozik egy-egy PGA. Az adatbázis inicializálási paramétereinél megadott PGA méret az összes PGA együttes méretére, s nem az egyes példányokra vonatkozik. 3.5. Processzek Minden Oracle adatbázishoz csatlakozott felhasználónak két kód-modult kell futtatnia ahhoz, hogy hozzáférhessen egy adatbázis példányhoz. Ezek: Valamilyen adatbázis alkalmazás (pl. el fordító program) vagy Oracle eszköz (pl. SQL*Plus), amely SQL utasításokat továbbít egy Oracle adatbázishoz. Adatbázis szerver kód, amely értelmezi és végrehajtja az SQL utasításokat. Ezeket a kód-modulokat futtatják a processzek. Ennek megfelel en a processzeket is két f csoportra oszthatjuk: felhasználói processzek, melyek az alkalmazás kódját futtatják, illetve Oracle adatbázis processzek, ahová a szerver- és háttérfolyamatok tartoznak. A processzek struktúrája függ az operációs rendszert l és az adatbázis beállításaitól is. Dedikált vagy osztott szerveres megoldások közül választhatunk. Dedikált szerveres kapcsolat esetén minden felhasználóhoz tartozik egy felhasználói (user) és egy dedikált szerver processz, míg osztott szerveres kapcsolatnál egy szerver processz akár több felhasználót is kiszolgálhat egyszerre. 4. A végállapot ismertetése A féléves munka eredményét tulajdonképpen a már említett tanulmány [4] jelenti, amelyb l itt egy kis ízelít t próbáltam adni. Az optimalizálási dokumentációk alapján elsajátított technikákat majd a 8. szemeszteres rendszerterv elkészítésénél fogom alkalmazni. 6

Hivatkozások [1] http://www.dsvolk.ru/oracle/papers/understanding_the_oracle_optimizer.ppt, 2008. május 5., 12:56 [2] http://en.wikipedia.org/wiki/query_plan, 2008. május 5., 13:02 [3] http://download.oracle.com/docs/cd/b28359_01/server.111/b28318.pdf, 2008. május 5., 13:54 [4] http://members.chello.hu/m.nyarady/blog/beszamolok/7felev/tanulmany_qja31e.pdf, 2008. május 5., 14:09 [5] http://download.oracle.com/docs/cd/b28359_01/server.111/b28318/memory.htm#chdhahij, 2008. május 6., 16:34 7