Anda di halaman 1dari 11

Sistem Basis Data :

55.1.1
Studi Kasus/Contoh Soal
- Proses Query & Evaluasi

@ Hanya Dipergunakan Utk Kepentingan Pengajaran di Lingkungan Prodi PJJ-Informatika Udinus Semarang
Contoh Kasus

Misalkan diketahui : dua relasi r (A) dan s (A) dengan r disimpan secara skuensial (file
squential) dan disimpan dalam file yang tidak berurutan (unordered) di disk. Ukuran
blok adalah 2.000 Bytes, ukuran tupel 10 Bytes, dan kardinalitasnya adalah 800.000 tupel
dari kedua relasi (asumsikan sbg instance identik). Nilai-nilai atribut integer A
didistribusikan secara seragam (antara 5 M IO. dan 9 M IO.) dan keduanya relasi unik.
Kinerja disk diberikan sebagai berikut: waktu latensi = 0,008 detik, waktu cari
= 0,016 detik, waktu transfer = 0,001 detik.
a. Tentukan jumlah blok IO dan waktu eksekusi untuk query berikut pada dua relasi:
Q1: σA=6,000,000(x)
Q2: σA<5,009,500(x)
b. Pertimbangkan pembuatan B+ tree indeks untuk r dan s, di mana setiap node berisi
100 entri indeks dan mengisi seluruh blok. Tentukan jumlah blok di setiap tingkat
kedua pohon.
c. Tentukan jumlah blok IO dan waktu eksekusi untuk Q1 dan Q2 ketika indeks pohon-B
+ digunakan.
Jawab Untuk a
a. 2, 000/10 = 200 tuples/block
800, 000/200 = 4, 000 blocks
1 IO = 0.008 + 0.016s + 0.001s = 0.025s, maka :
Q1: σA=6,000,000(r): Binary serach
– Block IOs: ⌈log2 4, 000⌉ = 12
– Time: 0.025 × 12 = 0.3 sec

Q1: σA=6,000,000(s): Sequential search


– Block IOs: rata-rata membaca 2000 blok (setengah dari semua) untuk menemukan nilai unik
– Time: 0.025 × 2000 = 50 sec

Q2: σA<5,009,500(r): Sequential search


– Block IOs:
rata-rata. jarak antar nilai : 4Mio/800, 000 = 5
# Kualifikasi tuples: 9, 500/5 = 1, 900
# Kualisi blocks: ⌈1, 900/200⌉ = 10 block IOs
– Time: 10 × 0.025 = 0.25 sec

Q2: σA<5,009,500(s): Sequential search


– Block IOs: 4000 blocks
– Time: 0.025 × 4, 000 = 100 sec
Jawab Untuk b, c
b. Nodes (=index blocks): 100 index entries per node
Index blocks required tiap-2 level:
- level 3: ⌈800, 000/100⌉ = 8, 000 blocks (leaf nodes)
- level 2: ⌈8, 000/100⌉ = 80 blocks
- level 1: ⌈80/100⌉ = 1 block
⇒ 8, 081 index blocks (total kebutuhan blok, hasilnya sama untuk r dan s)

c. Q1: σA = 6.000.000 (r): B + Tree Search


- Blok IO: 3 blok indeks + 1 blok data = 4 blok
- Waktu: 0,025 × 4 = 0,1 detik

Q1: σA = 6.000.000 (s): sama dengan r


Q2: σA <5,009,500 (r): Indeks tidak opt; karenanya hasil yang sama seperti di (a).
Q2: σA <5,009,500 (s): Ikuti node /leaave di B + -tree

- Block IOs: Ikuti node dari awal untuk menemukan blok data
# tupel kualifikasi (= # nilai kunci kualifikasi): 1, 900
# blok kualifikasi: maks. 1, 900 (setiap tuple kualifikasi di blok berbeda)
# dari B + Tree node yang memenuhi syarat: ⌈1, 900 / 100 ⌉ = 19 (100 entri indeks / node)
Total: 1, 900 + 19 = 1, 919 blok IO

- Waktu: (1, 900 + 19) × 0,025 = 47,975 detik


Contoh Kasus
Diketahui skema relasional berikut ini :
Mhs (nim, nama, alamat, umur)
Matakuliah(kodemk, nama_mk, sks)
Kuliah(nim, kodemk, nilai | nom REFS mhs, kodemk REFS matakuliah)
Info katalog relasi sbb :
Mhs Matakuliah Kuliah
Jum tuple 10,000 500 40,000
Ukuran tuple 200 bytes 100 bytes 80 bytes
Info statistik tambahan : Jum tupel/page 20 40 50
- Distinct value mhs.alamat adalah 200
- Distinct value mhs.umur adalah 50 Jum page 500 13 800

Info index yg tersedia


- Hash index alternativ 2 pada mhs.nim
- Clustered B+ Tree index alternativ 2 pada mhs.alamat
- Unclustered B+ Tree index alternativ 2 mhs.umur
Contoh Kasus
Pertanyaan :
1. Metode yang manakah yang paling efisien untuk query dibawah ini :
Select *
From Mhs
Where (alamat = ‘Purwodadi’ or alamat=‘Semarang’ ) and umur =21;

2. Berkaitan dengan query dibawah ini


Select nim, count(kodemk), sum(nilai)
From Kuliah
Group By nim;
(Catatan : Jika diketahui sistem database memiliki 30 page buffer yg dapat digunakan
utk mengimplementasikan external sort pada group dan agregasi.)

a. Berapa banyak lintasan dari relasi input yang dibutuhkan algoritme berbasis
pengurutan (sorting-based algorithm)?
b. Berapa perkiraan biaya I / O (tidak termasuk biaya penulisan jawaban akhir)?
Contoh Kasus
Pertanyaan :
3. Metode yang manakah yang paling efisien untuk query dibawah ini :
Select *
From Mhs S, Kuliah R Matakuliah C
Where S.nim=R.nim and R.kodemk=C.kodemk;

Asumsi : diberikan 45 buffer page utk query (S |X|R) |X| C. dimulai dg


megalokasikan 31 buffer page utk S |X| R, seanjutnya mengoptimalkan dengan
menyedialan 13 buffer page untuk menampung relasi C dalam memory dan
menggunakan 1 buffer page tambahan untuk menampung hasil akhir sebbelum
mencetak. Perkiraan total biaya I/Os dari rencana evaluasi query . Pastikan untuk
memilih metode yang paling efisien untuk (S | X| R) saat mengestimasi total biaya
(cost I/Os) dari rencana query.
Jawab No.1
1. Asumsikan : distribusi siswa di kota (alamat) dan dalam kelompok umur merata. Asumsikan bahwa nilai atribut umur
didistribusikan secara seragam di seluruh file yang tidak terkluster. Kualifikasi kota memiliki selektivitas yang lebih tinggi
(1/200) dan karena indeks kota terkumpul, kami hanya perlu membaca sejumlah kecil halaman (500/200), ditambah biaya untuk
melintasi pohon dari atas ke bawah dan memindai beberapa leaf page. Asumsi lainnya misa rata-rata entry data dalam indxs
adalah setengah dari ukura tuple, maka :
Plan 1 : File Scan Menggunakan 500 I/Os
Plan 2 : 2 kali scan dg cluster index alamat (kota) bersamaan dengan umur.
Ukuran Tree pada value alamat (kota) : Dimana relasi memiliki 500 page . Jadi B Tree 250 leaf page tersebar pada 133 dan terdiri
dari 3 level.
Cost 1 kali scan = 2 + (250/200)+(500/200) = 7
Jika 2 kali scan = 14.
Plan 3 : scan index umur bersamaan dengan alamat (kota). Karena index umur tidak tercluster dan ada 200 kecocockan usia pada
alamat , maka biaya I/O diperkirakan lebih dari 200.
Plan 4 : Jika kita tidak menggunakan index pada umur utk dpt RID tuple pada value umur 21 dengan langsung me intersect RID
tuple pada value alamat (kota) = Semarang or Purwodadi . Biaya scan indeks pada usia adalah 2 + (250/50) = 7 I/Os. Biaya scan
tuple file heap cluster index pada value alamat (kota) = 3 * 2 = 6 I/Os. Sehingga tidak menggunakan indexs pada usia lebih baik.
Jawab No. 2
2. Asumsikan : distribusi siswa di kota (alamat) dan dalam kelompok umur merata. Asumsikan bahwa nilai atribut umur
didistribusikan secara seragam di seluruh file yang tidak terkluster. Kualifikasi kota memiliki selektivitas yang lebih tinggi
(1/200) dan karena indeks kota terkumpul, kami hanya perlu membaca sejumlah kecil halaman (500/200), ditambah biaya untuk
melintasi pohon dari atas ke bawah dan memindai beberapa leaf page. Asumsi lainnya misa rata-rata entry data dalam indxs
adalah setengah dari ukura tuple, maka :
Plan 1 : File Scan Menggunakan 500 I/Os
Plan 2 : 2 kali scan dg cluster index alamat (kota) bersamaan dengan umur.
Ukuran Tree pada value alamat (kota) : Dimana relasi memiliki 500 page . Jadi B Tree 250 leaf page tersebar pada 133 dan terdiri
dari 3 level.
Cost 1 kali scan = 2 + (250/200)+(500/200) = 7
Jika 2 kali scan = 14.
Plan 3 : scan index umur bersamaan dengan alamat (kota). Karena index umur tidak tercluster dan ada 200 kecocockan usia pada
alamat , maka biaya I/O diperkirakan lebih dari 200.
Plan 4 : Jika kita tidak menggunakan index pada umur utk dpt RID tuple pada value umur 21 dengan langsung me intersect RID
tuple pada value alamat (kota) = Semarang or Purwodadi . Biaya scan indeks pada usia adalah 2 + (250/50) = 7 I/Os. Biaya scan
tuple file heap cluster index pada value alamat (kota) = 3 * 2 = 6 I/Os. Sehingga tidak menggunakan indexs pada usia lebih baik.
Jawab No 3
Plan 1 : File scan Kuliah R (800 I / Os), indeks nest loop join dengan Mahasiswa S pada nim, dan buat tabel hash
dalam memori untuk Matakuliah C dan selidiki saat tupel berasal dari (R | X | S). (Kita juga dapat menggabungkan R
dengan C terlebih dahulu, tetapi ini akan memberikan perkiraan biaya yang sama.)
Biaya I / O = 800 (R) + 40.000 * 2.2 (gabungan terindeks dengan S) + 13 (C) = 813 + 88000 = 88.813.

Plan 2 : Gunakan gabungan hash dua fase antara Kuliah R (dengan 800 halaman) dan Mhs S (dengan 500 halaman),
lalu buat tabel hash dalam memori untuk Matakuliah C (dengan
13 halaman) dan selidiki karena tupel berasal dari R | X | S.
Karena kita mencadangkan 13 buffer page untuk menampung C dalam memori dan 1 buffer ekstra untuk menahan
hasil akhir sebelum mencetaknya, kita memiliki 31 buffer page untuk hash join antara R dan S. Karena 31 lebih besar
dari akar kuadrat dari | S | = 500, kita masih bisa mengimplementasikan R | X | S dalam dua fase.
Total cost = 3 (|R|+|S|) + |C| = 3(500+800) + 13 = 3.913

Plan 3 : juga dapat mempertimbangkan loop bersarang yang diblokir join untuk R dan S. Ambil S sebagai bagian luar
karena lebih kecil.
Total cost = |S| + (|S|/31)*|R| + |C| = 500 + (500/31)*800 + 13. = 13.416,22
Tugas Mandiri
• Misalkan relasi r (A, B) dan s (A, C) memiliki properti berikut:
r memiliki 10.000 tupel dan 5 tupel r cocok menjadi satu blok; s memiliki 125 tupel dan 10
tupel yang pas menjadi satu blok. Dalam relasi r kita memiliki indeks hash pada atribut
A, di mana 100 (search-key, pointer)-pair masuk ke dalam satu bucket. Selanjutnya, nilai-
A di r didistribusikan secara merata di atas nilai-A dalam s, dan 20 blok masuk ke dalam
memori utama.
Hitung biaya (cost) rencana evaluasi berikut untuk r | X | s, dengan konsep sbb:
a. Plan p1: Nested loop with r as outer loop
b. Plan p2: Hash join
c. Plan p3: Merge join (asumsikan r dan s sudah terurut)
• Diketahui relasi r (A, B) dengan indeks B + Tree pada atribut A dan karakteristik berikut:
| r | = 4, 000, 000; 100 entri indeks per blok; 20 tupel data per blok; nilai dari kedua
atribut A dan B didistribusikan secara merata dalam kisaran [1 - 10, 000, 000]; A
membentuk kunci; seek time= 0,016 detik; latensi = 0,008 detik; transfer time = 0,001
detik.
Pertanyaan :
Tentukan jumlah blok (= jumlah node) yang digunakan untuk B + Tree jika blok indeks
terisi hingga 80%.

Anda mungkin juga menyukai