28
Optimasi Query

Optimasi Query

Embed Size (px)

Citation preview

Page 1: Optimasi Query

Optimasi Query

Page 2: Optimasi Query

Komponen Query Processing Bahasa yang digunakan

SQL : “ Intergrasi bahasa data” Metodelogi Eksekusi Query

Langkah – langkah yang digunakan untuk mengeksekusi dalam gueri yang diinginkan oleh user

Optimasi Query Bagaimana mengetahui rencana

eksekusi yang “baik”

Page 3: Optimasi Query

Tabel yang ada

Pelanggan Daya terpasang

harga

Page 4: Optimasi Query

Memilih Alternatif

SELECT nmpelFROM pelanggan,daya_terpasangWHERE pelanggan.idpel = daya_terpasang.idpelAND daya > 1300

Strategi 1

Strategi 2

Π nmpel(σdaya >1300 Λ pelanggan.idpel=daya_terpasang.idpel(pelanggan X daya_terpasang))

Πnmpel(pelanggan idpel (σdaya>1300 (daya_terpasang))

Page 5: Optimasi Query

Objek Optimasi Queri

Minimal BiayaI/O Cost + CPU Cost + Communication Cost

Wide Area NetworksBiaya komunikasi akan mendominasi

1. Bandwidth Rendah

2. Kecepatan rendah

Local Area Networks

Biaya komunikasi tidak mendomionasi

Page 6: Optimasi Query

Kompleksitas Operasi Relasional

Page 7: Optimasi Query

Lapisan Pada Query Processing

Query Decomposition

Data Localization

Global Optimazation

Local Optimazation

Global Schema

Fragment Schema

Stats OnFragments

LocalSchema

Control Site

Local Sites

Page 8: Optimasi Query

Query Decomposition

Pada Lapis Pertama ini input adalah query dirubah menjadi Aljabar query.

Query Decomposition dibagi menjadi 4 bagian :Normalisasi, analisa semantik, memperbaiki Query, menata ulang struktur dari queri (restruktured)

Page 9: Optimasi Query

Data Localization

Hasil dari lapis pertama akan dibuat dalam bentuk fragment.

Secara Umum membuat fragment guery ada 2 langkah :Distribusi query dipetakan dalam fragment query, menyederhanakan fragment query.

Page 10: Optimasi Query

Global Optimazation

Tujuan dari optimasi query adalah mencari strategi untuk mengeksekusi query.

Strategi eksekusi untuk query terdistribusi tergantung dari aljabar relasional dan cara berkomunikasi ( mengirim/menerima)

Page 11: Optimasi Query

Local Optimization

Pada lapisan ini , query terbaik sudah terpilih, dan setiap sub query berada di satu site.

Page 12: Optimasi Query

Dekomposisi Query

Normalisasi Manipulasi Queri

Analisa Mendeteksi queri yang salah

Sederhanakan Mengeleminasi predicate yang berulang

Tata Ulang Gunakan aturan transformasi

Page 13: Optimasi Query

Normalisasi Aturan untuk operasi logika

1. p1 p2 <=> p2 ^ p12. p1 V p2 <=> p2 V p13. p1 ^ ( p2 ^p3) (p1 ^ p2) ^p34. p1 V (p2 Vp3) ( p1 V p2) Vp35. p1 ^ (p2 Vp3)(p1 ^ p2) V (p1 ^ p3)6. p1 V (p2 ^ p3) (p1 V p2) ^ (p1 V p3) 7. ( p1 ^ p2) p1 V p28. ( p1 V p2) p1 ^ p29. (p) p

Page 14: Optimasi Query

Contoh 1Mencari nama pelanggan dengan ap ‘lenteng agung ‘ dengan daya 1300

atau 900 wattSQL :Select nmpelFrom pelanggan p , daya_terpasang dWhere p.idpel = d.idpelAnd ap = “lenteng agung”And (daya = 1300 Or daya = 900)

Normalisasi :

p.idpel = d.idpel ap=“lenteng agung” (daya = 1300 V Daya =900)

(p.idpel = d.idpel ap=“lenteng agung” Daya = 1300) V

(p.idpel = d.idpel ap=“lenteng agung” Daya = 900)

atau

Select nmpelFrom pelanggan p , daya_terpasang dWhere (p.idpel = d.idpel And ap = 'lenteng agung‘ And daya = 1300 )or ( p.idpel = d.idpel And ap = 'lenteng agung'And daya = 900 )

Page 15: Optimasi Query

Analisa

Menemukan queri yang salah

Tipe yang tidak benar

1. Jika ada atribut atau nama relasi tidak didefenisi dalam skema global

2. Ada operasi yang diaplikasikan ke atribut dengan tipe yang salah

Page 16: Optimasi Query

Contoh 2

Select alamatFrom pelangganWhere ap > 1900Queri tidak benar :

Atribut alamat tidak dideklarasikan dalam struktur tabel

Operator > 1900 tidak compatible dengan type text dari ap

Page 17: Optimasi Query

Kesalahan Semantik

1. Ada komponen yang tidak memberikan konstribusi dalam hasil akhir

2. Hanya sebagian dari relational queris yang dapat di tes untuk koreksi

3. Untuk mendektesi : query graph dan Join Graph

Page 18: Optimasi Query

Contoh 3:

SELECT nmpel, daya

FROM pelanggan p, daya_terpasang d, harga h

WHERE p.idpel = d.idpel

AND d.gol = h.gol

AND ap = “lenteng agung"

AND tarif <100

Cari nama pelanggan dan daya dengan tarif kurang dari 100

Page 19: Optimasi Query

Query Graphpel

daya

harga

FROM pelanggan p, daya_terpasang d, harga h

WHERE p.idpel = d.idpel

p.idpel =

d.idpel

AND d.gol = h.gol

d.gol = h.gol

AND ap = “lenteng agung"

Tarif <100

AND tarif <100

ap = “lenteng agung"

hasil

SELECT nmpel, dayanm

pel

daya

Page 20: Optimasi Query

Analisis Jika Graph tidak terkoneksi , queri salah

SELECT nmpel, tarifFROM pelanggan, hargaWHERE ap = “lenteng agung"AND tarif =110

Page 21: Optimasi Query

Sederhanakan- Mengapa Harus disederhanakan- Bagaimana , Gunakan aturan

transformasi1. p ^ p p2. p V p p3. p ^ true p4. p V false p5. p ^ false false

6. P V true true

7. P ^ p false

8. P V p true

9. p1 ^ (p1 Vp2) p1

10 . p1 V (p1 ^p2) p1

Page 22: Optimasi Query

Contoh 4

SELECT apFROM pelangganWHERE nmpel = “sely”OR (NOT (ap = “semplak”)AND (ap= “semplak”OR ap = “bintaro.”)AND NOT (ap = “bintaro”))

SELECT apFROM pelangganWHERE nmpel = “sely”

Page 23: Optimasi Query

Tata UlangGunakan query treeContoh : Cari nama pelanggan yang tidak dilayani oleh ap lenteng agung yang mempunyai daya > 1300 dan merupakan golongan rumahSELECT p.nmpelFROM pelanggan p,daya_terpasang d, harga hWHERE p.idpel = d.idpelAND d.gol = h.golAND p.Ap <>'lenteng agung'AND d.daya >900AND h.tari=85

pelanggan Daya_terpasang harga

σ p.ap <> lenteng agung

σ d.Daya >900

σ h.tarif =85

∏ nmpel

Page 24: Optimasi Query
Page 25: Optimasi Query
Page 26: Optimasi Query

Equivalent query

pelanggan Daya_terpasang harga

σ p.Ap <>'lenteng agung‘ ^ d.daya >900 ^ h.gol='rumah’

∏ nmpel

select nmpel from(select * from daya_terpasang cross join harga natural join

pelanggan where daya_terpasang.gol=harga.gol and ap<>'lenteng agung' and

daya >900 and tarif=85)

Page 27: Optimasi Query

RESTRUCTURING

pelanggan Daya_terpasang harga

σ Ap<>’lenteng agung’

∏ idpel,nmpel

σ Daya>900

∏ idpel,gol ∏ gol

σ tarif=85

∏ nmpelselect nmpel from

((select idpel,nmpel from pelanggan where ap<>'lenteng agung')

natural join ((select idpel,gol from daya_terpasang

where daya>900) natural join

(select gol from harga where tarif =85)))

Page 28: Optimasi Query

Tugas kelompok

Optimasikan query ini 2. SELECT pnoFROM pernerbanganWHERE berangkat =10:00 OR harga>700,000AND (berangkat <>10:00 OR harga>700,000)

Penerbangan ( pno: string, asal : string, tujuan:string, jarak:integer, berangkat:time, tiba:time, harga:currency, pstno:string)Pesawat (pstno:string, pstnama:string, jaraktempuh:integer)Sertifikat(pilotid:string, pstno:string)Pilot (pilotid: string, pilot_nama:string, gaji : currency)

1. Buat aljabar relasional , query graph dan Query Tree untuk mencari nama pesawat yang dapat diterbangkan nonstop dari asal ke tujuan

Ini juga dioptimasi3. SELECT pilot_namaFROM pilot plt, sertifikat s, pesawat pst, penerbangan pWHERE pilotid.p = pilotid.s AND pstno.pst = pstno.sAND pstno.pst = pno.pAND asal =”semarang” AND pstnama=”boeing”