Tulisan kali ini akan membahas mengenai “Optimasi Kueri dan SQL Tuning”
Optimasi Kueri
Apa itu “Optimasi Kueri”? Optimasi Kueri adalah proses penganalisaan kueri untuk menentukan sumber-sumber yang digunakan oleh kueri tersebut, serta menganalisa kemungkinan penggunaan dari sumber tersebut dapat diminimalkan tanpa merubah output. Maka, optimasi kueri adalah suatu cara untuk meningkatkan strategi evaluasi suatu kueri untuk membuatnya menjadi lebih efektif. Tujuan optimasi kueri adalah menemukan akses termurah untuk meminimumkan total waktu pada saat proses query. Untuk mencapainya, diperlukan optimizer untuk melakukan analisa kueri dan untuk melakukan pencarian jalan akses.
Ada beberapa cara untuk meningkatkan
efektifitas dari sebuah kueri, diantaranya :
A.
Menghindari mismatch tipe data untuk pengindeksian
kolom
Hanya menggunakan kutip tunggal pada tipe data yang sesuai. (Contoh : INT tidak
memerlukan pemberian tanda kutip ‘’)
B.
Menghindari fungsi pada kolom yang di-index
Fungsi di kolom ter-index akan membatalkan penciptaan index pada kolom tersebut
C.
Menentukan kodisi pada WHERE bukan pada HAVING
Dengan urutan perintah yang tepat, banyak waktu bisa dipangkas. (Misalnya
perintah mencari dahulu sebelum perintah pengelompokkan)
D.
Penggunaan join untuk menggatin inner-query
Dengan tidak menulis hasil inner-query pada baris hasil query table utama akan
memangkas waktu proses.
E.
Menggunakan table paling kecil pada urutan terkahir
pada query join
Pengurutan yang tepat akan memangkas waktu menjadi lebih cepat.
F.
Mengganti NOT IN dengan NOT EXISTS
Seperti menghindari subquery. Dibanding mencari satu-persatu, lebih cepat
mencari apa yang memang tidak ada.
G.
Menggunakan FORALL menggantikan FOR
Fitur yang sangat berguna, untuk memasukkan sekaligus dibandingkan dengan
pemrosesan satu-persatu.
H.
Penggunaan BULK COLLECT
Suatu fitur untuk menghindari loop dalam pengumpulan data dari table, akan
sangat berguna pengolahan data berat.
SQL Tuning
Kemudian apakah yang dimaksud “SQL Tuning”? SQL Tuning merupakan suatu usaha untuk mendiagnosa dan memperbaiki SQL yang gagal dalam mencapai suatu tingkat performa. SQL Tuning adalah proses iterative untuk meningkatkan kinerja SQL sehingga berhasil mencapai suatu tingkat performa yang diharapkan. Tujuan dari SQL tuning adalah untuk memperbaiki kinerja SQL ketika gagal dalam mencapai kualitas standarnya, biasanya ada 2 cara umum untuk memperbaiki masalah ini, yaitu dengan Mengurangi User Response Time atau Meningkatkan Throughput.
Dalam
pelaksanaannya, proses SQL Tuning memerlukan sekumpulan keahlian dan
pengetahuan dalam bidang yang terkait, diantaranya :
Pengalaman
dengan arsitektur basis data
Pemahamam
tentang SQL dan PL/SQL
Pengalaman
dengan tools terkait (SQL tools)
Setelah
dirasa memiliki keahlian dan peralatan yang dibutuhkan, maka saatnya untuk
melakukan peningkatan kinerja. Untuk itu ada 2 fase umum peningkatan : Fase
Desain dan Fase Pelaksanaan.
Fase
Desain meliputi Data Modelling dan Writing. Data Modelling diperlukan untuk
mewakili bentuk dari data fisik yang ingin dipalikasikan secara digital.
Kemudian Writing adalah proses penulisannya, yang mana sangat menunut
kefisienan. Untuk harus selalu diperhatikan bahwa dalam penulisan memiliki
manajemen koneksi basis data yang baik, manajemen penggunaan sumber daya yang
handal, dan penggunaan variable yang efektif.
Kemudian
Fase Pelaksanaan memerlukan tahapan Test Environemnt dan Rollout. Test
Environment bertujuan untuk menguji fungsionalitas dan kestabilan dari
pengembangan yang telah dilaksanakan. Sedangankan Rollout atau peluncuran
adalah tahap pengaplikasian dari pengembangan yang telah dibuat, umumnya
memiliki 2 pendekatan : Big Bang Approach yang langsung memigrasi seluruh
sistem dan Trickle Approach yang melakukan migrasi sistem secara perlahan.