OPTIMASI QUERI DAN SQL TUNING
Optimasi Query adalah suatu
proses untuk menganalisa query untuk menentukan sumber-sumber apa saja yang
digunakan oleh query tersebut dan apakah penggunaan dari sumber tersebut dapat
dikurangi tanpa merubah output.
Beberapa teknik optimasi query
database yang dapat diterapkan untuk mengembangkan sistem yang lebih baik
adalah sebagai berikut:
- Hindari
mismatch tipe data untuk pengindeksan kolom
Kebanyakan orang menggunakan tanda
kutip tunggal (dalam kondisi filter) terlepas dari tipe data yang mereka query.
Hal Ini membuat oracle melakukan internal typecast ke tipe data yang
dibutuhkan.
- Hindari
fungsi pada kolom yang diindeks
Biasanya, kita melakukan identifikasi
kolom yang paling sering di query kemudian dibuat index pada kolom tersebut.
Tapi query kita menggunakan fungsi pada kolom yang terindeks. Hal ini
akhirnya akan membatalkan tujuan menciptakan indeks pada kolom tersebut.
3.
Menentukan kondisi pada WHERE bukan pada HAVING
Ini bukanlah sebuah error. Jika filter
dilakukan sebelum pengelompokan, maka semua data yang tidak perlu akan
dikelompokan dan akhirnya data yang dibutuhkan akan difilter. Menerapkan
filter sebelum pengelompokan akan menghindari sortasi dan pengelompokkan yang
tidak perlu.
- Penggunaan
join untuk mengganti inner query
Hal
ini sebenarnya dianggap sebagai praktek yang buruk pada penulisan SQL, menulis
hasil inner query pada tiap-tiap baris hasil query tabel utama.
- Menentukan
tabel dengan ukuran paling kecil, pada urutan terakhir pada query join.
Seperti yang kita lihat, menggunakan join menghasilkan hasil yang lebih baik daripada inner query. Kita harus mengurutkan tabel sedemikian rupa sehingga tabel terkecil akan ditentukan pada akhir di SQL, sehingga waktu oracle untuk membandingkan baris akan berkurang.
- Mengganti NOT
IN dengan NOT EXISTS
Hal ini sama halnya dengan menghindari
subquery.
SQL
TUNING
Bagian
terpenting pada tuning performansi database system adalah Tuning SQL
statements. Adapun pada tuning SQL terdapat tiga langkah dasar :
1.
Identifikasi
SQL statements yang memegang andil besar pada sharing workload aplikasi dan
system resources, dengan me-review history SQL execution yang telah lampau yang
tersedia pada system.
2.
Verifikasi
bahwa execution plans yang diproduksi oleh query optimizer untuk
statement-statement ini berjalan dengan baik.
3.
Mengimplementasi corrective
actions untuk men-generate execution plans pada peformansi SQL
statement yang buruk sehingga menjadi lebih baik.
Ketiga
langkah di atas diulang sampai performansi system mencapai tingkat kepuasan
atau tidak ada lagi statement yang dapat di-tuning
Tujuan
Tujuan
dari tuning sistem adalah untuk mengurangi waktu respon sistem
terhadap end user, atau untuk mengurangi resource yang
digunakan untuk memproses pekerjaan yang sama. Kita dapat memenuhi kedua tujuan
ini dalam beberapa cara:
·
Mengurangi
Beban Kerja (Reduce the Workload)
·
Menyeimbangkan
Beban Kerja (Balance the Workload)
·
Memparalelkan
Beban Kerja (Parallelize the Workload)
Tidak ada komentar:
Posting Komentar