bab 05 - overview eval query

23
DBMS S2– Arif Djunaidy – FTIF ITS Bab 5 - 1 /23 Database Management Systems Database Management Systems Bab 5 Bab 5 Overview Overview Evaluasi Query Evaluasi Query (Chap. 12 – Ramakrishnan) (Chap. 12 – Ramakrishnan)

Upload: yanto-guru-tik

Post on 14-Jun-2015

162 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Bab 05 - Overview Eval Query

DBMS S2– Arif Djunaidy – FTIF ITS Bab 5 - 1/23

Database Management Database Management SystemsSystems

Bab 5Bab 5Overview Overview

Evaluasi QueryEvaluasi Query(Chap. 12 – Ramakrishnan)(Chap. 12 – Ramakrishnan)

Page 2: Bab 05 - Overview Eval Query

DBMS S2– Arif Djunaidy – FTIF ITS Bab 5 - 2/23

Pokok Bahasan Informasi deskriptif apa yang disimpan oleh DBMS

dalam katalognya ? Alternatif apa saja yang perlu dipertimbangkan

dalam melakukan retrieving baris-baris dari sebuah tabel ?

Mengapa DBMS mengimplementasikan beberapa algoritma untuk setiap operasi aljabar ? Faktor-faktor apa yang mempengaruhi kinerja relatif dari algoritma-algoritma yang berbeda ?

Apa yang dimaksud dengan rencana evaluasi query dan bagaimana rencana tersebut direpresentasikan ?

Mengapa upaya untuk memperoleh sebuah rencana evaluasi query yang baik dianggap penting ? Bagaimana hal ini dapat dilakukan dalam relational DBMS ?

Page 3: Bab 05 - Overview Eval Query

DBMS S2– Arif Djunaidy – FTIF ITS Bab 5 - 3/23

Overview Evaluasi Query Rencana (Plan): Berupa tree dari operator-operator Aljabar

Relasional (ops. R.A.), yang diikuti dengan pilihan algoritma tertentu untuk setiap operator. Setiap operator secara tipikal diimplementasikan dengan

menggunakan antar-muka `tarik’ (pull), yaitu bilamana sebuah operator `ditarik’ utk “ouput tuples” berikutnya, maka operator tersebut akan `menarik’ semua input-nya dan melakukan perhitungan terhadap inputs tsb menggunakan operator yang dimaksud.

Dua issue utama dalam optimasi query: Utk sebuah query yang diberikan, rencana apa yang diperlukan ?

• Diperlukan algoritma utk menelusuri ruang rencana guna memperoleh nilai (estimasi) rencana yang termurah.

Persoalan: bagaimana mengestimasi biaya suatu rencana? Tujuan ideal: Cari rencana terbaik. Prakteknya: Hindari rencana-

rencana terjelek ! Dalam kuliah ini dibahas pendekatan/teknik evaluasi query yang

digunakan dalam System R.

Page 4: Bab 05 - Overview Eval Query

DBMS S2– Arif Djunaidy – FTIF ITS Bab 5 - 4/23

Beberapa Teknik Umum Algoritma-algoritma utk mengevaluasi operator-

operator relasional menggunakan beberapa ide sederhana berikut secara intensif: Indexing: Dpt menggunakan WHERE conditions utk

melakukan retrieve sekumpulan tuples yang relatif sedikit (yang memenuhi kondisi selections atau joins)

Iteration: Kadangkala, lebih cepat untuk men-scan semua tuples, walaupun terdapat sebuah index. (Kadangkala, kita dapat men-scan data entries dalam sebuah index dari pada harus men-scan tabel itu sendiri)

Partitioning: Dengan menggunakan sorting atau hashing, kita dpt mempartisi input tuples dan menggantikan sebuah operasi yang mahal dengan operasi-operasi serupa yang melibatkan input tuples yang lebih sedikit.

Evaluasi query yang dijelaskan dlm bab ini dilakukan dengan memperhatikan teknik-teknik umum di atas !

Page 5: Bab 05 - Overview Eval Query

DBMS S2– Arif Djunaidy – FTIF ITS Bab 5 - 5/23

Katalog Sistem Evaluasi query membutuhkan informasi mengenai relasi dan

indexes yang dilibatkan. Untuk ini, Katalog sistem secara tipikal paling tidak harus berisikan: # tuples (NTuples) dan # pages (NPages) utk setiap relasi. # nilai-nilai index key yang berbeda (NKeys) dan # pages (INPages)

untuk setiap index (leaf pages utk B+tree). Tinggi index (IHeight), range nilai-nilai key utk setiap index:

maksimum (High) dan minimum (Low) untuk setiap tree index. Katalog sistem di-update secara periodik.

Proses updating yang dilakukan utk setiap kali terjadi perubahan data akan mempunyai biaya I/O yang tinggi. Untuk ini dapat digunakan aproksimasi, walaupun akan terdapat sedikit inkonsistensi

Informasi yang lebih detil (misalnya, histogram dari nilai-nilai dalam beberapa field) kadangkala juga perlu disimpan.

Relasi yang akan dijadikan contoh dalam bab ini: Sailors (sid: integer, sname: string, rating: integer, age: real) : 500 pages @ 80

tuples Reserves (sid: integer, bid: integer, day: date, rname: string) : 1000 pages @

100 tuples

Page 6: Bab 05 - Overview Eval Query

DBMS S2– Arif Djunaidy – FTIF ITS Bab 5 - 6/23

Lintasan Akses (Access Paths) Sebuah lintasan akses merupakan metode utk

melakukan retrieving tuples, berupa: File scan, atau penelusuran index yang matches (memenuhi) suatu

seleksi (dalam suatu query) Salah satu bentuk seleksi yang sederhana disebut “Conjunctive

Normal Form (CNF)” : konjungsi kondisi dalam bentuk “attr op value” (op salah satu dari operator perbandingan <, , =, , >, atau ).

Sebuah tree index matches (kunjungsi dari) terms yang hanya melibatkan attributes dalam prefix dari search key. Contoh: Tree index pada <a, b, c> matches seleksi a=5 AND b=3, dan a=5

AND b>6, tetapi bukan b=3 atau b=5 AND c=3 (<a>, <a,b> prefix, tetapi <b>, <a,c> dan <b,c> bukan prefix)

Sebuah hash index matches (konjungsi dari) terms yang memiliki sebuah term attribute = value utk setiap attribut dalam search key dari index. Contoh: Hash index pada <a, b, c> matches a=5 AND b=3 AND c=5; tetapi

BUKAN untuk b=3, atau a=5 AND b=3, atau a>5 AND b=3 AND c=5.

Page 7: Bab 05 - Overview Eval Query

DBMS S2– Arif Djunaidy – FTIF ITS Bab 5 - 7/23

Catatan utk Seleksi yang Komplek

Kondisi seleksi harus dikonversi terlebih dahulu ke conjunctive normal form (CNF):

(day<8/9/94 OR bid=5 OR sid=3 ) AND (rname=‘Paul’ OR bid=5 OR sid=3)

Dalam kuliah untuk bab ini, seleksi hanya dibatasi untuk kondisi yang TIDAK melibatkan OR. Lihat buku referensi lain utk kasus-kasus umum yang melibatkan konjungsi AND dan OR.

SELECT …....FROM …....

WHERE (day<8/9/94 AND rname=‘Paul’) OR bid=5 OR sid=3

Page 8: Bab 05 - Overview Eval Query

DBMS S2– Arif Djunaidy – FTIF ITS Bab 5 - 8/23

Satu Pendekatan utk Seleksi

Cari lintasan akses yang paling selektif, gunakan lintasan tsb untuk melakukan retrieval tuples, kemudian lakukan seleski pada terms tersisa yang tidak match dengan index: Most selective access path: Sebuah index atau file scan yang

diperkirakan akan memerlukan jumlah page I/O terkecil. Terms yang match dengan index akan mereduksi jumlah tuples

yang di-retrieved; terms lainnya digunakan utk membuang beberapa tuples yang tidak memenuhi kondisi, tetapi tidak mempengaruhi jumlah dari tuples/pages yang akan diambil (fetched).

Perhartikan day<8/9/94 AND bid=5 AND sid=3. B+ tree index pada day dpt digunakan; kemudian, bid=5 and sid=3 harus dicek utk setiap tuple yang di-retrieved. Hal yang sama, hash index pada <bid, sid> dpt digunakan terlebih dahulu; kemudian day<8/9/94 harus dicek untuk setiap tuple yang di-retrieved.

Page 9: Bab 05 - Overview Eval Query

DBMS S2– Arif Djunaidy – FTIF ITS Bab 5 - 9/23

Penggunaan Index utk Seleksi Biaya seleksi bergantung pada #qualifying

tuples, dan clustering. Biaya pencarian qualifying data entries (biasanya

kecil) ditambah biaya utk retrieving records (bisa besar tanpa clustering).

Sebagai ilustrasi perhatikan contoh query di bawah, dengan asumsi nilai attribut rname terdistribusi secara uniform, dan sekitar 10% dari tuples memenuhi kondisi seleksi (1000 pages, 100 tuples). Dengan menggunakan clustered index, biaya dapat sedikit lebih kecil dari 100 I/Os; tetapi jika unclustered, dapat mencapai 10000 I/Os !

SELECT *FROM Reserves RWHERE R.rname < ‘Abc%’

Page 10: Bab 05 - Overview Eval Query

DBMS S2– Arif Djunaidy – FTIF ITSBab 5 - 10

/23

Proyeksi

Bagian yang mahal adalah proses utk membuang duplikasi. Sistem SQL tidak membuang duplikai kecuali jika keyword

DISTINCT dinyatakan dalam query. Sorting Approach: Sort pada <sid, bid> dan buang

duplikasi. (Dapat dibuat lebih optimal dengan cara membuang informasi yang tidak diiginkan pada saat melakukan proses sorting.)

Hashing Approach: Hash pada <sid, bid> untuk membuat sejumlah partisi. Muat partisi ke dalam memory satu demi satu, kemudian bangun struktur hash dalam memory, dan lakukan eliminasi duplikasi. Jika tersedia index pada R.sid dan R.bid dalam search key,

biaya dapat menjadi lebih murah dibandingkan harus melakukan sorting data entries!

SELECT DISTINCT R.sid, R.bidFROM Reserves R

Page 11: Bab 05 - Overview Eval Query

DBMS S2– Arif Djunaidy – FTIF ITSBab 5 - 11

/23

Join: Index Nested Loops (INL)

Jika tersedia index pada join column dari salah satu relasi (misalkan S), kita dapat mengeksploitasi index utk FOR-LOOP bagian dalam utk memperoleh matching disebut index nested loops join. Biaya: M * ( 1 + pR * cost untuk mencari matching S tuples) , M

= total biaya utk melakukan file scan dari relasi R Utk setiap R tuple, biaya utk menelusuri S index rata-

rata sekitar 1.2 I/Os utk hash index, 2-4 I/Os utk B+ tree.

Biaya utk mencari S tuples (dengan asumsi menggunakan alternatif 2 atau 3 utk data entries) akan bergantung pada clustering. Clustered index: 1 I/O (typical), sedang unclustered: dapat

mencapai 1 I/O per matching S tuple.

FOR setiap tuple r R DO FOR setiap tuple s S DO

IF ri = sj THEN tambahkan <r, s> ke dalam hasil

Page 12: Bab 05 - Overview Eval Query

DBMS S2– Arif Djunaidy – FTIF ITSBab 5 - 12

/23

Contoh: Index Nested Loops Join

Hash-index (Alt. 2) pada sid of Sailors (sbg. inner): Scan Reserves: 1000 pages I/Os, 100*1000 tuples. Utk setiap Reserves tuple: 1.2 I/Os utk mengambil data

entry dlm index, ditambah 1 I/O utk mengambil (tepat satu) matching Sailors tuple. Total: 220,000 I/Os.

Hash-index (Alt. 2) pada sid of Reserves (sbg. inner): Scan Sailors: 500 pages I/Os, 80*500 tuples. Utk setiap Sailors tuple: 1.2 I/Os utk mendapatkan

index page bersama dengan data entries, ditambah biaya utk retrieving matching Reserves tuples. Dg asumsi distribusi merata, 2.5 reservations per sailor (100,000 / 40,000). Biaya utk melakukan retrieving menjadi 1 atau 2.5 I/Os bergantung pada apakah index di-clustered atau tidak. Total 40000 * (1.2 + 2.5) ( ???? I/Os)

Page 13: Bab 05 - Overview Eval Query

DBMS S2– Arif Djunaidy – FTIF ITSBab 5 - 13

/23

Join: Sort-Merge (R S) Sort R dan S pada join column, kemudian gunakan

scan utk melakukan ``merge’’ (pada join column.) . Lanjutkan scan dari R hingga current R-tuple >= current S

tuple, kemudian lanjutkan scan dari S hingga current S-tuple >= current R tuple; Lakukan langkah tersebut hingga current R tuple = current S tuple.

Pada akhir langkah di atas, semua R tuples dg nilai yang sama dlm Ri (current R group) match dengan semua S tuples dg nilai yang sama dlm Sj (current S group); Return output <r, s> untuk semua pasangan dari tuples yang diperoleh.

Kemudian lakukan kembali (resume) scanning R dan S. Biaya:

i=j

NMBNNBMM BB 1)/(log*21)/(log*2 11

dimana M dan N adalah # pages dari masing-masing relasi, dan B adalah # buffer memory pages yang digunakan untuk melakukan partial sorting

Page 14: Bab 05 - Overview Eval Query

DBMS S2– Arif Djunaidy – FTIF ITSBab 5 - 14

/23

Contoh: Sort-Merge Join

Dengan asumsi bahwa, baik Reserves maupun Sailors dapat di-sorted dlm 2 passes biaya total join sebesar 7500 I/Os: Biaya sorting untuk relasi Reserves: 2*2*1000 = 4000 I/Os Biaya sorting untuk relasi Sailors: 2*2*500 = 2000 I/Os Biaya total: 4000 + 2000 + (1000 + 500) = 7500 I/Os.

sid sname rating age 22 dustin 7 45.0 28 yuppy 9 35.0 31 lubber 8 55.5 44 guppy 5 35.0 58 rusty 10 35.0

sid bid day rname

28 103 12/4/96 guppy

28 103 11/3/96 yuppy

31 101 10/10/96 dustin

31 102 10/12/96 lubber

31 101 10/11/96 lubber

58 103 11/12/96 dustin

Sailors

Reserves

Page 15: Bab 05 - Overview Eval Query

DBMS S2– Arif Djunaidy – FTIF ITSBab 5 - 15

/23

Optimasi QueryRuang Rencana

(Space of Plans): Relational query optimizer secara tipikal mengenali query dengan memper-lakukan query sebagai ekspresi dari kombinasi operator-operator relasional - -

Query Parser

Query Plan Evaluator

Query Optimizer

PlanGenerator

Plan CostEstimator

CatalogManager

Query

Parsed Query

Estimated Plan

Optimizer Komersial: Optmizer yang digunakan oleh berbagai DBMS komersial

merupakan modul yang sangat komplek, yang secara tipikal memerlukan 40 hingga 50 man-years untuk pengembangannya

Page 16: Bab 05 - Overview Eval Query

DBMS S2– Arif Djunaidy – FTIF ITSBab 5 - 16

/23

Sepintas tentang System R Optimizer Dampak:

Paling banyak digunakan pada saat ini; dapat bekerja dengan baik untuk operasi yang melibatkan < 10 joins.

Cost estimation: Approximate art at best. Statistik dipelihara dalam system catalogs dan digunakan

untuk mengestimasi biaya operasi dan ukuran hasil operasi. Mempertimbangkan kombinasi biaya CPU dan I/O.

Plan Space: Too large, must be pruned. Hanya mempertimbangkan ruang left-deep plans Left-deep plans memungkinkan output setiap operator utk di-

pipelined ke dalam operator berikutnya tanpa melakukan penyimpanan dalam relasi sementara.

Menghindari penggunaan Cartesian products.

Page 17: Bab 05 - Overview Eval Query

DBMS S2– Arif Djunaidy – FTIF ITSBab 5 - 17

/23

Estimasi Biaya

Utk setiap rencana (plan): Harus mengestimasi biaya utk setiap operasi dlm

plan tree.• Bergantung pada kardinalitas tuples masukan dan luaran.• Telah dibahas sebelumnya bagaimana cara mengestimasi

biaya operasi (sequential scan, index scan, joins, dll.) Juga harus mengestimasi ukuran dari hasil untuk

setiap operasi dalam tree !• Menggunakan informasi mengenai relasi-relasi yang

digunakan.• Untuk operasi selections dan joins, terms yang dilibatkan

diasumsikan independen satu sama lain.

Page 18: Bab 05 - Overview Eval Query

DBMS S2– Arif Djunaidy – FTIF ITSBab 5 - 18

/23

Estimasi Ukuran dan Faktor Reduksi

Perhatikan query block:

# tuples maksimum dlm hasil adalah perkalian dari kardinalitas relasi-relasi yang terdapat dalam FROM clause.

Faktor reduksi (RF) yang di asosiasikan dg setiap term merefleksikan dampak dari term dlm mereduksi ukuran hasil. Kardinalitas hasil = # tuples max * perkalian semua RF’s. Asumsi implisit bahwa terms independen satu sama

lain! Term: col=value RF: 1/NKeys(I), utk index I pada col Term: col1=col2 RF: 1/MAX(NKeys(I1), NKeys(I2)) Term: col>value RF: (High(I)-value)/(High(I)-Low(I))

SELECT attribute listFROM relation listWHERE term1 AND ... AND termk

Page 19: Bab 05 - Overview Eval Query

DBMS S2– Arif Djunaidy – FTIF ITSBab 5 - 19

/23

Contoh Skema Relasi

Serupa dengan skema pada bab-bab sebelumnya; kecuali ditambahkan attribut rname utk variasi.

Reserves: Setiap tuple mempunyai panjang 40 bytes, 100

tuples per page, 1000 pages. Sailors:

Setiap tuple mempunyai panjang 50 bytes, 80 tuples per page, 500 pages.

Sailors (sid: integer, sname: string, rating: integer, age: real)Reserves (sid: integer, bid: integer, day: dates, rname: string)

Page 20: Bab 05 - Overview Eval Query

DBMS S2– Arif Djunaidy – FTIF ITSBab 5 - 20

/23

Contoh Motivasi

Cost: 500*1000 I/Os = 500000 I/Os

Tanpa optimasi: worst plan ! Kehilangan beberapa

peluang: selections di-`pushed’ lebih awal, tidak memanfaatkan index, dlsb.

Sasaran optimasi: Mencari plans yang lebih efisien yang memberikan hasil query yang sama.

SELECT S.snameFROM Reserves R, Sailors SWHERE R.sid=S.sid AND R.bid=100 AND S.rating>5

Reserves Sailors

sid=sid

bid=100 rating > 5

sname

Reserves Sailors

sid=sid

bid=100 rating > 5

sname

(Simple Nested Loops)

(On-the-fly)

(On-the-fly)

RA Tree:

Plan:

Page 21: Bab 05 - Overview Eval Query

DBMS S2– Arif Djunaidy – FTIF ITSBab 5 - 21

/23

Alternative Plans 1 (No Indexes)

Perbedaan utama: push selects. Biaya dari plan:

Scan Reserves (1000) + write temp T1 (10 pages, jika terdapat 100 boats dan diasumsikan terdistribusi secara merata).

Scan Sailors (500) + write temp T2 (250 pages, jika terdapat 10 ratings dan diasumsikan terdistribusi secara merata).

Sort T1 (2*2*10), sort T2 (2*4*250), merge (10+250) (asumsi tersedia buffer dengan ukuran 5 pages).

Total: (1000 +10) + (500+250) + (40+2000+260) = 4060 page I/Os. Jika digunakan Nested-Loops join, biaya join = 10+4*250, biaya

total = 2770. (Asumsi tersedia buffer dengan ukuran 3 pages) Jika dilakukan `push’ projections, T1 hanya memp sid, T2 hanya

memp sid dan sname: T1 dapat ditempatkan dlm 3 pages, biaya Nested-Loops join akan

turun menjadi lebih kecil dari 250 pages, total sekitar 2000.

Reserves Sailors

sid=sid

bid=100

sname(On-the-fly)

rating > 5(Scan;write to temp T1)

(Scan;write totemp T2)

(Sort-Merge Join)SELECT S.snameFROM Reserves R, Sailors SWHERE R.sid=S.sid AND R.bid=100 AND S.rating>5

Page 22: Bab 05 - Overview Eval Query

DBMS S2– Arif Djunaidy – FTIF ITSBab 5 - 22

/23

Alternative Plans 2With Indexes Dengan clustered index pada bid pada

Reserves, diperoleh 100.000/100 = 1000 tuples pada 1000/100 = 10 pages.

INL dengan pipelining (outer tidak direalisasikan).

Keputusan utk tidak mem-push rating>5 sebelum join didasarkan pada

ketersediaan sid index pada Sailors. Biaya: Selection pada Reserves tuples (10 I/Os); untuk setiap tuple, harus memperoleh matching Sailors tuple (1000*1.2);shg total 1210 I/Os.

Join column sid adalah key untuk Sailors.–Paling banyak satu matching tuple, unclustered index pada sid OK.

– Upaya utk melakukan “projecting out” terhadap fields yang tidak diperlukan dari bagian luar (outer) tidak membantu menurunkan biaya.

Reserves

Sailors

sid=sid

bid=100

sname(On-the-fly)

rating > 5

(Use hashindex; donot writeresult to temp)

(Index Nested Loops,with pipelining )

(On-the-fly)

Page 23: Bab 05 - Overview Eval Query

DBMS S2– Arif Djunaidy – FTIF ITSBab 5 - 23

/23

Rangkuman Terdapat beberapa alternatif algoritma evaluasi query

untuk setiap operator relasional Sebuah query dievaluasi dengan mengkonversikannya

menjadi sebuah tree of operators dan mengevaluasi operators tersebut dalam tree

Harus memahami optimasi query yang digunakan dalam DBMS guna memahami secara pernuh dampak kinerja dari suatu desain database (relasi dan indexes) yang dilakukan pads suatu beban kerja dari transaksi (sekumpulan queries)

Dua hal utama yang perlu diperhatikan dalam optimasi query: Pertimbangkan satu set alternative plans.

• Harus memangkas (prune) ruang pencarian; secara tipikal melalui left-deep plans only.

Harus mengestimasi biaya dari setiap “plan”.• Harus mengestimasi ukuran dari hasil dan biaya biaya dari setiap

“plan node”.• Issue kunci: Implementasi statistik, indexes, dan operator.