Query yang diberikan oleh user pada DBMS Oracle secara umum mengalami beberapa Proses. Pemrosesan query yang ada pada DBMS Oracle 10g tidak jauh berbeda dengan yang ada pada DBMS Oracle 9i.
Komponen Arsitektur Pemrosesan Query terdiri dari 4 bagian utama :
- Parser
Parser melakukan pemeriksaan terhadap kebenaran sintaks SQL yang telah diberikan okeh user. Serta memeriksa ebenaran semantik, yaitu objek basis data yang diberikan user benar.
- Optimizer
Optimizer merupakan unit yang melakukan optimasi query menggunakan aturan tertentu untuk menentukan cara yang paling efisien untuk mendapatkan hasil query. Output optimizer merupakan sebuah rencana/plan yang menggambarkan metode eksekusi yang optimal. Oracle menyediakan dua metode optimisasi: CBO (CostBased Optimizer) dan RBO (Rule Based Optimizer). Dan pada umumnya, Oracle menggunakan pendekatan cost untuk menghasilkan rencana yang tepat.
Berikut fitur-fitur yang menggunakan CBO:
- Partition tables and indexes
- Index-organized tables
- Reverse key indexes
- Function-based indexes
- SAMPLE clauses in a SELECT statement
- Parallel query and parallel DML
- Star tranformations and star joins
- Extensible optimizer
- Query rewrite with materialized views
- Enterprise Manager progress meter
- Hash joins
Cost-Based Optimizer (CBO) menentukan execution plan yang paling efisien dengan mempertimbangkan access path yang tersedia dan faktor informasi berdasarkan statistik skema objects (tabel ataupun index) yang diakses melalui suatu SQL statement.
CBO melakukan langkah-langkah optimasi sebagai berikut:
1. Optimizer menggenerate beberapa langkah plan yang potensial untuk memproses suatu SQL statement berdasarkan ketersediaan akses paths dan hints
2. Optimizer melakukan estimasi biaya dari setiap plan berdasarkan statistik pada data dictionary untuk distribusi data dan karakteristik penyimpanan tabel, index, dan partisi yang diakses oleh statement.
3. Optimizer membandingkan seluruh biaya dari plan dan kemudian memilih salah satu yang memiliki biaya yang paling rendah.
Tujuan dari CBO adalah throughout yang terbaik, sesedikit mungkin menggunakan resource untuk memproses semua baris yang diakses oleh statement SQL. Arsitektur dari CBO dapat digambarkan sebagai berikut.
Input dari query transformer adalah parsed query. Query transformer akan mempertimbangkan perubahan bentuk query untuk menentukan query plan yang lebih baik.
Ada empat transformasi query yang digunakan oleh query transformer yaitu view merging, predicate pushing, subquery unnesting, dan query rewrite using materialized views. Keempat transformasi tersebut juga bisa dikombinasikan. Estimator menghasilkan tiga tipe pengukuran yang berbeda yaitu selectivity, cardinality, dan cost. Selectivity merepresentasikan fraksi baris dari set baris bernilai antara 0,0 dan 1,0. Selectivity mengindikasikan berapa banyak baris dari set baris akan melalui test predikat. Cardinality merepresentasikan jumlah baris dalam set baris. Ada beberapa tipe tipe cardinality : effective, join, distinct, dan group cardinality. Cost merepresentasikan unit yang bekerja atau resource yang digunakan untuk melakukan operasi. CBO menggunakan disk I/O, CPU usage, dan memory usage sebagai unit kerja. Operasi dapat berupa scanning tabel, mengakses baris dari tabel menggunakan indeks, melakukan join dua tabel atau sorting tabel.
Pada Oracle 9i optimizer terdapat beberapa fitur ataupun teknik optimalisasi. Teknik tersebut diantaranya :
a. Dynamic Sampling
Pada invokasi pertama kursor mengandung variabel yang diikat, lalu optimizer akan melihat nilai yang diikat tersebut dan menggunakannya untuk mengoptimasi query. Nilai yang diikat pada invokasi oertama harus nilai yang representatif.
b. Bind Peeking
Permasalahan yang muncul ketika menggunakan dynamic sampling adalah statistik optimizer mungkin hilang atau tidak akurat. Untuk itu, statistik harus secara dinamik diikat selama optimasi query. Sebagai contoh :
- Predikat tabel selektif dan berkardinalitas
- Sampling digunakan untuk meminimalisir waktu yang dibutuhkan mengumpulkan statistik.
- Statistik dikumpulkan hanya untuk query yang tidak diakses dalam waktu yang lama.
c. Index Joins
Untuk Oracle 10g terdapat tambahan fitur yaitu Automatic SQL Tuning. Automatic SQL Tuning merupakan fitur otomatis yang dimilki oleh oracle yang biasanya digunakan dalam menganalisa query yang sangat mahal, menentukan kardinalitas dari hasil sementara, dan menghasilkan koreksi terhadap query yang dieksekusi selanjutnya.
Belum Ada Tanggapan sejauh ini
Tinggalkan komentar
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <pre> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>