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
- 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
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;
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%.