Senin, 24 Desember 2012

OPTIMASI QUERY



A.   Optimasi Pada Perintah SQL
Dalam mendesain suatu database diperlukan SQL untuk mengoptimasi perintah, karena hanya desain logik saja yang diperhatikan. Untuk menampilkan hasil query dibutuhkan pencarian yang melibatkan struktur fisik penyimpanan data. Sedangkan untuk meminimalisasi  “jalur” pencarian dalam menemukan data yang disimpan di lokasi fisik diperlukan suatu optimasi query.
Pada saat query dijalankan, index pada database mencari data dan menemukan niali ROWID( yang membantu menemukan lokasi data secara fisik di disk). Index disini apabila digunakan secara tepat maka akan meningkatkan kecepatan akses data.  
B.   Perencanaan Eksekusi
  Untuk   melihat  jalur  akses  yang  akan  digunakan  database  saat melakukan  query  yaitu :
-           Pada  Database  Oracle,  dapat  dilihat  dengan menggunakan  perintah  explain  plan,  yang  akan  memberi  informasi  tentang  rencana  eksekusi  dari  suatu  query,  yang kemudian disimpan  dalam  tabel  PLAN_TABLE  yang terdapat di schema user  yang mengeksekusi perintah tersebut. 
              Cara melakukannya yaitu sebagai berikut :  
1.    Buat  table PLAN_TABLE  dengan  menggunakan  script  utlxplan.sql  yang  diambil  dari  \%ORACLE_HOME%\RDBMS\ADMIN.
2.    Setelah itu table PLAN_TABLE dapat digunakan seperti contoh berikut :
SQL> explain plan
Set statement_id=’test1’
Into plan_table for 
Select * from karyawan where gaji=2000000;
Dalam  PLAN_TABLE  rencana  eksekusi  diatas  dikenal  dengan  nama  test1  yang
terdefinisi pada kolom statement_id.
3.    Save . untuk melihat rencana dari test 1, digunakan perintah SELECT sebagai berikut:
SELECT LPAD(‘ ‘,2*Level)||Operation||’ ’||options||’ ‘||Object_Name Q_Plan FROM plan_table WHERE statement_id=’test 1’ CONNECT BY PRIOR id=parent_id AND statement_id’test 1’ START WITH id=0 AND statement_id=’test 1’;
 Contoh lain dari hasil eksekusi query tersebut :
Q_PLAN
......................................................................................................................................
SELECT STATEMENT
                 TABLE ACCESS FULL KARYAWAN
Output  tersebut  dibaca  mulai  dari    yang  indent-nya  paling  dalam  yaitu  :  TABLE ACCESS FULL KARYAWAN.     Dikarenakan klausa WHERE melibatkan kolom gaji namun kolom gaji tidak ada index-nya, maka Oracle melakukan full table scan.  Setelah seluruh tabel karyawan selesai dibaca, selanjutnya adalah SELECT STATEMENT yang berfungsi untuk menampilkan hasil query.

C.    Faktor Lain Yang Berpengaruh Terhadap Kecepatan Akses Data
Faktor lain yang berpengaruh terhadap kecepatan akses data yaitum: optimasi  aplikasi  dan  penggunaan  cluster  dan  index.   Hal  yang  akan  dibahas dalam  optimasi  query  berikut  ini  tidak  melibatkan  penggunaan  komponen  yang  ada dalam  Arsitektur  database  engine,  misal  pada  database  Oracle  kecepatan  akses  data dipengaruhi oleh penyesuaian pada shared pool, buffer cache, redo log buffer dan sistem operasi yang digunakan.
Optimasi Aplikasi
Suatu pembuatan aplikasi yang perlu diperhatikan yaitu : dalam hal penggunaan obyek harus efisien dengan kecepatan akses seperti index / cluster dan mendesain database serapi mungkin dengan melakukan normalisasi data secara tepat. Untuk mendesain agar lebih tepat biasana diperlukan juga denormalisasi.
Cluster dan index
Cluster adalah suatu segment yang menyimpan data dari  tabel  yang  berbeda dalam  suatu  struktur  fisik  disk  yang  berdekatan. Konfigurasi  ini  bermanfaat  untuk akses data  dari beberapa  tabel  yang  sering  di-query. Penggunaan  cluster  secara  tepat dilaksanakan  setelah  menganalisa  tabel-tabel  mana  saja  yang  sering  di-query  secara bersamaan menggunaan perintah SQL join. Jika  aplikasi  sering melakukan  query  dengan menggunakan  suatu  kolom  yang berada  pada  klausa  WHERE,  maka  harus  digunakan  index  yang  melibatkan  kolom tersebut.  Penggunaan index yang tepat bergantung pada jenis nilai yang terdapat dalam kolom  yang  akan  diindex. Dalam  RDBMS  Oracle,  index  B-Tree  digunakan  untuk kolom yang mengandung nilai yang cukup bervariasi, sedangkan untuk nilai yang tidak memiliki variasi cukup banyak, lebih baik menggunakan index bitmap.
Latihan Soal :
1.      Apa latar belakang dari diperlukannya optimalisasi kecepatan akses data?
Karena apabila suatu data tersimpan dalam database lama kelamaan akan semakin banyak dan tentunya ukuran dan volumenya juga semakin meningkat. ketika tidak adanya suatu optimalisasi kecepatan akses data maka proses kerjanya (akses data) akan semakin lambat.
2.      Optimasi query dalam hubungannya dengan desain database melibatkan dua hal yaitu desain logik dan lokasi struktur fisik penyimpanan data.
3.      Proses  pencarian  data  yang  telah  di indeks  akan  lebih  cepat  jika  data  yang  dicari
terletak pada disk.
4.      Bagaimana cara melihat  jalur akses yang akan digunakan database saat melakukan
query ?  Tunjukkan tahap-tahap yang digunakan untuk melakukan hal tersebut !
-          Buat  table PLAN_TABLE  dengan  menggunakan  script  utlxplan.sql  yang  diambil  dari  \%ORACLE_HOME%\RDBMS\ADMIN.
-          Setelah itu table PLAN_TABLE dapat digunakan seperti contoh berikut :
SQL> explain plan
Set statement_id=’test1’
Into plan_table for 
Select * from karyawan where gaji=2000000;
Dalam  PLAN_TABLE  rencana  eksekusi  diatas  dikenal  dengan  nama  test1  yang
terdefinisi pada kolom statement_id.
-          Save . untuk melihat rencana dari test 1, digunakan perintah SELECT sebagai berikut:
SELECT LPAD(‘ ‘,2*Level)||Operation||’ ’||options||’ ‘||Object_Name Q_Plan FROM plan_table WHERE statement_id=’test 1’ CONNECT BY PRIOR id=parent_id AND statement_id’test 1’ START WITH id=0 AND statement_id=’test 1’;
5.      Sebutkan  factor-faktor  lain yang berpengaruh  terhadap kecepatan akses data selain
optimasi pada perintah SQL ! Selain  optimasi  perintah  SQL,  faktor  lain  yang  berpengaruh  terhadap  kecepatan akses data adalah optimasi aplikasi dan penggunaan cluster dan index.
6.      Beberapa  database  engine  melibatkan  komponen  pada  arsitekturnya  untuk
disesuaikan agar akses data lebih cepat dan efisien, berikan contohnya ! semisal pada database Oracle kecepatan akses data dipengaruhi  oleh  beberapa  komponen  arsitektur  pembentuknya  seperti  shared pool, buffer cache, dan redo log buffer.

Tidak ada komentar:

Posting Komentar