OPTIMASI QUERY
Desain aplikasi saja tidak cukup untuk
meningkatkan unjuk kerja harus didukung dengan optimasi dari perintah SQL yang
digunakan pada aplikasi tersebut. Dalam mendesain database, seringkali lokasi
fisik data tidak menjadi perhatian penting. Karena hanya desain logik saja yang
diperhatikan. Padahal untuk menampilkan hasil query dibutuhkan pencarian yang
melibatkan struktur fisik penyimpanan data. Inti dari optimasi query adalah
meminimalkan “jalur” pencarian untuk menemukan data yang disimpan dalam lokasi
fisik.
Index pada database digunakan untuk
meningkatkan kecepatan akses data. Pada saat query dijalankan, index 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.
Misal pada perintah SQL berikut ini :
SELECT * FROM karyawan
WHERE id BETWEEN 1010 AND 2010;
B. Faktor Lain yang Berpengaruh Terhadap
Kecepatan Akses Data
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 didesain. Apakah desain database
sudah melakukan normalisasi data secara tepat.
Kadangkala normalisasi sampai level yang
kesekian, tidak menjamin suatu desain yang efisien. Untuk membuat desain yang
lebih tepat, kadang setelah melakukan normalisasi perlu dilakukan
denormalisasi. Misalnya tabel yang hubungannya one-toone dan sering diakses
bersama lebih baik disatukan dalam satu tabel
C. 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.
Tidak ada komentar:
Posting Komentar