B Szójegyzék Ez a szójegyzék csak olyan kifejezéseket tartalmaz, amelyek kifejezetten az SQL optimalizálásával kapcsolatosak. Azok a kifejezések, amelyek általában az SQL nyelvvel foglalkoznak, a honlapunkon található 1000 kifejezést tartalmazó szójegyzékünkben érhetõk el a www.ocelot.ca oldalon. A meghatározás elõtt idõnként a „Használja” megjegyzést találjuk. Például a „Használja: Microsoft, Sybase” azt jelenti, hogy a Microsoft és a Sybase szakértõi elõnyben részesítik az adott kifejezést vagy meghatározást. A „Használja: csak ez a könyv” megjegyzés jelentése, hogy csak ideiglenesen, e könyv céljaira használt nem szabványos kifejezésrõl van szó. Amikor egy szónak több jelentése is van, az elsõt [1] jellel láttuk el, a többi meghatározást pedig növekvõ számokkal jelöltük. A „lásd” vagy „lásd még” utalások e szójegyzék egyéb fogalmaira hivatkoznak. _rowid lásd sorazonosító. Használja: MySQL 1NF Elsõ normál formában lévõ tábla; olyan tábla, amely csak skaláris (szerkezet nélküli) értékeket tartalmaz. 2NF Második normálformában lévõ tábla; olyan, elsõ normálformában lévõ tábla, amely csak az elsõdleges kulcstól teljesen függõ oszlopokat tartalmaz. 3NF Harmadik normálformában lévõ tábla; olyan, második normálformában lévõ tábla, amelynek nem kulcs értékei egymástól kölcsönösen függetlenek, vagyis minden oszlop értéke a többitõl függetlenül módosítható.
422
SQL teljesítményfokozás adatblokk lásd blokk, lap adatforrás Adatok tárolására szolgáló hely. ODBC/JDBC-kifejezés. adatmódosító utasítás Olyan SQL-utasítás, amely az adatok megváltozásával jár együtt; INSERT, UPDATE vagy DELETE. adatolvasó ciklus Olyan függvényt tartalmazó ciklus, amely egy eredményhalmaz egy sorát adja vissza. ADO (ActiveX Data Objects) ActiveX adatobjektumok; API, amely a windowsos programok adatbázis-elérését teszi lehetõvé. állandó-terjesztés Kifejezés helyettesítése állandóval. API (Application Programming Interface) Alkalmazásprogramozási felület; az a módszer, amellyel a program írója kéréseket küldhet az operációs rendszernek vagy más programoknak. applet lásd kisalkalmazás átalakítás (SQL utasításé) Az SQL utasítás újraírása oly módon, hogy ugyanazt az eredményt kapjuk, de egy másik utasításformával. Amikor két SQL utasítás különbözõ utasításformával, de elõre láthatóan pontosan ugyanazt a kimenetet hozza létre, akkor a két utasítás egymás átalakítottja. átbocsátó képesség A DBMS által egységnyi idõn belül elvégzett mûveletek száma. átmeneti tár A lapok egy adagjának tárolására a memóriában lefoglalt rögzített méretû terület. bájtkód A futtatható Java programok tárolására használt köztes formátum. A bájtkód magasabb szintû a gépi kódnál, de alacsonyabb szintû, mint a forráskód. BDB Berkeley DB, a MySQL-be ágyazott adatbázis-kezelõ rendszer. beágyazott ciklus kapcsolat Kapcsolt táblák létrehozására használt módszer. Ha adott a Table1 és Table2 tábla, akkor az eljárás a következõ: for (a Table1 minden sorára) { for (a Table2 minden sorára) { összehasonlítás és kapcsolt (Table1, Table2) sor képzése } }
Észrevehetjük a for ciklusba ágyazott másik for ciklust.
B. függelék • Szójegyzék beágyazott SELECT
lásd belsõ lekérdezés
belsõ lekérdezés Egy SELECT utasítás egy másik (rendszerint SELECT) utasításon belül. belsõ tábla A beágyazott ciklus kapcsolat belsõ ciklusában lévõ tábla. Amikor egy belsõ összekapcsolást tartalmazó SQL-utasítást írunk, a belsõ táblát a DBMS választja ki az utasításnak megfelelõ összekapcsolási módszer szerint. Ellenben amikor külsõ kapcsolatot írunk az utasításba, a kapcsolódás sorrendje határozza meg a belsõ táblát: a Table1 LEFT JOIN Table2 kifejezésben a belsõ tábla a Table2 lesz, míg a Table1 RIGHT JOIN Table2 kifejezésben a Table1 táblának kell belsõ táblaként szerepelnie. belülrõl kifelé Belsõ lekérdezés végrehajtási terve, amelyben a belül lévõ lekérdezés minden sorához megfelelõt keresünk a külsõ lekérdezésben. betöltés lásd többszörös INSERT B-fa Az index-kulcsok tárolására szolgáló szerkezet; az indexkulcsok hierarchikusan lapokra rendezett elhelyezése. Egyesek szerint a B jelentése elosztott vagy kiegyensúlyozott (balanced). big-endian Olyan bináris adatátviteli/tárolási formátum, amelyben a legnagyobb értékû bitek (vagy bájtok) kerülnek elõre. bináris rendezés A karakterek tárolására használt kódok rendezése. bittérkép Bitekbõl álló sorok. bittérkép-index Egy vagy több bittérképet tartalmazó index. Lásd még bittérkép. bitvektor Bitekbõl álló sor. blokk lásd még lap. Használja: Oracle. [1] Az I/O mûveletek legkisebb egységének Oracle-féle elnevezése. Minden más DBMS a lap megnevezést használja. [2] Amikor az 1. munkafolyamat kizárólagos zárolással rendelkezik a Table1 tábla felett, és a 2. munkafolyamat megpróbál hozzáférni a Table1 táblához, a 2. munkafolyamatnak várnia kell, vagyis blokkolt állapotban van. blokk-egység lásd lap blokklehívás Egyszerre több sort érintõ lehívás.
423
424
SQL teljesítményfokozás BNF Backus-Naur forma; a programozási nyelvek parancsformátumát leíró jelölésrendszer. buffer lásd átmeneti tár CBO (cost-based optimizer) Költség alapú optimalizáló; olyan optimalizáló, amely az optimális lekérdezés-végrehajtó terv kiválasztásához változó értékeket (például beírt sor- és oszlopértékeket) használ. A költség alapú optimalizáló a szabály alapú optimalizáló olyan típusa, amely a rendelkezésére álló változó adatok felhasználásával felülbírálja a rögzített elõfeltételeket. CGI (Common Gateway Interface) Általános átjárófelület; arra vonatkozó szabvány, hogy a webkiszolgáló milyen módon továbbítsa a felhasználó kéréseit az alkalmazásnak, és a fogadott adatokat vissza a felhasználónak. cluster lásd fürt, fürtözött index csak olvasó tranzakció Olyan tranzakció, amely nem módosítja az adatot. DBA (Database Administrator) Adatgazda; az a személy, aki irányítja és végrehajtja az adatbázis sikeres mûködtetéséhez szükséges tevékenységeket. dbc (database connection) Adatbázis-kapcsolat; ODBC erõforrás. DBMS (Database Management System) Adatbázis-kezelõ rendszer; program, amely lehetõvé teszi egy vagy több felhasználó számára egy adatbázisban tárolt adatok létrehozását és visszakeresését. dbspace lásd táblahely. Használja: Informix DDL (Data Definition Language) Adatleíró nyelv; adatobjektumok létrehozására vagy megsemmisítésére szolgáló SQL-utasítások, például a CREATE TABLE, az ALTER TABLE vagy a DROP TABLE. deadlock lásd holtpont denormalizálás A normalizálási szabályok tudatos megszegése a sebesség növelése vagy a helyigény csökkentése céljából. desc (descriptor) Az SQL utasítás paramétereinek leírója; ODBC erõforrás.
B. függelék • Szójegyzék Descartes-féle robbanás A Descartes-szorzattal összekapcsolt táblák méretében bekövetkezõ növekedés. Egy összekapcsolás folyamán a DBMS az eredmény tárolására átmeneti táblát hoz létre. Az átmeneti tábla mérete a két eredeti tábla méretének szorzata, ami az jelenti, hogy a végrehajtási idõ a táblák méretének növekedésével mértani arányban áll. Descartes-kapcsolat lásd Descartes-szorzat Descartes-szorzat A és B halmaz Descartes-szorzata vagy más néven direkt szorzata az összes olyan {a, b} rendezett párokból álló halmaz, ahol a az A halmaz eleme, b pedig a B halmazé. Az adatbázisok nyelvén szólva ez annyit jelent, hogy a Descartes-szorzat összekapcsolja a Table1 összes sorát a Table2 összes sorával. Így ha a Table1 a {T_a1, T_b1} értékeket tartalmazná, a Table2 pedig a {T_a2, T_b2} értékeket, akkor ezek Descartes-szorzata a {(T_a1, T_a2) (T_a1, T_b2) (T_b1, T_a2) (T_b1, T_b2)} halmaz lenne. A Descartes-szorzat a magyarázat szempontjából megfelelõ, de ha egy olyan mûvelettel találkozunk, amely a valóságban is használja a módszert, akkor rendszerint szidjuk az optimalizáló rendszert. Szokták keresztszorzatként is emlegetni. determinisztikus (függvény) Függvény, amely azonos bemenet esetén mindig azonos kimenetet állít elõ. dirty read lásd „piszkos olvasás” DML (Data Manipulation Language) Adatmódosító nyelv; az SQL adatmódosítást eredményezõ utasításai, amilyen az INSERT, az UPDATE vagy a DELETE. DSS (Decision Support System) Döntéstámogató rendszer; számítógépes program, amely segíti az üzleti döntések meghozatalát. egyedi index Tökéletes szelektivitással rendelkezõ index; olyan index, amelyben nem szerepelnek ismétlõdések. Az SQL-szabvány megengedi több NULL érték elõfordulását az indexben, mivel a meghatározása szerint a NULL érték nem egyezik meg egyik más értékkel – így önmagával – sem. Ennek ellenére sok DBMS csak egyetlen NULL értéket enged meg, egyes adatbázis-kezelõ rendszerek pedig egyáltalán nem engedik NULL elõfordulását az egyedi indexben. egyenlõség-kapcsolat Táblakapcsolat, amely az egyenlõségjelet használó kifejezésen alapul. egyeztetési sorrend lásd jelsorrend egyidejû tranzakciók lásd versengõ tranzakciók elosztott fa lásd B-fa
425
426
SQL teljesítményfokozás elõfordító Segédprogram, amely az SQL kód „lefordítására” használható, mielõtt a gazdaprogram fordítása megtörténne. Vagyis egy segédprogram lefordítja az SQL utasításokat olyan nyelvre, hogy a fordítóprogram értelmezni tudja. A beágyazott SQL idõszakának maradványa – valójában nem létezik SQL-fordító program. elõkészített utasítás SQL utasítás, amely elõzetes elemzésnek és végrehajtás-tervezésnek lett alávetve, például az ODBC SQLPrepare függvényével. elsõ normálforma lásd 1NF elsõ tömörítés Az indexek rövidítése az elsõ bájtok elhagyásával. Lásd még tömörítés, hátsó tömörítés. elszigetelési szint (tranzakció esetén) Az a beállítás a szabványos SQL-ben, amely meghatározza egy versengési probléma még megengedett szintjét egy tranzakciónál. A legkisebb elszigetelési szint felõl a nagyobb felé haladva a következõ választási lehetõségek lehetnek: READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ, és SERIALIZABLE. elveszett frissítés A versengõ tranzakcióknál elõforduló probléma, amely akkor jelentkezik, amikor két tranzakció olvassa és változtatja meg ugyanazt a sort. Amikor az elsõ tranzakció elküldi a COMMIT utasítást, a változtatás elvész, mert a második tranzakció hatástalanítja. Az eredmény az, mintha az elsõ tranzakció változtatása soha nem következett volna be. Az elveszett frissítés hibája a READ UNCOMMITTED vagy annál magasabb elszigetelési szint használatával kerülhetõ el. Enterprise Bean lásd vállalati szintû programmag env (environment) Környezet; ODBC erõforrás. equijoin lásd egyenlõség-kapcsolat eredményhalmaz Az SQL utasítás (vagy a SELECT utasítással egyenértékû mûvelet, amilyen a katalógusfüggvény, vagy egy SELECT utasítást tartalmazó tárolt eljárás) eredménye. eredményhalmaz mérete A kiválasztott sorok száma, az eredményhalmaz sorainak száma. erõs fürtözött index lásd fürtözött index. Használja: csak ez a könyv extent lásd lapcsoport fájl Összefüggõ lapcsoportok csoportja.
B. függelék • Szójegyzék fantom Hiba, amely versengõ tranzakciók esetén fordul elõ. A fantom akkor jelentkezik, amikor a tranzakció kétszer olvas be sorokat, és a két beolvasás között egy másik tranzakció az elsõ feltételét érintõ adatmódosítást hajt végre. Ennek eredménye, hogy az elsõ tranzakció a második beolvasásakor eltérõ eredményhalmazt kap, mint az elsõ beolvasás során. A fantomok hibája a SERIALIZABLE elszigetelési szint használatával kerülhetõ el. fedõindex Index, amely a SELECT-lista minden oszlopát tartalmazza. felosztás (indexé) Az a folyamat, amelynek során a DBMS beilleszti az újonnan beszúrt vagy frissített kulcsot az indexbe, amikor a kulcs nem akar beférni az adott lapra. Hogy a kulcs elférjen, a DBMS felosztja a lapot: néhány kulcsot kivesz az oldalról és új lapra helyezi azokat. ferdeség Egy halmaz értékeinek eloszlását vizsgáló tulajdonság. Ha az ertek1, ertek2 és ertek3 mindegyike ötször fordul elõ a halmazban, nincs ferdeség, az értékek egyenlõen oszlanak el. Ellenben ha az ertek1 ötször, az ertek2 tízszer, az ertek3 százszor fordul elõ, akkor van ferdeség, az értékek egyenlõtlenül oszlanak el. FILLFACTOR Használja: Informix, Ingres, Microsoft, Sybase A lapok feltöltendõ területének százaléka. Lásd még PCTFREE. fizikai nézettábla Nézettábla, amelynek sorai fizikailag is tárhelyet foglalnak. Amikor egy nézetbõl válogatunk le adatokat, a DBMS két dolog közül választhat: (a) lekérdezi a sorokat az eredeti táblából, feldolgozza az esetleges származtatott mezõket és továbbítja az eredményt a programnak vagy (b) létrehoz egy átmeneti táblát, átmásolja az eredeti tábla (vagy táblák) sorait az átmeneti táblába és ezen hajtja végre a leválogatást. Az utóbbi eset eredménye a fizikai nézet. A fizikaivá tétel gyakran szükséges, ha nincs egy az egyhez megfeleltetés az eredeti tábla és a nézet sorai között (mert csoportosított nézetrõl van szó) vagy túl sok táblát érint a mûvelet és sérülne a párhuzamosság (mert táblakapcsolatok szerepelnek a nézetben). fizikaivá tétel Sorok átmeneti megkettõzése; rendszerint az adatok fizikai másolását jelenti a DBMS kiszolgálóról az ügyfélgépre. Néhány kifejezés futtatásához a DBMS ideiglenes táblát hoz létre, átmásolja a sorokat az eredeti táblából az ideiglenesbe és ezen a másolaton futtatja a leválogatást, ezt nevezzük fizikaivá tételnek. forrópont Az adat- vagy indexfájl olyan lapja, amelyet minden munkafolyamat egyszerre akar elérni. FPU (Floating Point Unit) Lebegõpontos egység; olyan mikroprocesszor (-egység), amely a számmûveleteket nagyobb sebességgel végzi, mint a központi egység.
427
428
SQL teljesítményfokozás funkcionálisan függõ A normalizálás folyamán használt tulajdonság. Ha a column1 oszlop értéke önmagában megszabja a column2 oszlop értékét, akkor a column2 oszlop funkcionálisan függ a column1 oszloptól. függõleges keresés (elevator seeking) Egy lemez fizikai végigpásztázása egy felvonóhoz (elevator) hasonlóan, ahelyett, hogy elõre-hátra ugrálnánk. Az operációs rendszerekkel kapcsolatos kifejezés. függõség A normalizálás folyamán használt tulajdonság. Ha a column1 oszlop értéke önmagában megszabja a column2 oszlop értékét, akkor a column2 oszlop funkcionálisan függ a column1 oszloptól. Amennyiben a column1 értéke a column2 lehetséges értékeit egy adott halmazra szûkíti le, akkor a column2 halmazfüggõ a column1 oszloptól. fürt Használja: Microsoft, Sybase. Az adatok meghatározott sorrendben való tárolásának rendszere, azaz olyan index, amelynek a levelén (csúcsán) adatlapok helyezkednek el. A fürt mögött húzódó elgondolás az, hogy minden sort állandóan valamilyen oszlop (például az elsõdleges kulcs) értékének a sorrendjében kell tartani. Lásd még fürtözött index fürtözött index Olyan index, amelyet az egy vagy több oszlop értéke szerinti fürtözött kulcs alapján a DBMS az adatsorok sorrendjének meghatározására használ. Az erõs fürtözött index használatával az adatlapok az index levelei, így mindig rendezett állapotban vannak. Gyenge fürtözött index esetén az adatlapok az index leveleitõl elkülönülten tárolódnak, így a sorok nem szükségképpen vannak 100%-os rendezettségben. A gyenge fürtözött index és az erõs fürtözött index kifejezések nem általánosan elterjedtek, csak ebben a könyvben fordulnak elõ. fürtözött indexkulcs vagy fürtkulcs (csoportkulcs) A fürtözött index számára kiválasztott indexkulcs oszlopa. gazdaprogram Olyan nem SQL-nyelven írt számítógépprogram, amely SQL API függvényhívásokat, vagy beágyazott SQL-utasításokat tartalmaz. GUID (Globally Unique Identifier) Használja: Microsoft. Általánosan egyedi azonosító; a Microsoft egyedi kulcs-létrehozója. gyenge fürtözött index lásd fürtözött index. Használja: csak ez a könyv gyökér A B-fa indexek hierarchikus felépítésûek; rendelkeznek egy legfelsõ lappal (ahol a keresés indul), ez a középsõ lapokra mutató kulcsokat tartalmazza, amelyek pedig a levelekre mutató kulcsokat. A legfelsõ lap neve a gyökér, mintha egy fa fejjel lefelé állna, és a gyökere lenne felfelé, a levelei pedig lent.
B. függelék • Szójegyzék halmazfüggõ A normalizálással kapcsolatos kifejezés. Ha a column1 oszlopban lévõ érték a column2 oszlopban tárolható lehetséges értékeket egy bizonyos halmazra korlátozza, akkor a column2 oszlop halmazfüggõ a column1 oszloptól. halmazfüggvény Olyan függvény, amely a bemeneti értékek egy halmazából egy kimeneti értéket állít elõ. Az SQL szabványos halmazfüggvényei az AVG, a COUNT, a MAX, a MIN, és a SUM. halmazmûvelet Mûvelet, amely két vagy több halmazból egyet hoz létre. Az SQL szabványos halmazmûveletei az EXCEPT, az INTERSECT, és a UNION. hash lásd kivonat hasítóérték lásd kivonat hátsó tömörítés Az indexeknek a hátsó bájtok elhagyásával történõ rövidítése. Lásd még tömörítés, elsõ tömörítés. helyben módosítás lásd még kívül végrehajtott módosítás. Használja: Microsoft, Sybase. Olyan adatmódosítás, ami nem jár sormozgatással. helyen kívüli módosítás Használja: Microsoft, Sybase. Olyan adatmódosítás, amely egy sor mozgását okozza. hisztogram Egy adott oszlopban lévõ értékek eloszlásáról az optimalizáló számára tárolt részletes információk. holtpont Az az állapot, amikor kettõ vagy több tranzakció a másik által létrehozott zárolás feloldására vár. index alapján szervezett tábla lásd fürt. Használja: Oracle intent lock Egy zárolt kisebb objektummal kapcsolatban lévõ nagyobb objektum zárolása. A háttérben minden kis szemcséjû zárolás megosztott nagy szemcséjû zárolást hoz létre. Amikor a táblához tartozó egy vagy több lapon zárolások jönnek létre, akkor a tábla maga is zárolódik, mint egy különálló zárolási tétel. ITL-nyom lásd jel a falon JDBC (Java Database Connectivity) Java adatbázis-összekapcsolhatóság; API az SQL programok számára.
429
430
SQL teljesítményfokozás jel a falon ITL-nyom vagy jel, amelyet a DBMS helyez el a soron. Közvetlenül a tranzakció által elért sor mellé jelet helyezve a DBMS biztosítja, hogy a többi tranzakciónak nem kell sok idõt eltöltenie a sor zárolásának ellenõrzésével. Lásd még zárolás. jelsorrend Szabálygyûjtemény, amely két karakterlánc összehasonlításának eredményét szabja meg. JNDI (Java Naming and Directory Interface) Java elnevezési és könyvtár-felület; API, amely a Java programok számára biztosítja a név- és könyvtárszolgáltatásokat. join lásd összekapcsolás JVM (Java Virtual Machine) Java virtuális gép (helyesebben virtuális Java-gép); értelmezõ környezet a felületfüggetlen Java programozási nyelvhez, amely a Java bájtkódot gépi nyelvre fordítja és futtatja az eredményt. kallantyú Alacsony szintû kapcsolószerkezet, amely biztosítja, hogy két folyamat vagy szál ne férhessen hozzá ugyanahhoz az objektumhoz egyszerre. kapcsolattárolás Egy adatforrással létrejött kapcsolat tárolásának és újrafelhasználásának képessége. Java-szakkifejezés. kapcsoló kifejezés A WHERE záradékban megfogalmazott keresési feltétel, amely megadja a DBMS számára, hogy mely oszlopok alapján kell két táblát összekapcsolni. kapcsolóindex Index, amely vegyesen tartalmaz több táblából kulcsokat a kapcsoló kifejezés végrehajtásának elõsegítésére. keresési feltétel Állítás vagy állításkombináció, amely kiértékelve igaz/hamis/ismeretlen (true/false/unknown) eredményt adhat; általában az SQL utasítás WHERE záradékában találjuk. kiemelés Nem változó hozzárendelés kiemelése a ciklusból. kisalkalmazás Java nyelvû program, amelyet a böngészõprogram letölteni és futtatni képes. kisimítás (lekérdezésé) Egy belsõ lekérdezés végrehajtási terve: mindennek egy szintre való hozása, azaz a lekérdezés táblakapcsolattá való átalakítása, majd ennek megfelelõ végrehajtása. kisimított (lekérdezés) lásd kisimítás
B. függelék • Szójegyzék kivonat Az oszlopértékekbõl veszteséges tömörítési eljárással elõállított szám (gyakran 32 bites egész), amelyet a DBMS alkalmanként az adatelérés gyorsítására használ, de az indexelés gyakoribb eljárás. kivonatoló kapcsolat Összekapcsolt táblák létrehozására szolgáló eljárás. Két bemeneti tábla, például Table1 és Table2 esetén a folyamat a következõképpen zajlik: (a) A Table1 minden egyes sorához létrehozunk egy kivonatot. A kivonatot hozzárendeljük egy kivonat-tárolóhoz. (b) A Table2 minden sorához szintén elõállítunk egy kivonatot. Ellenõrizzük, hogy a kivonat szerepel-e már a kivonattárban. Ha igen, máris van egy kapcsolatunk. Amennyiben nem, nincs kapcsolat. kívülrõl befelé Belsõ lekérdezés végrehajtási terve, amelyben a kívül lévõ lekérdezés minden sorához keresést hajtunk végre a belül lévõ lekérdezésben. kizárólagos (zárolási mód) Zárolás, amely nem biztos, hogy együttmûködik más zárolásokkal ugyanazon az objektumon. kölcsönös kizárás lásd holtpont költözõ sor lévõ sor.
Kiterjesztõ módosítás során bekövetkezett túlcsordulás után a tábla végén
költöztetés Hely keresése egy kiterjesztõ módosítás számára. Amikor egy lap egy változó hosszúságú oszlopon végrehajtott hossznövelõ utasítás következtében túlcsordulást szenved, egy sort egy másik lapra kell léptetni. A gyakorlatban az eredeti sor helyére a túlcsordult lapra hivatkozó mutató kerül. Lásd még léptetés. költség Egy SQL utasítás futtatásához szükséges idõ. költség alapú optimalizáló lásd CBO könyvjelzõ lásd még sormeghatározó. Használja: Microsoft. Egy indexkulcsban lévõ mutató. Ha az adat egy fürtözött index része, akkor a könyvjelzõ a fürtözött index kulcsa, ellenkezõ esetben a könyvjelzõ egy sorazonosító. közvetett függõség A normalizálásban használt kifejezés. Amikor a column2 oszlop függ a column1 oszloptól és a column3 függ a column2 oszloptól, akkor elmondható, hogy a column3 is függ a column1 oszloptól. A tranzitivitás miatt ez a függõség is fennáll. kupac Adatok szerkezet nélküli módon való tárolása. Amikor egy újabb adatot adunk a kupachoz, az új adat a legközelebbi szabad helyre, valószínûleg a kupac végére kerül. Korábbi adatok szabad hely létrehozása céljából soha nem mozognak.
431
432
SQL teljesítményfokozás kupac szerkezetû tábla lásd kupac kurzor Az eredményhalmaz pillanatnyi helyzetét mutató jelzés. (Sormutató) külsõ tábla A beágyazott ciklus kapcsolat külsõ ciklusában lévõ tábla. Amikor egy belsõ kapcsolatot tartalmazó SQL-utasítást írunk, a belsõ táblát a DBMS választja ki az utasításnak megfelelõ összekapcsolási módszer szerint. Ellenben amikor külsõ kapcsolatot írunk az utasításba, a kapcsolódás sorrendje határozza meg a belsõ táblát: a Table1 LEFT JOIN Table2 kifejezésben a belsõ tábla a Table2 lesz, míg a Table1 RIGHT JOIN Table2 kifejezésben a Table1 táblának kell belsõ táblaként szerepelnie. lap Rögzített méretû tároló, amely adatokból vagy indexkulcsokból álló sorokat tartalmaz; a lemez I/O mûveleteinek legkisebb egysége. A DBMS-tõl függõen az elnevezése lehet adatblokk, blokk, blokkolási egység, vezérlési intervallum, vagy sorcsoport. lapcsoport lásd még olvasási csoport A már létezõ csoportok betelésekor vagy egy objektum kezdeti létrehozásakor együtt lefoglalt újabb lapok csoportja. lapolvasás A lemezrõl a memóriába történõ adatmozgatás. látszólagos oszlop Látszólagos oszlop szemben a fizikailag is létezõ oszloppal. A látszólagos oszlopok nem foglalnak helyet a sorban. lekérdezés Egy SELECT utasítás. léptetés A sorméret megváltozása következtében végrehajtott soráthelyezés. Amikor a sor mérete egy UPDATE vagy DELETE mûvelet során megváltozik, akkor az adott sor és az összes rákövetkezõ sor mozgatást, más szóval léptetést szenvedhet. Lásd még költöztetés. levél (egy index lapja) A B-fa legalsó szintjén álló lap (a legmagasabb szinten a gyökér áll). A levél-lap jellemzõen az adatlapokat címzõ mutatókat tartalmazza (ha nem fürtözött indexrõl van szó) vagy közvetlenül az adatra hivatkozik (amennyiben fürtözött indexrõl van szó). little-endian Bináris adatátviteli/tárolási formátum, amelyben a legkisebb értékû bitek (vagy bájtok) kerülnek elõre. LOB (large object) Nagy objektum, például BLOB (bináris) és CLOB (karakteres). LRU (Least-Recenly-Used) A „legrégebben használt” algoritmus; azt a lapot cseréli ki, amelyiket a leghosszabb ideje nem olvasták.
B. függelék • Szójegyzék második normálforma lásd 2NF megosztott (zárolási mód) Olyan zárolás, amely ugyanazon az objektumon képes együttmûködni akárhány megosztott zárolással, vagy egyetlen adatmódosító zárolással. megszorítás A relációelmélet kifejezése; azt dönti el, hogy mely sorokat fogja érinteni az adott mûvelet. A megszorítás mûvelete egy SQL utasítás keresési feltételének futtatásával választja ki azokat a sorokat, amelyek az eredménylistában szerepelni fognak. A megszorítás egy más elnevezése: szûrõ. méretnövelõ adatmódosítás Adatmódosító utasítás, amely növeli a sor méretét. metódus Java osztályhoz vagy felülethez rendelt eljárás. módosító zárolás Zárolás, amely egy objektumon osztozni tud akárhány megosztott zárolással, ha azok egyike sem módosító vagy kizárólagos zárolás. MVCC (Multi Version Concurrency Control) Többváltozatos párhuzamosság-vezérlés; módszer, amely idõnként nem használ zárolást a sorok esetében. nagy- és kisbetûket megkülönböztetõ Olyan rendezési sorrend, amelyben a 'KOVÁCS' és a 'Kovács' különbözõ értékkel szerepel. nagy- és kisbetûket nem megkülönböztetõ Olyan rendezési sorrend, amelyben a 'KOVÁCS' és a 'Kovács' ugyanolyan értékkel szerepel. NaN (Not a Number) „Nem szám”. Az IEEE lebegõpontos számábrázolásra vonatkozó meghatározása szerint a NaN olyan szám, amely nem ábrázolható (mint például a nullával való osztás eredménye), így tárolása különleges kódhoz kötött. nem determinisztikus (függvény) Olyan függvény, amely minden futtatásakor különbözõ eredményt adhat, még akkor is, ha a bemenete minden esetben ugyanaz. nem fürtözött index Index, amelynek szerkezete teljesen független az indexelt soroktól, általában egy B-fa. A nem fürtözött index legalacsonyabb sorai tartalmazzák az indexkulcsértékeket, amelyek mindegyike arra az adatsorra mutat, amelyik az adott kulcsot tartalmazza. Az adatsorok nem az indexkulcsnak megfelelõ sorrendben, hanem inkább kupacszerûen helyezkednek el. nem ismételhetõ olvasási mûvelet A versengõ tranzakcióknál elõforduló probléma. A nem ismételhetõ olvasási mûvelet akkor jelentkezik, amikor egy tranzakció egy sort kétszer olvas, egy másik tranzakció adatmódosítása elõtt és az után. Az eredmény, hogy az elsõ
433
434
SQL teljesítményfokozás
tranzakció által beolvasott két adat egymással ellentétbe kerül. A nem ismételhetõ olvasási mûvelet hibája a REPEATABLE READ vagy annál magasabb elszigetelési szint használatával kerülhetõ el. niladikus függvény Olyan függvény, amelynek nincs bemenõ paramétere, például az SQL CURRENT_DATE és CURRENT_USER függvényei. normalizál Az oszlopokat a táblán belül újraszervezi vagy a táblák között mozgatja az adatbázis-tervezés folyamán, a relációs adatbázis követelményeinek való megfelelés céljából. A normalizált táblákban az oszlopok egy halmaza alkotja az elsõdleges kulcsot (amely egyértelmûen azonosítja a sort a táblán belül), és az összes többi oszlop funkcionálisan függ a teljes elsõdleges kulcstól. Lásd még 1NF, 2NF, 3NF. normalizálás Az adatbázis-tervezés folyamatának az a lépése, amikor az adatbázis tábláit a relációs adatbázis követelményeinek megfelelõ formára hozzuk. A gyakorlatban ez általában azt jelenti, hogy az adatbázis minden táblája a harmadik normálformában van. Lásd még 1NF, 2NF, 3NF. NTFS (NT filesystem) NT fájlrendszer; a Microsoft Windows NT operációs rendszer fájlok tárolására és visszakeresésére használt rendszere. ODBC (Open Database Connectivity) Nyílt adatbázis-összekapcsolhatóság; API az SQL programok számára. OLTP (Online Transaction Processing) Valósidejû tranzakció-feldolgozás; a tranzakció-feldolgozás típusa, amelyben a rendszer azonnal válaszol a felhasználó kéréseire. olvasás lásd lapolvasás olvasási csoport Szomszédos lapok csoportja, amelyek olvasása egyidõben történik. optimista zárolás Olyan zárolás, amely az ütközést valószínûtlennek tekinti. Általában ez annyit jelent, hogy nincs zárolás, és két tranzakció ütközésének ellenõrzése csak az adatmódosítások után történik meg. összefûzõ kapcsolat lásd rendezõ-összefûzõ kapcsolat összefûzõ pásztázás lásd rendezõ-összefûzõ kapcsolat összegzõ függvény lásd halmazfüggvény
B. függelék • Szójegyzék összehangolt (metódus) A Java metódusok tulajdonsága, amely lehetõvé teszi több, ugyanazt az objektumot használó szál versengésének vezérlését. összekapcsolás Relációs mûvelet, amely lehetõvé teszi két tábla adatainak társítását. Az összekapcsolás több tábla sorait kapcsolja össze az oszlopok közös értékei alapján. összetett index Kettõ vagy több oszlop értékébõl álló kulcs alapján képzett index. partíció Használja: mindenki, kivéve az Informix. Összefüggõ lapcsoportok csoportja. A partíció gyakran egy fájl, de nem feltétlenül kell annak lennie. Az Informix töredéknek hívja ezt az egységet. particionálás Használja: mindenki, kivéve az Informix. Egy adatbázis-objektum (általában táblahely, tábla vagy index) elosztása kettõ vagy több fizikai helyre vagy lemezrészre; azaz a lapok logikai csoportjainak (például egy tábla lapjainak) felosztása láncolatokra vagy fájlokra, amelyek fizikailag egymástól távolabbra kerülnek, esetleg más lemezre. Az Informix a folyamatot tördelésnek nevezi. patthelyzet lásd holtpont PCTFREE Használja: IBM, Oracle. A lapok területének szabadon hagyandó százaléka. Lásd még FILLFACTOR. pesszimista zárolás Olyan zárolás, ami valószínûnek tekinti az ütközést. Általában ez azt jelenti, hogy a tranzakció kezdetekor megtörténik az objektum zárolása, és ez csak a tranzakció befejezése után oldódik fel. „piszkos olvasás” A versengõ tranzakcióknál elõforduló probléma, amely akkor jelentkezik, amikor a tranzakció egy olyan sort olvas, amit egy másik tranzakció megváltoztatott, de nem véglegesített. Ennek eredménye az, hogy a második tranzakció egy olyan változásra alapozza a mûködését, ami igazából meg sem történt. A piszkos olvasás (dirty read) elkerülhetõ a READ COMMITTED vagy ennél magasabb elválasztó szint használatával. PL/SQL Használja: Oracle. Az Oracle kifejezése a tárolt eljárásokra. pozicionált adatfrissítés Olyan UPDATE mûvelet, amely lehetõvé teszi a pillanatnyi kurzorpozíciónál lévõ sor módosítását. Formája: UPDATE ... WHERE CURRENT OF
pozicionált törlés Olyan DELETE mûvelet, amely lehetõvé teszi a pillanatnyi kurzorpozíciónál lévõ sor törlését. Formája: DELETE ... WHERE CURRENT OF
435
436
SQL teljesítményfokozás projekt A relációs elmélethez kötõdõ kifejezés. Annak eldöntése, hogy mely oszlopokat érint a mûvelet. A projekt végrehajtása az SQL utasítás SELECT listájának futtatásával kiválasztja azokat az oszlopokat, amelyek szerepelni fognak az eredménylistában. PSM (Persistent Stored Modules) Tartósan tárolt modulok; az SQL-szabvány által a tárolt eljárásokra használt kifejezés. PTQ (Pass Through Query) Használja: Microsoft. A Microsoft Access egy lekérdezési lehetõsége. RAM rekord Használja: csak ez a könyv. A sorok, lapok vagy táblák zárolásának megszokott módja. A RAM rekord egy állandó memóriaterület, amely arról tárol adatokat, hogy mely objektumokat és milyen módon (például megosztva, kizárólagosan, módosításra) zárolták. RBO (Rule-based optimizer) Szabály alapú optimalizáló; olyan optimalizáló, amely a futtatási tervet állandó jellemzõk és elõfeltételek – például az utasításforma vagy az esetleges indexek – alapján állítja össze. R-C Használja: csak ez a könyv. A READ COMMITED tranzakció-elszigetelési szint nem szabványos rövidítése. READ COMMITTED Tranzakció-elszigetelési szint, amely biztosítja a szükséges megosztott zárolásokat, de lehetõvé teszi ezek feloldását a tranzakció befejezése elõtt. A READ COMMITTED azt a kérésünket tolmácsolja a DBMS felé, hogy csak akkor engedélyezze más tranzakciók által írt sorok olvasását, ha az adatot már érvényesítették. READ UNCOMMITTED Tranzakció-elszigetelési szint, amely biztosítja, hogy a tranzakció nem bocsát ki, és nem ellenõriz zárolásokat. A READ UNCOMMITTED azt a kérésünket tolmácsolja a DBMS felé, hogy engedélyezze más tranzakciók által írt sorok olvasását akkor is, ha az adatot még nem érvényesítették. rendezési kulcs Használja: csak ez a könyv. Egybájtos számokból álló karaktersorozat, amely a karakterek relatív sorrendjét jeleníti meg. rendezõ-összefûzõ kapcsolat Eljárás kapcsolódó táblák létrehozására. Ha adva vannak a Table1 és Table2 táblák, a folyamat a következõ: (a) A Table1 rendezése a kapcsoló oszlopnak megfelelõen. (b) A Table2 rendezése a kapcsoló oszlopnak megfelelõen. (c) A két rendezett lista összefûzése, eltávolítva azokat a sorokat, ahol nincs egyezés.
B. függelék • Szójegyzék REPEATABLE READ Tranzakció-elszigetelési szint, amely biztosítja a szükséges zárolásokat, és ezek feloldását nem teszi lehetõvé a tranzakció befejezése elõtt. A REPEATABLE READ arra utasítja a DBMS-t, hogy ne engedje meg, hogy egy tranzakció ugyanannak a sornak az olvasása során két adathalmazt kapjon vissza, mert egy másik tranzakció esetleg a két olvasás között megváltoztatta a sor tartalmát. RID lásd sorazonosító. Használja: IBM, Microsoft, Sybase RLE (Run-Length Encoding) Használja: InterBase. Tömörítési eljárás, melynek során az egymást követõ egyforma karakterek helyett a karaktert és az ismétlõdések számát tárolják. Például ha a karakterlánc 'AAAAA', akkor (5)(A) tárolódik. ROWID lásd sorazonosító. Használja: Informix, Oracle RPC (Remote Procedure Call) Távoli eljáráshívás; az a protokoll, amely lehetõvé teszi két hálózaton lévõ számítógép között kérések és szolgáltatások áramlását anélkül, hogy a hálózat részleteivel foglalkozni kellene. R-R Használja: csak ez a könyv. A REPEATABLE READ tranzakció-elszigetelési szint nem szabványos rövidítése. R-U Használja: csak ez a könyv. A READ UNCOMMITTED tranzakció-elszigetelési szint nem szabványos rövidítése. S Használja: csak ez a könyv. A SERIALIZABLE tranzakció-elszigetelési szint nem szabványos rövidítése. SCN (System Change Number) Használja: Oracle. Rendszerváltozási szám; az Oracle belsõ számlálója, amely minden alkalommal növekszik, amikor a naplóba adatváltozásról szóló bejegyzés kerül. SELECT-lista tásban.
Minden, ami a SELECT és a FROM kulcsszavak között áll egy SELECT utasí-
SERIALIZABLE Tranzakció-elszigetelési szint, amely biztosítja, hogy a DBMS a tranzakciók végrehajtása során nem csak az objektumokat, hanem a hozzájuk vezetõ utat is zárolja. A SERIALIZABLE beállítással azt tudatjuk a DBMS-sel, hogy a tranzakciókat olyan módon szeretnénk futtatni, hogy az eredmény ne különbözzön az egyenként futtatott tranzakciók eredményétõl.
437
438
SQL teljesítményfokozás sorazonosító Azonosító, amely a DBMS számára egyértelmûen azonosítja a tábla vagy az index egy sorát; általában egy fizikai cím. Lásd még sormeghatározó sorbaállítás Sorok közelítése egymáshoz SERIAL adattípusok, IDENTITY típusú oszlopok vagy önmûködõen léptetõdõ objektumok segítségével. sorcsoport lásd lap sorhalmaz-méret Egy eredményhalmaz azon sorainak száma, amelyek egyszerre átvihetõk. sormeghatározó Az indexkulcstól az adatsorhoz mutató mutató. Lásd még sorazonosító. soros tranzakció Olyan tranzakció, melynek végrehajtása alatt a többi felhasználó nem hajthat végre adatmódosítást. SPL (Stored Procedure Language) Használja: Informix. Tárolteljárás-nyelv; az Informix kifejezése a tárolt eljárásokra. statisztika Az adatbázis folyton változó adatai, amelyek a rendszerkatalógusban tárolódnak, hogy ha szükséges, az optimalizáló rendelkezésére álljanak. stmt Utasítástároló; ODBC erõforrás. szabadlista Használja: Oracle. A szabad helyet tartalmazó lapok listája. szabály alapú optimalizáló lásd RBO szelektivitás Az egyedi értékek száma elosztva az értékek számával. Például ha az értékek {A,A,B,B}, akkor az egyedi értékek száma, vagyis ahány értékkel a SELECT DISTINCT … utasítás visszatérne, kettõ, míg az értékek száma négy. A szelektivitás értéke tehát ebben az esetben 2/4. A szelektivitást rendszerint százalékban fejezik ki, („a szelektivitás 50%”), de néha arányszámmal adják meg („a szelektivitás értéke 0,5”). Figyelem!
A gyártók vagy egyéb leírások alábbi meghatározásai a szelektivitással kapcsolatban nem elég precízek vagy félrevezetõk: „egy táblában lévõ sorok száma osztva az egyedi értékekkel” (Oracle); „a kettõzõtt kulcsértékek száma az indexben” (Sybase).
Figyelem!
A „nagy szelektivitású” kifejezés jelenthet nagy szelektivitásszámot, de kis értéket is, attól függõen, hogy ki mondja!
B. függelék • Szójegyzék szemcsézettség (zárolás esetén) A zárolt terület mérete – adatbázis, fájl, tábla, lap, sor vagy oszlop. szintaxis lásd utasításforma szótári rendezés Rendezés, amelynek az eredményeként kapott lista nagyon közel áll az angol szótár sorrendjéhez. szûrõ lásd megszorítás szûrõkifejezés Megszorítást végrehajtó kifejezés, vagyis az SQL utasításnak az a része, amely a DBMS-sel közli, hogy mely sorok tartoznak az eredményhalmazhoz. táblahely Adatokat tartalmazó fájl, vagy fájlok egy csoportja. tábla-pásztázás Tábla végigvizsgálása sorról sorra haladva. tid lásd sorazonosító. Használja: Ingres típuseltérés Két adattípus összeegyeztethetetlensége, amikor az egyiket a másikhoz rendelnénk. többoszlopos index lásd összetett index többszörös INSERT A DBMS-nek egy egységben történõ végrehajtásra átadott többsoros INSERT mûvelet. tömör index lásd egyedi index tömörítés Az indexkulcsok rövidebbé tétele az elején vagy a végén lévõ bájtok levágásával. Lásd még elsõ tömörítés, hátsó tömörítés. tömörített decimális Számábrázolási módszer, amelyben minden szám decimális számjegyek sorozataként tárolódik, minden számjegyet négybites (félbájtos) bináris számként kódolva. Esetenként a jobb oldalon lévõ félbájt tartalmazza a (pozitív vagy negatív) elõjelet. tömörség (index vagy tábla esetén) Az egyedi kulcsok számának reciproka. Például tegyük fel, hogy az {A,C,C,D,D} kulcsértékekkel rendelkezünk. A SELECT DISTINCT ... utasítás által visszaadott egyedi kulcsok {A,C,D} száma 3 lenne. Most visszaemlékezve a matematikaórákra, felidézzük, hogy a reciprok = 1/N, vagyis az N reciproka az a szám,
439
440
SQL teljesítményfokozás
amit akkor kapunk, ha az 1-et elosztjuk N-nel. 3 reciproka 1/3, ezért a példánkban a tömörség 1/3. A column1 = feltételnek megfelelõ sorok számára elõzetes becslést adhatunk a tábla számossága és az index tömörségének szorzata alapján. Figyelem!
A gyártók vagy egyéb leírások alábbi meghatározásai a tömörséggel kapcsolatban nem elég precízek vagy félrevezetõk: „a kettõzött sorok átlagos száma” (Sybase); „a tömörség fordítottan arányos az index érzékenységével” (több helyen).
töredék lásd partíció töredezettség [1] Használja: mindenki, kivéve az Informix. Az a jelenség és hajlam, hogy a row[x] után nem közvetlenül a row[x+1] következik a szünetek és a rendezetlenség miatt. [2] Használja: Informix. Az Informix felhasználói által a particionálásra alkalmazott elnevezés. tranzakció SQL utasítások sorozata, amelyek a munka elemi alkotórészét képezik: vagy egy lépésként érvényesíti, vagy egy egységként görgeti vissza a rendszer. A tranzakció a legutolsó tranzakció vége utáni elsõ utasítással kezdõdik és egy tranzakciót záró utasítással (COMMIT vagy ROLLBACK) fejezõdik be. UDT (User-defined data type) Felhasználó által meghatározott adattípus; adattípus, amelyet a felhasználó az SQL CREATE TYPE utasításával hoz létre. Unicode Karakterkódolás. A Java, valamint néhány DBMS az SQL NCHAR és NCHAR VARYING típusainak kódolására használja. uniquifier Használja: Microsoft. A fürtözött indexhez adott, azt egyedivé tevõ négybájtos érték. URL (Uniform Resource Locator) Weblap elektronikus címe. utasításforma A szavak megválasztása és elrendezése (itt: SQL utasításban). válaszidõ Egy utasítás futtatásához szükséges idõ. vállalati szintû programmag Java nyelvû kiszolgáló-összetevõ. végrehajtási terv Az optimalizáló által egy SQL parancs végrehajtására használt megoldási terv. vegyes tábla Tábla, amely oszlopainak értéke két vagy több másik táblából származik.
B. függelék • Szójegyzék vektor Egydimenziós tömb. versengés Ugyanazon adatbázis több tranzakció közt való megosztásának lehetõsége. versengést feloldó szótári rendezés Több lépésbõl álló rendezési folyamat, amely különbséget tesz az ékezetes és ékezet nélküli, valamint a kis- és nagybetûk között. versengõ tranzakciók Két tranzakció, amelyek kezdõ és befejezõ idõpontja a másikéval átfedésben van. A versengõ tranzakciók közti zavarás kiküszöbölésére a DBMS zárolást alkalmazhat. vezérelt tábla lásd belsõ tábla vezérlési intervallum lásd lap vezérlõ Az a tábla, amelyet egy belsõ lekérdezés vagy táblakapcsolat futtatása esetén a DBMS elõször vizsgál. vezérlõ tábla lásd külsõ tábla zárolás Az az eljárás, amellyel a DBMS megóvja a versengõ tranzakciókat attól, hogy zavarják egymást. Fizikailag a zárolás a következõ három dolog egyike lehet: kallantyú, jel a falon, vagy RAM-rekord. zárolási mód A DBMS által a tranzakcióhoz alkalmazott zárolási mód. A lehetõségek: kizárólagos, megosztott vagy adatfrissítõ. zárolási rekord lásd RAM rekord zárolási szint lásd szemcsézettség zárolási típus lásd zárolási mód zárolás-kiterjesztés Több létrejött vagy lehetséges kis „szemcséjû” zárolás egyesítése egy nagy szemcséjû zárolássá. A versengés csorbát szenved, de kisebb ráfordítással jár. zsugorító adatmódosítás Adatmódosító utasítás, amely csökkenti a sor méretét.
441