Optimisasi Query
Optimisasi Query
Seiring dengan berjalannya waktu, eksekusi query terasa lambat entah
karena query yang tidak optimal atau data yang semakin besar. Maka kita harus
mengoptimalkan query kita dengan tujuan supaya aplikita dapat bekerja dengan
cepat, dan juga berdampak untuk kelangsungan terhadap aplikasi kita.
Optimisasi Query sendiri adalah suatu cara yang digunakan untuk membuat
query berjalan dengan efisien dan efektif yang nantinya bertujuan untuk
meminimalisir total waktu yang digunakan ketika proses query itu sendiri
berjalan. Untuk mengoptimalkan jalannya query ada beberapa cara yang akan saya
sampaikan antara lain:
1. Memahami operator
yang dapat menyebabkan tidak dapat digunakannya index.
2. Menghindari operasi
pada kolom.
3. Optimasi kolom dengan tipe data date.
4. Hindari Type
Conversion.
5. Hindari Select * ?,
Tidak selalu.
6. Pindahkan filter
dari WHERE ke klausa SELECT.
7. Hindari looping
query.
8.
dan lain sebagainya.
Diluar dari beberapa cara untuk megoptimisasi tersebut, ada kondisi
tertentu dimana kita tidak isa kita optimisasikan, contohnya pada saat suatu
query melibatkan fungsi agresasi pada tabel yang memiliki banyak data dan
sebagainya.
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.
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:
a. Mengurangi Beban Kerja (Reduce the Workload)
SQL Tuning secara umum melibatkan pencarian
cara yang lebih efisien untuk memproses beban kerja yang sama. SQL tuning
memungkinkan untuk mengubah rencana eksekusi dari suatu statement tanpa
mengubah fungsionalitas untuk mengurangi pemakaian resource.Dua contoh
bagaimana penggunaan resource dapat dikurangi:
Jika suatu query yang biasa dieksekusi perlu
untuk mengakses suatu persentase kecil dari data dalam tabel, maka query tersebut
dapat dieksekusi dengan lebih efisien dengan menggunakan indeks. Dengan membuat
indeks, kita dapat mengurangi jumlah pemakaian resource.
Jika seorang user mencari dua puluh baris
pertama dari 10000 baris yang diberikan oleh perintah pengurutan yang spesifik,
dan jika query (dan perintah pengurutan) dapat dipenuhi oleh indeks, maka user
tidak perlu untuk mengakses dan mengurutkan 10000 baris untuk melihat dua puluh
baris.
b. Menyeimbangkan Beban
Kerja (Balance the Workload)
Sistem cenderung memiliki penggunaan penuh pada
siang hari ketika user yang sebenarnya terhubung ke sistem dan penggunaan yang
sedikit di malam hari. Jika noncritical report dan batch job dapat dijadwalkan
untuk berjalan pada malam hari dan penggunaan sistem pada siang hari dikurangi,
maka hal tersebut dapat membebaskan resource agar dapat digunakan pada
program-program yang lebih penting pada siang hari.
c. Memparalelkan Beban
Kerja (Parallelize the Workload)
Query-query yang mengakses sejumlah besar data
(typical data warehouse queries) sering dapat diparalelkan. Hal ini sangat
berguna untuk mengurangi waktu respon dalam data warehouse yang rendah
konkurensinya. Akan tetapi, untuk lingkungan OLTP, yang cenderung tingggi
konkurensinya, hal ini dapat merugikan user-user lain dengan meningkatkan
penggunaan resource secara keseluruhan pada program.

Comments
Post a Comment