Optimasi Query dan SQL Tuning
OPTIMASI QUERY
Optimasi
query adalah suatu proses menganalisa query untuk menentukan sumber apa saja
yang digunakan oleh query tersebut dan apakah penggunaan dari sumber tersebut
dapat dikurangi tanpa merubah output. Inti
nya optimasi query adalah
meminimalkan “jalur” pencarian untuk menemukan data yang disimpan dalam lokasi fisik. Tujuan
dari optimasi query adalah menemukan jalan akses yang termurah untuk
meminimumkan total waktu pada saat proses sebuah query. Untuk mencapai tujuan
tersebut, maka diperlukan optimizer untuk melakukan analisa query dan untuk
melakukan pencarian jalan akses.
Index
pada database digunakan untuk meningkatkan kecepatan akses data. Pada saat query dijalankan, index akan mencari
data dan menentukan nilai ROWID yang membantu
menemukan lokasi data secara fisik di disk. Akan tetapi penggunaan index yang tidak tepat, tidak akan meningkatkan
unjuk kerja dalam hal ini kecepatan akses data.
Misal
digunakan index yang melibatkan tiga buah kolom yang mengurutkan kolom menurut kota, propinsi dan kode pos dari
tabel karyawan, sebagai berikut :
CREATE
INDEX idx_kota_prop_kodepos
ON
karyawan(kota, propinsi, kode_pos)
TABLESPACE
INDX;
Kemudian user melakukan
query sebagai berikut :
SELECT
* FROM karyawan WHERE propinsi=’Jawa Barat’;
Pada
saat melakukan query ini, index tidak akan digunakan karena kolom pertama (kota) tidak digunakan dalam klausa WHERE.
Jika user sering melakukan query ini, maka
kolom index harus diurutkan menurut propinsi. Selain itu, proses pencarian data
akan lebih cepat jika data
terletak pada block tabel yang berdekatan daripada harus mencari di beberapa datafile yang terletak
pada block yang berbeda.
FAKTOR LAIN YANG
BERPENGARUH TERHADAP KECEPATAN AKSES
DATA
Faktor lain yang
berpengaruh terhadap kecepatan akses data, tidak hanya ada pada optimasi
perintah SQL, melainkan juga ada pada optimasi aplikasi, cluster dan index.
Optimasi
Aplikasi
Dalam
pembuatan aplikasi, yang perlu mendapat perhatian adalah apakah akses terhadap data sudah efisien. Efisien dalam
hal penggunaan obyek yang mendukung kecepatan
akses, seperti index atau cluster. Kemudian juga bagaimana cara database di-desain. Apakah desain database sudah
melakukan normalisasi data secara tepat.
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. (sumber : http://tessy.lecturer.pens.ac.id/lecturenotes/db2/bab4.pdf )
SQL TUNING
Menurut Immanuel Chan (2008, p11-1), SQL Tuning adalah
sebuah proses optimasi dengan cara mengubah perintah-perintah SQL serta menentukan
teknik indexing agar SQL tersebut bekerja secara optimal.
Langkah-langkah
SQL Tuning
Langkah
pertama yang harus dilakukan untuk melakukan
SQL Tuning adalah melakukan identifikasi terhadap High-Load SQL Statements. High-Load
SQL Statements adalah query yang membebani server sehingga menyebabkan kinerja
sebuah basis data menjadi lambat dan menghabiskan penggunaan sumber daya yang
besar dari sistem. Sekalipun optimasi telah dilakukan pada basis data, namun
penggunaan SQL yang tidak optimal akan menyebabkan performa basis data menurun.
Melakukan identifikasi query ini merupakan aktivitas yang penting dari sebuah proses SQL Tuning, yang
telah diotomatisasi dengan fitur ADDM (Automatic Database Diagnostic Monitor)
pada Enterprise Manager Oracle 10g. Melakukan
identifikasi High-Load SQL Statements merupakan
sebuah aktivitas yang penting dari sebuah proses SQL tuning. Oracle 10 g telah
melakukan otomatisasi hal ini dengan fitur ADDM (Automatic Database Diagnostic
Monitor) atau dengan menggunakan Entreprise Manager untuk mencari High-Load SQL
Statements tersebut. Ada 2 cara untuk melakukan identifikasi High-Load SQL Statements
r, yaitu dengan menggunakan ADDM dan Top SQL. (sumber : http://library.binus.ac.id/eColls/eThesisdoc/Bab2HTML/2011100287if2/page25.html)
Komentar
Posting Komentar