OPTIMASI QUERY ATAU SQL TUNING
Optimasi Query atau Sql Tuning
Optimasi Query
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. Optimasi query
merupakan bagian dasar dari sebuah sistem database dan juga merupakan suatu
proses untuk menghasilkan rencana akses yang efisien dari sebuah query di dalam
sebuah database. Secara tidak langsung, sebuah rencana akses merupakan sebuah
strategi yang nantinya akan dijalankan untuk sebuah query, untuk mendapatkan
kembali operasi-operasi yang apabila dijalankan akan menghasilkan database
record query.
Tujuan
dari optimisasi 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.
Menurut Immanuel
Chan, berikut ini adalah beberapa teknik untuk mengoptimalkan
query:
1) Gunakan
Equijoin
Sedapat mungkin gunakanlah equijoin,
karena perintah equijoin pada kolom yang belum ditransformasikan akan
meningkatkan performa basis data dan mempermudah proses tuning.
2) Gunakan
kolom-kolom yang belum ditransformasikan di dalam klausa WHERE
Selalu usahakan untuk menggunakan
kolom yang belum ditransformasikan (tidak diberi fungsi seperti substr,
to_char, to_number, dsb) pada klausa WHERE.
Contoh where clause dengan kolom yang
belum ditransformasikan:
WHERE
a.order_no = b.order_no
Contoh where clause dengan kolom yang ditransformasikan:
WHERE TO_NUMBER
(SUBSTR(a.order_no,INSTR
(b.order_no, '.')-1))
=(SUBSTR
(a.order_no,INSTR (b.order_no, '.')-1))
Adanya
penggunaan fungsi SQL dalam klausa WHERE dapat membuat komputer menggunakan
sumber daya lebih banyak untuk mengolah fungsi
tersebut sehingga menyebabkan performa yang menurun karena selain butuh proses
untuk menjalankan fungsi tersebut, indeks yang terdapat kolom tersebut tidak
akan digunakan oleh optimizer. Jika ingin tetap menggunakan fungsi pada kolom
dalam klausa WHERE dan indeks tetap digunakan maka gunakan indeks
function-based agar optimizer tetap menggunakan indeks dalam proses eksekusi
query tersebut.
SQL Tuning
Menurut
Immanuel Chan, SQL Tuning adalah sebuah proses optimasi dengan cara mengubah
perintah-perintah SQL serta menentukan teknik indexing agar SQL tersebut
bekerja secara optimal.
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 10g 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, yaitu dengan
menggunakan ADDM dan Top SQL.
a)
Identifikasi High-Load SQL Statements dengan
menggunakan ADDM
Secara default, ADDM berjalan secara
otomatis setiap jam dan melakukan analisa data yang dikumpulkan dari AWR
(Automatic Workload Repository) untuk mengidentifikasi masalah pada kinerja
basis data melalui snapshot. Dalam hal ini mencakup High-Load SQL Statements.
Ketika terdapat masalah pada kinerja basis data, ADDM akan menampilkan
permasalahan tersebut pada halaman ADDM dan memberikan rekomendasi untuk setiap
masalah yang ditemukan. Sebagai contoh, ketika sebuah High- Load SQL Statements
ditemukan, ADDM akan memberikan rekomendasi untuk menggunakan SQL Tuning
Advisor untuk perintah SQL tersebut.
b)
Identifikasi High-Load SQL
Statements dengan menggunakan Top SQL
Selain menggunakan ADDM, Oracle juga menyediakan sebuah
fitur untuk melihat High-Load SQL Statements. Fitur yang disediakan oleh Oracle
ini adalah sebuah halaman Top Activity yang terdapat pada Entreprise Manager.
Kita dapat melihat High-Load SQL Statements, yang ditunjukkan pada gambar
berikut:
Pada Enterprise
Manager, klik Top Activity yang terdapat di tab Performance. Halaman Top
Activity menunjukkan aktivitas yang berjalan pada basis data selama periode 1
jam. Pada bagian Top Activity, akan tampil chart yang menggambarkan
kinerja basis data yang diukur dari average active sessions. Chart ini
menunjukkan rata-rata sesi yang aktif dengan penggolongan kategori dari
aktivitas yang dilakukan oleh setiap sesi tersebut dengan keterangan indikator
warna dari aktivitas yang terdapat pada sisi kanan chart tersebut. Pada
sisi bawah chart terdapat bagian tabel top SQL yang berisi daftar query yang
membebani server dari seluruh kategori. Untuk melihat detail dari query
tersebut, klik pada kolom SQL ID di tabel top SQL, akan muncul teks query
detail masing-masing top SQL. Untuk melihat perintah SQL pada kategori
tertentu, klik tombol kategori yang diinginkan, kemudian akan
tampil chart dari Active Sessions yang
menunjukkan aktivitas dan top SQL akan diperbarui sesuai dengan waktu refresh
yang dipilih oleh pengguna.
Makasih kawand infonya
BalasHapusgokkkkks
BalasHapus