Sabtu, 05 Januari 2013

OPTIMASI QUERY

A. PENGERTIAN

Optimasi Query adalah cara meminimalkan suatu jalur pencarian untuk menemukan data yang disimpan didalam lokasi fisik. Index dalam database di gunakan untuk meningkatkan kecepatan dalam akses suatu data. Cara kerjanya pada saat query dijalankan, index akan mencari data dan menentukan nilai ROWID untu membantu menemukan lokasi data didisk, akan tetapi jika penggunaan index tdak tepat kecepatan akses tidak berubah.

Contoh kita mengurutkan kolom kota dan propinsi dari tabel Karyawan :
 

User melakukan query sbb :

 



Alternatif membuat tabel dengan SQL :

B.  PERENCANAAN EKSEKUSI

1. Membuat tabel, misalnya PLAN_TABLE menggunakan script utlplan.sql.

2. Tabel PLAN_TABLE dapat digunakn utk cntoh berikut:

SQL> explain plan
Set statement_id=’test1’
Into plan_table for        
Select * from karyawan where gaji=2000000;I 

3. Rencana eksekusi diats diberi nama test1 , terdefinisi di kolom statement_id. Untk mlhat digunakan printah SELECT :

4. Hasil eksekusinya:

 

C. Faktor-faktor yang mempengaruhi optimasi query:

1.      Optimasi aplikasi

Apakah akses dalam suatu aplikasi data sudah efisien? Maksudnya penggunaan objek yang mendukung kecepatan akses (index dan cluster) sudah benar, bagaimanakah database di desain? Maksudnya desain dari database sudah di normalisasi secara tepat , benar dan berurutan.             

2.      Cluster dan index

Cluster ialah sebuah segmen ynag menympan data dari tabel yang berbeda dalm suatu struktur fisik disk yang berdekatan. 

D.  Optimasi query terdiri dari 3 komponen :
 
1.      Search Space

Adalah sekumpulan alternatif ekuivalen yang perencanaan eksekusinya  merepresentasikan query, maksudnya memberikan suatu hasil ynag sama dengan urutan pengimplementasikan, pengoperasian dan perfomance yang berbeda.

2.      Cost Model

Suatu prediksi biaya yang harus dikeluarkan dari suatu query ynag akan di eksekusi.

3.      Search Strategy

Mengeksplorasi search space dan cost model dengan memilih strategi terbaik dari alternatif yang ada. Yang biasa di gunakan ialah dynamic programming yang bersifat determenistik, di mana menghasilkan solusi terbaik, dan randomized strategies (seperti Iterative Improvement dan Simulated Annealing) yang berkonsentrasi pada pencarian solusi optimal dengan menghindari biaya tinggi dalam optimasi.

 E. Perbedaan dari alogaritma, distribusi INGRES , R*, dan SDD-1 :

 

 Ket :

1 = relation cardinality
2 = number of unique values per attribute
3 = join selectivity factor
4 = size of projection on each join attribute
5 = attribute size and tuple size