1. Pendahuluan
1.1 Latar Belakang
User hanya menulis:
SELECT * FROM mahasiswa WHERE prodi='Informatika';
Tapi DBMS harus:
- parsing query
- menganalisis sintaks
- mencari rencana eksekusi terbaik
- memilih indeks
- membaca storage
Semua ini disebut:
Query Processing.
2. Tujuan Pembelajaran
Mahasiswa mampu:
- Memahami konsep query processing
- Menjelaskan tahapan query processing
- Memahami peran query optimizer
- Menjelaskan teknik optimasi query
- Menggunakan tools EXPLAIN
3. Konsep Query Processing
Query processing adalah:
proses DBMS menerjemahkan perintah SQL menjadi serangkaian operasi internal untuk menghasilkan hasil query.
Tujuan:
- Akurat
- Cepat
- Efisien
4. Tahapan Query Processing
Secara umum:
- Parsing & Translation
- Query Optimization
- Query Execution
5. Tahap 1: Parsing & Translation
5.1 Parsing
- Cek sintaks SQL
- Cek nama tabel/kolom
Jika salah → error
5.2 Translation
Query diubah ke bentuk internal:
- Relational algebra
- Query tree
6. Tahap 2: Query Optimization
Optimasi adalah:
proses mencari rencana eksekusi paling efisien.
Optimizer memilih:
- indeks atau tidak
- join order
- join method
- access path
7. Tahap 3: Query Execution
Executor menjalankan:
- scan
- join
- filter
- sort
- aggregate
8. Query Execution Plan (QEP)
QEP adalah:
rencana detail DBMS mengeksekusi query.
9. Tool: EXPLAIN
Contoh:
EXPLAIN SELECT * FROM mahasiswa WHERE nim='2023001';
Menampilkan:
- full scan / index scan
- cost
- rows
10. Faktor yang Mempengaruhi Optimasi
| Faktor |
|---|
| Ukuran tabel |
| Indeks |
| Statistik data |
| Join |
| Hardware |
11. Relational Algebra dalam Optimasi
Operasi dasar:
- Selection (σ)
- Projection (π)
- Join (⨝)
- Union
- Difference
12. Heuristic Optimization
Aturan logis:
- Selection sedini mungkin
- Projection sedini mungkin
- Join yang kecil dulu
13. Cost-Based Optimization
Optimizer menghitung:
- jumlah I/O
- jumlah CPU
- estimasi waktu
14. Join Processing
Jenis join:
- Nested loop join
- Sort merge join
- Hash join
15. Join Order
Urutan join sangat mempengaruhi performa.
16. Access Path
Cara ambil data:
- Full table scan
- Index scan
- Index seek
17. Peran Indeks dalam Optimasi
Tanpa indeks:
- scan semua
Dengan indeks:
- lompat langsung
18. Statistik Database
DBMS menyimpan:
- jumlah baris
- distribusi nilai
Digunakan optimizer.
19. Query Rewrite
Contoh tidak optimal:
SELECT * FROM mahasiswa;
Optimal:
SELECT nim,nama FROM mahasiswa;
20. Contoh Studi Kasus
Tabel:
- mahasiswa (100k)
- krs (500k)
Query join tanpa indeks:
30 detik
Dengan indeks:
0.3 detik
21. Common Performance Issues
❌ SELECT *
❌ Tidak pakai WHERE
❌ Join tanpa indeks
❌ Subquery berlebihan
22. Teknik Optimasi Praktis
✔ Gunakan indeks
✔ Gunakan WHERE
✔ Batasi kolom
✔ Gunakan LIMIT
✔ Analisis EXPLAIN
23. Optimasi di Dunia Nyata
Digunakan oleh:
- DBA
- Data engineer
- Backend engineer
24. Query Processing vs Query Optimization
| Aspek | Processing | Optimization |
|---|---|---|
| Fokus | Eksekusi | Perencanaan |
| Tujuan | Hasil | Efisiensi |
| Output | Data | QEP |
25. Hubungan dengan Materi Lain
| Materi | Peran |
|---|---|
| Storage | I/O |
| Index | Akses |
| Transaction | Lock |
| Concurrency | Konflik |
26. Evaluasi
PG:
EXPLAIN digunakan untuk:
a. Menjalankan query
b. Melihat rencana eksekusi ✅
c. Menghapus data
Essay:
Jelaskan peran query optimizer!
27. Capaian Pembelajaran
Mahasiswa mampu:
- Menjelaskan tahapan query processing
- Menganalisis QEP
- Mengoptimasi query SQL
28. Posisi Materi di SMBD
Urutan ideal:
- Storage & Index
- Transaksi
- Query Processing & Optimasi
- Distributed DB
29. Ringkasan Akhir
Query processing adalah proses menjalankan SQL, sedangkan query optimization adalah proses mencari cara tercepat untuk menjalankan SQL tersebut.