Optimasi Query

  Selasa, 30 September 2014      0

semakin besar data yang tersimpan di database maka dibutuhkan kecepatan akses yang memadai. Maka perlu dilakukan Optimasi Query pada database.

1. Optimasi Perintah SQL


Jika kita tidak mengerti dengan benar perintah-perintah database ini dapat membuat menurun nya performa, muncul pesan kesalahan dan laporan yang tidak sesuai semua dapat diminimalisasi dengan penggunaan perintah sql yang benar. Nah dalam Optimasi perintah SQL ini kita melakukan struktur query dengan melakukan perintah yang efektif untuk mencari data pada lokasi fisik database. Kenapa lokasi fisik menjadi begitu penting karena untuk menampilkan hasil query dibutuhkan pencarian yang melibatkan struktur fisik penyimpanan data. Intinya optimasi query itu meminimalkan jalur utuk mencari data yang tersimpan pada lokasi fisik.

contoh dalam penamaan index berikut:

CREATE INDEX idx_kota_prop_kodepos
ON karyawan(kota, propinsi, kode_pos)
TABLESPACE INDX;

dalam penaman index tersebut digunakan 3 kolom yang mengurutkan kolom menurut kota, provinsi dan kode pos

kemudian user melakukan query seperti berikut:
SELECT * FROM karyawan WHERE propinsi=’Jawa Barat’;

pada kasus tersebut indeks tidak digunakan karena kolom pertama pada index yaitu kota tidak digunakan pada clausa WHERE. Jika user banyak menggunakan kolom propinsi pada kolom pertama pada pengindeks kan sebaiknya diganti dengan provinsi

2. Informasi Jalur akses

Pada database oracle untuk melihat jalur akses pada database dapat digunakan perintah explain plan, yang akan memberi informasi rencana eksekusi suatu query yang tersimpan pada PLAN_TABLE yang terdapat schema user yang mengeksekusi perintah tersebut.
Jadi sebelum melakukan perintah explain table terlebih dahulu kita buat PLAN_TABLE nya dengan  script utlxplan.sql yang diambil dari \%ORACLE_HOME%\RDBMS\ADMIN
setelah itu PLAN_TABLE dapat digunakan seperti contoh berikut:

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

Dalam PLAN_TABLE rencana eksekusi diatas dikenal dengan nama coba1 yang
terdefinisi pada kolom statement_id.

Untuk melihat rencana eksekusi dari coba1, digunakan perintah SELECT berikut :

SELECT LPAD(’ ’,2*Level)||Operation||’ ’||Options||’ ’||Object_Name Q_Plan
FROM plan_table
WHERE statement_id=’coba1’
CONNECT BY PRIOR id=parent_id AND statement_id=’coba1’
START WITH id=0 AND statement_id=’coba1’;

Hasil eksekusi query nya adalah:

Q_PLAN
--------------------------------------------------------------------
SELECT STATEMENT
TABLE ACCESS FULL KARYAWAN

output nya dibaca dari indent yang paling dalam yaitu:TABLE ACCESS FULL KARYAWAN. karena table karyawan melibat kan kolom gaji yang tidak ada indexnya. Maka oracle melakukan full table scan. setelah seluruh tabel gaji selesai dibaca hasil query ditampilkan dengan fungsi SELECT STATEMENT

3. Faktor yang berpengaruh untuk kecepatan akses data

  • Clustering dan Index
Cluster adalah suatu segmen dari tabel yang berbeda dalam satu struktur disk yang berdekatan. Konfigurasi ini menjadi sangat penting karena sering kali kita mengakses beberapa query pada tabel yang berbeda. Penggunaan clustering ini untuk menganalisa query mana saja yang sering digunakan bersamaan dengan perintah SQL join.
Jika sering melakukan query pada kolom dengan clausa WHERE, maka harus dibuatkan index yang melibatkan kolom tersebut. cara penggunaan index yang pada suatu kolom berdasarkan nilai yang akan digunakan. Misalkan pada RDBMS Oracle index B-Tree untuk kolom yang mempunyai variasi banyak. Sedangkan untuk kolom yang mempunyai variasi banyak lebih baik menggunakan index bitmap.
  • Optimasi Apliakasi
pembuatan aplikasi perlu memperhatikan apakah jalur akses terhadap data sudah efisien. Efisien di sini artinya apakah aplikasi tersebut telah menggunakan obyek yang mendukung kecepatan akses seperti index dan clustering.
Normalisasi sampai level yang kesekian tidak menjamin suatu desain tersebut efisien. kadang setelah dilakukan normalisasi perlu dilakukan denormalisasi. Misalnya tabel yang berderajat one to one sering digunakan bersama lebih baik di jadikan dalam satu tabel

Source :  http://lecturer.eepis-its.edu/~tessy/lecturenotes/db2/bab4.pdf

Tidak ada komentar:

Posting Komentar