Sudahkan anda menggunakan Store Procedure ?
Pertanyaan dari judul ini sangat menantang khususnya bagi orang orang
yang selama ini menganggap remeh store procedure dan mengganggap logic itu cukup
kita simpan di coding yang kita buat.
Ada beberapa hal yang perlu diperhatikan khususnya mengenai begitu
pentingnya SP ini sehingga tidak dapat diabaikan dalam hal proses pembuatan
sebuah aplikasi yang berhubungan dengan database.
Dari kegunaanya kita bisa melihat ada beberapa hal yang menjadi nilai
utama dari penggunaan SP dalam membuat aplikasi khususnya yang berinteraksi
dengan data base. adapun kegunaan dari Store procedure adalah:
-
Perubahan
logic yang dilakukan dapat dilakukan dengan dampak sekecil kecilnya karena semua
logic disimpan secara sentralized di server
-
Logic
disimpan di server sehingga operasi yang memerlukan roundtrips antara server dan
client dapat diminimasi.
-
Semua
plans yang di compile disimpan didalam cache, secara default setiap store
procedure plans akan dicompile dan di simpan kedalam cache pada saat pertama
kali Store procedure tersebut exekusi. Oleh karenanya plan sendiri tidak
langsung terbentuk ketika sebuah store procedure di buat atau disimpan di dalam
cache secara permanen. Ada beberapa hal yang menyebabkan sebuah plan
hilang dari cachenya. Penyebab itu diantaranya :
o
Server
restart
o
Tidak
cukupnya memory untuk menyimpan cache.
o
Dihilangkan
dari cache dengan cara :
§
Melakukan
pemanggilan DBCC FREEPROCCACHE untuk
melakukan kill terhadap semua plans dari cache.
§
Data
yang digunakan oleh store procedure berubah sehingga yang beribah sehingga
statistic dari data tersebut tidak dapat divalidasi yang tentunya berakibat pada
plan yang digunakan oleh store procedure tersebut menjadi
invalid.
§
Melakukan
pemanggilan sp_recompile pada object yang digunakan oleh store procedure
tersebut, sehingga ketika kita melakukan sp_recompile TobjectName maka semua store procedure plan yang terlibat
dengan object Tobjectname akan mengalami
invalidate.
Sedangkan advantages lain dalam hal penggunaan SP dibandingkan kita
menggunakan TSQL statement dan query biasa adalah dalam hal pengaturan security
dari store procedure yang diantaranya adalah:
-
Penggunaan
Store procedure akan lebih aman dan lebih mudah untuk di manage khususnya dalam
pengaturan permission dari user terhadap store procedure
tersebut.
-
Jika
seorang owner dari table membuat sebuah store procedure yang aksesnya dilakukan
berdasarkan table tersebut, maka si owner tadi dapat mengatur pemberiaan akses
terhadap store procedure tersebut tanpa perlu memberikan hak akses terhadap
table yang dia miliki. Bayangkan kekacauan yang akan terjadi jika seseorang
melakukan intruksi delete menggunakan tsql seperti ini DELETE Sales WHERE invnum = 1234,
dibandingan dengan intruksi DELETE Sales tentunya sang dba dan
ownerlah yang akan mengalami masalah. maka dengan Store procedure kita bisa
mengurangi resiko yang akan terjadi oleh user yang tidak berhak mengakses table
yang bersangkutan.
-
Keamanan
lain dari yang bisa dilakukan oleh stro procedure adalah keamanan dalam hal
gangguan hacker berupa SQL injection yang artinya dengan store procedure user
akan dibatasi proses interaksi datanya dengan system hanya berupa pengiriman
data lewat parameter.
selain itu dalam hal performance penggunaan SP akan semakin meningkatkan
performa dari aplikasi yang kita miliki dibandingkan dengan menggunakan TSQL
statement biasa dari aplikasi. karena SP memiliki kemampuan untuk melakukan
caching terhadap SP yang dibuat sehingga execution timenya lebih cepat. untuk
masalah penggunaan caching dan process recompile dari SP akan saya bahas pada
artikel selanjutnya dari artikel ini.