Faktor yang harus diperhatikan pada saat melakukan performance tuning
Ada beberapa hal yang harus diperhatikan apabila kita
akan melakukan performance tuning terhadap suatu database, hal-hal tersebut
antara lain:
- Buat
kesepakatan dengan user, sampai sejauh mana user akan menerima hasil dari
proses tuning yang kita lakukan terhadap suatu database. Hal ini perlu untuk
kita, sebagai executor, dalam pelaksaan proses tuning dalam database. Mengapa
demikian? Apabila kita melaksanakan proses tuning pada database, tentunya
harapannya adalah adanya peningkatan performance dari database tersebut. Untuk
itulah maka perlu adanya satu batasan berupa kesepakatan dengan user database,
jangan sampai suatu proses tuning database tidak di accept oleh user karena
user merasa performance database yang telah kita lakukan tuning tidak
significant perubahannya.
- Identifikasi
terlebih dahulu area-area mana saja pada database yang paling critical, apabila
kita tidak segera melakukan tuning terhadap database tersebut, atau dengan kata
lain prioritaskan proses tuning pada area-area yang dianggap paling critical.
- Identifikasi
bottleneck yang ada dalam sebuah atau beberapa query. Biasanya hanya karena
sebuah query yang jelek menyebabkan performance menjadi turun secara
keseluruhan.
- Jika
memungkinkan, review terlebih dahulu design dari database yang akan kita tuning, apakah sudah bagus, sebelum
kita melakukan tuning pada query-query terhadap database tersebut, karena
apabila kita melakukan query tuning tetapi dari sisi design database kurang bagus, maka tuning pada query akan
tidak optimal, bahkan mungkin tidak ada impact sama sekali.
- Pelajari
strategi index yang sudah berjalan pada database yang akan kita tuning, dan
lakukan improvement terlebih dulu pada area index ini.
- Jika kita
rasakan index yang ada sudah optimal, lakukan identifikasi fragmentation level
dari index yang ada, dan pastikan index statistic selalu up-to-date.
- Pelajari
bagaimana cara kerja query optimizer, pelajari dan test beberapa bentuk tipe
JOIN.
- Hindari
penggunaan sub-query (select in select).
- Selalu gunakan
UNION ALL daripada UNION, apabila memang ada operasi yang membutuhkan UNION
- Evaluasi
penggunaan trigger yang berdampak pada performance.
- Hindari
penggunaan SELECT ...... INTO sampai dengan kita yakin bahwa user yang terhubung ke
database hanya kita sendiri atau proses yang kita lakukan hanya memerlukan
waktu yang tidak lama. Jika sangat terpaksa gunakan INSERT .......SELECT.
- Gunakan SET
NOCOUNT ON dalam semua modular code kita (Stored Procedure), untuk mengurangi
informasi yang diberikan server ke client dan untuk mengurangi beban network.
- Jika
memungkinkan, gantu semua query yang merupakan inline query menjadi stored
procedure yang berparameter
- Jika
memungkinkan, gunakan temporary table untuk mengurangi jumlah record pada saat
query. Jika temporary table tersebut di join dengan permanent table, buat index
di dalam temporary table tersebut.
- Optimalkan
penggunaan loop, pindahkan semua proses yang tidak memerlukan pengulangan
keluar loop.
- Jangan gunakan
cursor jika memang tidak sangat terpaksa, TSQL tidak dioptimalkan untuk
memproses 1 record dalam satu waktu