Az I/O műveletek költségei az index -szkennelések és a táblázatok szkennelései között alapvetően különböznek az adatok hozzáférésének, az oldalak számának olvasásának, valamint a lekérdezés szelektivitásán és az adatszervezésen alapuló hatékonyság szempontjából.
Az index-vizsgálat magában foglalja az adatokhoz való hozzáférést egy indexszerkezet (gyakran B-fa) átlépésével. Az itt található költségek elsősorban két összetevőt tartalmaznak: az index oldalak elérésének költsége és a megfelelő táblázati oldalak lekérésének költsége. Az index oldalak általában véletlenszerű hozzáférési mintákkal rendelkeznek, mivel az index levélcsomópontok nem lehetnek fizikailag szomszédosak a lemezen, ami véletlenszerű I/O műveleteket eredményez. Minden logikai lépést az indexfa a gyökérről a levélre leolvasó oldalakhoz igényel, és ezt a költséget a rendszer véletlen oldalköltség -paraméterével becsüljük meg. A vonatkozó sorok indexbejegyzéseinek megkeresése után a rendszer a megfelelő táblázati oldalakkal rendelkezik. Az ilyen adatoldal -letöltések száma a lekérdezés szelektivitásától és a tárolt adatok és az index sorrend közötti fizikai korrelációtól függ (korreláció néven). A magas korreláció azt jelenti, hogy az indexbejegyzések sorok szorosan megegyeznek a fizikai adatrendeléssel, csökkentve a véletlenszerű I/O -t és az index -szkennelés hatékonyabbá tétele. Másrészt, az alacsony korreláció sok véletlenszerű letöltéshez vezet, ami jelentősen növeli az I/O költségeket.
A CPU költsége az index -szkennelésekben magában foglalja az egyes beolvasott sorok feldolgozását, de a fő költségek az I/O. A láthatóság aspektusa is van: ha az adatbázis láthatósági térképkövetéssel rendelkezik, mely adatoldalak teljesen láthatók az összes tranzakcióhoz, akkor a rendszer néha teljesen átugorhatja az egyes oldalak olvasását csak az indexek szkennelése során, és drasztikusan csökkenti az I/O költségeket.
Ezzel szemben az asztali szkennelések vagy a teljes asztali szkennelés az összes adatoldalt egymás utáni elolvasással a táblázatból. Az I/O itt többnyire szekvenciális, amely általában gyorsabb, mint a véletlenszerű I/O a fonó lemezeken vagy kevésbé büntetve az SSD -ken. A teljes asztali vizsgálat költsége viszonylag állandó, mivel a teljes táblázatot elolvassa, függetlenül a lekérdezésnek megfelelő sorok számától. Ez a költség a táblázatban szereplő oldalak teljes számától függ, nem pedig a kiválasztott sorok számától. A teljes asztali vizsgálat nem részesül előnyben a szelektivitásból; Minden oldalt el kell olvasniuk, még akkor is, ha a lekérdezés erősen szűrődik a sorokon. A modern tárolási technológiákkal és az optimalizálásokkal, például a több blokkolvasásokkal, a párhuzamos leolvasásokkal és a tárolóréteg kirakodásával azonban a teljes asztali vizsgálat költsége versenyképes lehet, vagy még kevesebb lehet, mint az indexszkennelések olyan lekérdezéseknél, amelyek a táblázat jelentős részét lekérdezik.
A költségalapú optimalizáló (CBO) az index-szkennelés és a teljes táblázatkaputatás és a becsült költségek alapján dönt. A nagyon szelektív lekérdezések esetén, ahol csak egy kis sor töredéket kell beolvasni, az index -szkennelések általában alacsonyabb I/O költségekkel rendelkeznek, mivel kevesebb asztali oldal kerül beillesztésre. Ahogy a szelektivitás küszöbértéke növekszik (több sor szükséges), az index -szkennelés I/O költsége növekszik a véletlenszerű oldalak nagyobb száma és az index átjárása miatt, végül meghaladva a teljes táblázatköltség költségeit. Ezen a ponton a CBO támogatja a táblázatot, mivel a szekvenciális I/O költség kevesebb, mint a sok index -keresés véletlenszerű I/O terhe.
Egy másik fontos tényező, amely befolyásolja az I/O költségkülönbségét, a "klaszterezési tényező" vagy az indexgomboknak megfelelő sorok fizikai csoportosítása. Az alacsonyabb klaszterezési tényező (jobb klaszterezés) azt jelenti, hogy az indexen keresztül hozzáférhető sorok fizikailag egymás közelében helyezkednek el, csökkentve a véletlenszerű I/O -t és javítva az index -szkennelés hatékonyságát. A magasabb klaszterezési tényező véletlenszerűbb I/O -hoz vezet az index -vizsgálat során, és csökkenti annak előnyeit, mint a táblázatok szkennelése.
A modern adatbázis -rendszerek párhuzamos szkennelést is végrehajthatnak mind az index, mind a teljes asztali szkennelés, ahol az I/O és a CPU erőforrásokat több munkavállaló között osztják meg, ami csökkentheti a teljes lekérdezési időt. Az I/O alapvető jellege azonban az index -szkennelések (véletlenszerű oldal hozzáférés) és a táblázatok szkennelése (főleg szekvenciális oldal -hozzáférés) szempontjából továbbra is kulcsfontosságú megkülönböztető.
Összefoglalva az I/O költségkülönbségekkel kapcsolatos kulcsfontosságú pontokat:
. A költség érzékeny a szelektivitásra, a korrelációra és a klaszterezési tényezőre.
.
- Az index -szkennelések felülmúlhatják, ha a lekérdezések az adatok kis részhalmazát célozzák meg, de véletlenszerű I/O felső részét szenvednek, amikor a szelektivitás emelkedik.
- A teljes asztali vizsgálat hatékonyabb lehet, ha a táblázat nagy részének hozzáférést igényel a hatékony szekvenciális I/O miatt.
- A láthatósági térképek és a csak indexelhető szkennelések csökkenthetik az I/O költségeket egyes index-szkennelési esetekben az adatlapok leolvasása elkerülésével.
- A párhuzamosság javíthatja mindkét letapogatási típust, de nem változtatja meg az alapvető I/O tulajdonságokat.
- Az optimalizáló kiegyensúlyozza ezeket a költségtényezőket a lekérdezés és az adatok jellemzői alapján a leghatékonyabb módszer kiválasztásához.