Tempat curhatnya anak-anak BASDAT


[DYAH - 13504017] OPTIMIZER
Desember 13, 2007, 11:03 pm
Diarsipkan di bawah: Oracle

 

Oke.. posting sehari sebelum deadline untuk mencoba untuk menghindari jadi seorang deadliner :D . Sekarang saya akan membahas tentang optimasi pada oracle, walau sebelumnya udah ada yang membahas. Yuk mari silaken baca.. ^^

 

Pemilihan suatu rencana untuk melakukan evaluasi terhadap sebuah query cukup bervariasi, tergantung urutan operasi yang digunakan. Pemilihan evaluasi mempengaruhi cost yang akan dihasilkan. Untuk memberikan hasil yang optimal, yaitu cost terkecil, perlu dilakukan estimasi terhadap cost (dalam hal ini akses IO).

 

Oracle melakukan optimasi query dengan mentransformasikan perintah SQL dalam berbagai teknik pengoptimasian untuk mengefisienkan proses namun dengan semantik yang sama. Perintah SQL dapat dieksekusi dengan banyak cara, yaitu diantaranya dengan index scans, full table scans, nested loops, dan hash join. Hmmm.. index, nested loop dan hash join ini nantinya dipelajari di IF3211 Sistem Basis Data kok buat yang belum ngambil. Optimizer  DBMS, termasuk Oracle :-) , menentukan sendiri cara yang paling efisien untuk mengeksekusi perintah SQL.

 

Prosedur yang digunakan untuk mengeksekusi suatu perintah SQL mempengaruhi kecepatan eksekusi query. Seperti yang sudah dijelaskan di postingan sebelumnya, ada dua macam pendekatan yang digunakan, yaitu pendekatan berdasarkan biaya (cost-based) atau berdasarkan aturan (rule-based). Pendekatan cost-based umum digunakan, sedangkan rule-based hanya digunakan untuk kompatibilitas yang lebih rendah. Karena cost-based lebih umum digunakan dan saya malas membahas rule-based, maka pada postingan kali ini akan dibahas mengenai cost-based optimizer.

 

Pilihan optimizer dapat dipengaruhi dengan mengatur goal dari optimizer, dan dengan mengumpulkan data statistik yang mewakili optimizer query. Goal dari optimizer adalah throughput atau response time. Pemilihan cara untuk melakukan evaluasi dapat dilakukan secara manual dengan menggunakan perintah SQL yang tepat untuk menspesifikasikan bagaimana perintah tersebut dieksekusi.

 

Tujuan dari Cost Based Optimizer (CBO) adalah untuk menghasilkan throughput terbaik, yaitu melakukan pemilihan dengan sedikit resource yang dibutuhkan untuk memproses semua baris yang diakses oleh perintah SQL. CBO menentukan rencana eksekusi mana yang merupakan rencana paling efisien. Penentuan ini dilakukan dengan mempertimbangkan jalur akses yang tersedia dan menggunakan informasi berdasarkan statistik untuk tabel atau indeks yang diakses oleh pernyataan SQL.

 

CBO melakukan langkah-langkah berikut:

  • Optimizer menghasilkan sekumpulan rencana untuk suatu query SQL.
  • Optimizer memperkirakan biaya setiap rencana.
  • Optimizer menghitung biaya jalur akses dan urutan join berdasakan perkiraan sumber daya komputer yang terdiri dari operasi I/O, CPU, dan memori. Rencana dengan biaya yang lebih tinggi memakan lebih banyak waktu untuk dieksekusi daripada rencana dengan biaya lebih rendah.
  • Optimizer membandingkan seluruh biaya dari setiap rencana dan memilih satu rencana yang mempunyai biaya paling rendah.

Yak.. sampai di sini bahasan tentang cost-based optimization. Mungkin asisten lain ada yang mau membahas rule-based optimization :P


Belum Ada Tanggapan sejauh ini
Tinggalkan sebuah tanggapan



Tinggalkan sebuah tanggapan
Baris dan paragraf terpisah secara otomatis, alamat email tidak akan ditampilkan, kode HTML diperbolehkan: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <pre> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>