Dokumen tersebut membahas tentang optimasi query pada sistem basis data, meliputi komponen query processing seperti bahasa query SQL dan metodologi eksekusi query, optimasi query untuk menentukan rencana eksekusi terbaik, serta lapisan-lapisan pada query processing seperti query decomposition, data localization, global dan local optimization.
2. 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”
4. Memilih Alternatif
SELECT nmpel
FROM pelanggan,daya_terpasang
WHERE pelanggan.idpel = daya_terpasang.idpel
AND daya > 1300
Strategi 1
Π nmpel(σdaya >1300 Λ pelanggan.idpel=daya_terpasang.idpel(pelanggan X daya_terpasang))
Strategi 2
Πnmpel(pelanggan idpel (σdaya>1300 (daya_terpasang))
5. Objek Optimasi Queri
Minimal Biaya
I/O Cost + CPU Cost + Communication Cost
Wide Area Networks
Biaya komunikasi akan mendominasi
1. Bandwidth Rendah
2. Kecepatan rendah
Local Area Networks
Biaya komunikasi tidak mendomionasi
7. Lapisan Pada Query Processing
Query Decomposition
Data Localization
Global Optimazation
Local Optimazation
Global
Schema
Fragment
Schema
Stats On
Fragments
Local
Schema
Control
Site
Local
Sites
8. 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)
9. 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.
10. 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)
11. Local Optimization
Pada lapisan ini , query terbaik sudah
terpilih, dan setiap sub query berada
di satu site.
12. Dekomposisi Query
Normalisasi
Manipulasi Queri
Analisa
Mendeteksi queri yang salah
Sederhanakan
Mengeleminasi predicate yang berulang
Tata Ulang
Gunakan aturan transformasi
13. Normalisasi
Aturan untuk operasi logika
1. p1 p2 <=> p2 ^ p1
2. p1 V p2 <=> p2 V p1
3. p1 ^ ( p2 ^p3) (p1 ^ p2) ^p3
4. p1 V (p2 Vp3) ( p1 V p2) Vp3
5. p1 ^ (p2 Vp3)(p1 ^ p2) V (p1 ^ p3)
6. p1 V (p2 ^ p3) (p1 V p2) ^ (p1 V p3)
7. ( p1 ^ p2) p1 V p2
8. ( p1 V p2) p1 ^ p2
9. (p) p
14. Contoh 1
Select nmpel
From pelanggan p , daya_terpasang d
Where (p.idpel = d.idpel And ap = 'lenteng agung‘
And daya = 1300 )
or
( p.idpel = d.idpel And ap = 'lenteng agung'
And daya = 900 )
Mencari nama pelanggan dengan ap ‘lenteng agung ‘ dengan daya 1300
atau 900 watt
SQL :
Select nmpel
From pelanggan p , daya_terpasang d
Where p.idpel = d.idpel
And ap = “lenteng agung”
And (daya = 1300 Or daya = 900)
Normalisasi :
p.idpel = d.idpel ap=“lenteng agung” (daya = 1300 V Daya =900)
atau
(p.idpel = d.idpel ap=“lenteng agung” Daya = 1300)
V
(p.idpel = d.idpel ap=“lenteng agung” Daya = 900)
15. 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
16. Contoh 2
Select alamat
From pelanggan
Where ap > 1900
Queri tidak benar :
Atribut alamat tidak dideklarasikan dalam
struktur tabel
Operator > 1900 tidak compatible dengan type text dari ap
17. 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
18. Contoh 3:
Cari nama pelanggan dan daya dengan tarif kurang dari 1100
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
19. Query Graph
pel
daya
harga
FROM FROM pelanggan p, daya_terpasang d, harga h
WHERE p.idpel = d.idpel
AND d.gol = h.gol
AND ap = “lenteng agung"
Tarif <100
AND tarif <100
ap = “lenteng agung"
hasil
SELECT nmpel, daya
20. Analisis
Jika Graph tidak terkoneksi , queri salah
SELECT nmpel, tarif
FROM pelanggan, harga
WHERE ap = “lenteng agung"
AND tarif =110
21. Sederhanakan
- Mengapa Harus disederhanakan
- Bagaimana , Gunakan aturan
transformasi
1. p ^ p p
2. p V p p
3. p ^ true p
4. p V false p
5. 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
22. Contoh 4
SELECT ap
FROM pelanggan
WHERE nmpel = “sely”
OR (NOT (ap = “semplak”)
AND (ap= “semplak”
OR ap = “bintaro.”)
AND NOT (ap = “bintaro”))
SELECT ap
FROM pelanggan
WHERE nmpel = “sely”
23. Tata Ulang
Gunakan query tree
Contoh :
Cari nama pelanggan yang tidak dilayani oleh ap
lenteng agung yang mempunyai daya > 1300 dan
merupakan golongan rumah
SELECT p.nmpel
FROM pelanggan p,daya_terpasang d, harga h
WHERE p.idpel = d.idpel
AND d.gol = h.gol
AND p.Ap <>'lenteng agung'
AND d.daya >900
AND h.tari=85
Π nmpel
σ h.tarif =85
σ d.Daya >900
σ p.ap <> lenteng agung
pelanggan Daya_terpasang harga
select nmpel from
(select *
from pelanggan
natural join daya_terpasang
natural join harga
where ap<> 'lenteng agung' and daya>900 and
tarif=85)
24.
25.
26. Equivalent query
Π nmpel
σ p.Ap <>'lenteng agung‘ ^ d.daya >900 ^ h.gol='rumah’
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)
pelanggan Daya_terpasang harga
27. RESTRUCTURING
Π idpel,nmpel
((select idpel,nmpel from pelanggan where
((select idpel,gol from daya_terpasang
(select gol from harga where tarif =85)))
σ Ap<>’lenteng agung’
Π nmpel
select nmpel from
ap<>'lenteng agung')
natural join
where daya>900)
natural join
Π idpel,gol Π gol
σ Daya>900
σ tarif=85
pelanggan Daya_terpasang harga
28. Tugas kelompok
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
Optimasikan query ini
2. SELECT pno
FROM pernerbangan
WHERE berangkat =10:00 OR harga>700,000
AND (berangkat <>10:00 OR harga>700,000)
Ini juga dioptimasi
3. SELECT pilot_nama
FROM pilot plt, sertifikat s, pesawat pst,
penerbangan p
WHERE pilotid.p = pilotid.s AND pstno.pst =
pstno.s
AND pstno.pst = pno.p
AND asal =”semarang”
AND pstnama=”boeing”