_Back to _ IF3140 Sistem Basis Data

Naufarrel Zhafif Abhista 13523149
Soal 1
| Operasi | Cost | Banyaknya Tuple |
|---|---|---|
| 12 | 100 | |
| 910 | 600 | |
| 1001 | 2222 | |
| 849 | 133 | |
| 0 (Pipelined) | 133 | |
| Total | 2772 | 133 (Tuple final) |
Penjelasan:
- Untuk seleksi buku dengan atribut penulis bernilai ‘Andrea Hirata’, ada indeks yang berlaku. Maka, digunakan metode A3 (Primary Index, pada Non-Key):
- Pemindaian dilakukan dengan blok
- Tuple:
- Total ada 500 variasi penulis
- Hanya akan diambil 1 penulis
- Karena distribusi seragam, estimasi tuple: tuple.
- Untuk join buku dan peminjaman, kita memiliki 100 tuple buku dari langkah sebelumnya. Kita bisa menggunakan
biddari setiap buku untuk mencari data diPeminjamanmenggunakan secondary index-nya. Metode terbaiknya adalah Nested-Loop Join.- Cost: Menggunakan formula dasar Nested-Loop Join: .
- blok.
- tuple.
- Cost = blok.
- Banyaknya Tuple:
- Kita mencari berapa kali 100 buku (Hasil #2) dipinjam.
- Rata-rata peminjaman per buku = kali.
- Estimasi tuple = 100 buku * 6 = 600 tuple.
- Cost: Menggunakan formula dasar Nested-Loop Join: .
- Untuk seleksi pelanggan berumur lebih dari atau sama dengan 21, karena pencarian didasarkan pada umur, dapat dianggap pencarian dilakukan dengan metode A1 (Linear Scan)
- Pemindaian dilakukan dengan
- Tuple:
- Total ada 24 - 7 + 1 = 18 variasi umur.
- Kondisi umur >= 21 mencakup umur 21, 22, 23, 24 (4 variasi).
- Karena distribusi seragam, estimasi tuple: tuple.
- Join hasil Pelanggan dengan Hasil Join Sebelumnya ((Hasil #1) ⋈ (Hasil #3)) dapat menggunakan Hash Join lagi. Hasil join sebelumnya (Hasil #3) lebih kecil dalam jumlah blok, sehingga akan menjadi build input.
- Cost:
- Blok Hasil #1: blok.
- Blok Hasil #3 (berdasarkan asumsi soal): tuples per block peminjaman = 300.000 / 15.000 = 20. Ukuran tuple hasil join 2x lipat, jadi tuples per block hasil3 = 10. Maka blok
- Cost = blok.
- Banyaknya Tuple:
- Dari 600 peminjaman di Hasil #3, kita ingin tahu berapa yang dilakukan oleh pelanggan berumur >= 21.
- Fraksi pelanggan berumur >= 21 adalah 4/18.
- Estimasi tuple = 600 * (4 / 18) ≈ 133 tuple.
- Cost:
- Proyeksi Nama
- Karena asumsi mekanisme evaluasi adalah pipeline, hasil dari join terakhir (Hasil #4) langsung dialirkan ke operasi proyeksi tanpa disimpan ke disk.
- Cost: 0 (biayanya sudah termasuk dalam operasi join sebelumnya).
- Banyaknya Tuple: Operasi proyeksi tidak mengubah jumlah tuple, hanya kolomnya ⇒ 133 tuple.
Soal 2
1. Ekspresi Aljabar Relasional Awal
Ekspresi awal yang diberikan adalah:
2. Transformasi dengan Aturan Ekuivalensi
Kita dapat mengoptimalkan ekspresi ini dengan menerapkan aturan “mendorong proyeksi sedini mungkin” (Push Projection). Tujuannya adalah untuk mengurangi ukuran (jumlah atribut/kolom) dari relasi-relasi perantara, sehingga proses join selanjutnya menjadi lebih ringan.
Dengan menerapkan aturan ekuivalensi No. 8 (Distribusi Proyeksi terhadap Join), kita mendapatkan ekspresi baru yang lebih optimal:
Ekspresi ini secara signifikan mengurangi jumlah data yang harus diproses pada setiap langkah join.
3. Rencana Evaluasi (Evaluation Plan) Baru dan Estimasi Biaya
Berikut adalah tabel rencana evaluasi berdasarkan ekspresi yang telah dioptimalkan, dengan memanfaatkan index yang tersedia.
| Operasi | Cost (Akses Blok)** | Banyaknya Tuple |
|---|---|---|
| 1001 | 2222 | |
| (dari hasil #1) | 0 | 2222 |
| 12 | 100 | |
| 0 | 100 | |
| 901 | 600 | |
| (dari hasil #5) | 0 | 600 |
| 339 | 133 | |
| (dari hasil #7) | 0 | 133 |
| Total | 2253 | 133 (Tuple final) |
Penjelasan Estimasi Biaya:
-
Seleksi Pelanggan & Proyeksi (Hasil #1 & #2):
-
Tidak ada index pada
umur, jadi menggunakan Linear Scan. Cost = 1001. -
Proyeksi ke
namadanpiddilakukan secara pipelined (Cost = 0).
-
-
Seleksi Buku & Proyeksi (Hasil #3 & #4):
-
Menggunakan primary index pada
penulis. Metodenya adalah Index Scan. -
Cost = **
-
Proyeksi ke
biddilakukan secara pipelined (Cost = 0). Hasilnya (100 tuplebid) sangat kecil dan hanya membutuhkan 1 blok.
-
-
Join Buku dan Peminjaman (Hasil #5):
-
Menggunakan hasil proyeksi Buku (100 tuple
biddalam 1 blok) untuk mencari data diPeminjamanmelalui secondary index-nya padabid. Metode terbaik adalah Index Nested-Loop Join. -
Cost = .
-
-
Join Pelanggan dengan Hasil Join Sebelumnya (Hasil #7):
-
Menggunakan Hash Join. Build input adalah hasil join sebelumnya yang sudah diproyeksi ke
pid(600 tuple, sangat kecil, ~1 blok). Probe input adalah hasil proyeksi Pelanggan (2222 tuple). -
Ukuran blok probe input: Tuple Pelanggan setelah proyeksi lebih kecil, anggap blocking factor menjadi 20. Maka, bprobe=⌈2222/20⌉=112 blok.
-
Cost = .
-
Kesimpulan
Dengan menerapkan aturan ekuivalensi (Push Projection) DAN memanfaatkan index yang tersedia, total biaya untuk rencana evaluasi baru ini adalah 2.253.
Ini menunjukkan bahwa rencana ini lebih optimal daripada rencana di soal 1 (yang biayanya 2.772), membuktikan bahwa menerapkan aturan ekuivalensi seperti mendorong proyeksi dapat menghasilkan rencana eksekusi yang lebih cepat dan efisien.