Draft Judul : OPTIMALISASI TIME DAN
BUFFER GETS DENGAN SQL TUNING PADA
SISTEM INFORMASI PENGGAJIAN PT.XYZ
Edbert Giovanni Suryadi
Keithsen Chusny
Suparto Darudiato
PENDAHULUAN
Di era modernisasi ini, semakin banyak saja industri yang dibangun dan berkembang secara pesat dalam negara. Hal ini tentu saja tak luput dari adanya pengaruh dari Teknologi Informasi yang seiring berjalannya waktu berkembang semakin cepat. Untuk itu industri-industri yang sudah ada jika tetap ingin berada di jalur utama kompetisi dalam mendominasi pasaran dituntut untuk berkembang secara pesat dengan memanfaatkan kemajuan Teknologi Informasi agar tetap memiliki kharisma sebagai industri yang kompeten di pasar.
Salah satu teknologi informasi yang dibutuhkan sebuah perusahaan dalam menyimpan dan mengatur data yang ada di dalam perusahaan adalah database. menurut (Sukheja & Singh, 2011), kebutuhan akan sebuah database telah meningkat secara drastis pada zaman kini, dimana terjadi sebuah desentralisasi di dalam infrastruktur IT suatu perusahaan akibat proses merger , akuisisi, dan aplikasi khusus corporate sehingga dibutuhkan database.
PT.XYZ memiliki Sistem Informasi Penggajian yang digunakan untuk mengelola proses penggajian karyawan-karyawannya. Seiring dengan bertambahnya jumlah data yang dimiliki, maka proses pengaksesan menjadi semakin lambat sehingga PT.XYZ membutuhkan improvisasi pada kinerja sistem dalam mengakses data.
Melalui proses SQL tuning, maka diharapkan agar kinerja Sistem Informasi Penggajian pada PT.XYZ menjadi lebih efektif dan efisien. SQL tuning merupakan salah satu metoda tuning terhadap
query dan menulis ulang sebuah query sehingga dapat diproses lebih cepat. Tujuan utama dari SQL tuning adalah untuk mengurangi response time yang dibutuhkan dalam memproses SQL, untuk mencari
cara yang lebih efisien untuk memproses workload, meningkatkan waktu pencarian dengan menggunakan
indexes, penggabungan data yang efisien antar dua atau lebih tabel.
Dalam penelitian ini hanya akan membahas SQL tuning pada bagian HR(Human Resource) untuk sistem informasi penggajian karyawan. Prioritas utama dalam pelaksanaan SQL tuning ini adalah dengan penurunan buffer gets dan elapsed time, penurunan buffer gets akan memperkecil penggunaan
resource saat pengambilan data ke dalam databse yang akan mempercepat kinerja database dan
penurunan elapsed time akan mempercepat akses data dan meningkatkan efektivitas perusahaan.
Bind variable, partitioning, materialized view, compression technique, dan session parameter
tidak akan dibahas dalam penelitian ini.
Tujuan dari penulisan ini adalah meningkatkan performance database PT. XYZ dengan
melakukan optimalisasi pada buffer gets dan elapsed time query-query Sistem Informasi Penggajian.
Manfaat yang ingin diperoleh dari penulisan ini adalah :
1. Peningkatan performa database agar proses binsis PT. XYZ dapat berjalan lebih baik.
2. Query yang menjadi penyebab menurunnya performa database tidak menganggu aktivitas di
masa depan.
METODE PENELITIAN
Metode penelitian yang digunakan untuk menganalisis proses bisnis PT.XYZ dan mengusulkan pemecahan masalah yang tepat adalah sebagai berikut:
Metode Analisis a. Pengumpulan data
Untuk mendapatkan data pada PT.XYZ, maka dilakukan survei langsung dilokasi dengan menelusuri modul Sistem Informasi Penggajian.
b. Studi Kepustakaan
Melakukan studi literature baik dari buku teks maupun jurnal-jurnal yang berhubungan dengan SQL Tuning sebagai dasar pembelajaran dalam pembuatan karya ilmiah. c. Analisis Sistem Berjalan
Menganalisis sistem berjalan dengan menggunakan ERD serta rich picture untuk menggambarkan struktur database PT.XYZ.
Metode Tuning
Menurut K.Burleson(2010, p.315) metode tuning yang dapat digunakan adalah : a. Optimasi pemanggilan query
Melakukan perbaikan terhadap sintaks yang digunakan agar eksekusi menjadi lebih cepat dan menggunakan memory yang lebih sedikit.
b. Pembuatan Index
Membuat index yang sesuai kebutuhan untuk mempermudah akses data ke dalam database dan menghemat penggunaan memory sehingga lebih efisien.
HASIL DAN BAHASAN
1. Query Salary
Query ini digunakan untuk menampilkan data-data gaji karyawan.
Gambar 1 ERD Query Salary
Sebelum Tuning
Tabel 1 Query Salary
SELECT DISTINCT a.EMPLID,a.CAL_RUN_ID,(
SELECT SUM(b.CALC_RSLT_VAL) FROM PS_GP_RSLT_ERN_DED b WHERE b.PIN_NUM = 10608 AND a.emplid = b.emplid AND a.cal_run_id = b.cal_run_id)
AS SALARY,(SELECT SUM(b.CALC_RSLT_VAL) FROM PS_GP_RSLT_ERN_DED b WHERE b.PIN_NUM = 10609 AND a.emplid = b.emplid
AND a.cal_run_id = b.cal_run_id) AS OVERTIME,(
Gambar 2 Statistik Query Salary
Gambar 3 Tampilan Query Salary
Berdasarkan hasil pengukuran yang terdapat pada gambar 2 diatas, terlihat bahwa query Salary yang ditunjukan pada tabel 1 memiliki elapsed time sebesar 64.83 sec dengan buffer gets sebesar 35,210 yang memperlihatkan bahwa query ini tergolong memiliki nilai buffer gets yang cukup tinggi sehingga menyebabkan penggunaan resource menjadi besar sehingga menyebabkan elapsed time yang dibutuhkan menjadi tinggi.
Setelah Tuning
Tabel 2 Query Salary Setelah Tuning
SELECT a.EMPLID,a.CAL_RUN_ID, (SELECT SUM(b.CALC_RSLT_VAL) FROM PS_GP_RSLT_ERN_DED b WHERE b.PIN_NUM = 10608 AND a.emplid = b.emplid
AND a.cal_run_id = b.cal_run_id) AS SALARY, (SELECT SUM(b.CALC_RSLT_VAL)
AND a.emplid = b.emplid
AND a.cal_run_id = b.cal_run_id) AS TUNJANGAN FROM PS_GP_RSLT_ERN_DED a
Gambar 4 Statistik Query Salary Setelah Tuning
Gambar 5 Tampilan Query Salary Setelah Tuning
Berdasarkan query yang terdapat pada tabel 1, ditemukan bahwa query tersebut menampilkan data yang bersifat unique maka pada percobaan dilakukan dengan penggantian sintaks DISTINCT menjadi sintaks GROUP BY yang seperti yang terlihat pada tabel 2. Terlihat pada gambar 4 bahwa elapsed time yang dibutuhkan menjadi 35.20 sec dengan jumlah buffer gets yaitu 15,881.
2. Query Bank
Query ini digunakan untuk menampilkan data karyawan dan bank yang terasosiasi dengan
karyawan.
FROM PS_GP_RSLT_ERN_DED b WHERE b.PIN_NUM = 10609 AND a.emplid = b.emplid
AND a.cal_run_id = b.cal_run_id) AS OVERTIME, (SELECT SUM(b.CALC_RSLT_VAL)
FROM PS_GP_RSLT_ERN_DED b WHERE b.PIN_NUM = 11362 AND a.emplid = b.emplid
AND a.cal_run_id = b.cal_run_id) AS TUNJANGAN FROM PS_GP_RSLT_ERN_DED a
WHERE a.CAL_RUN_ID = 'CG_2011W004_TS_P' GROUP BY EMPLID,cal_run_id
Gambar 6 ERD Query Bank
Sebelum Tuning
Tabel 3 Query Bank Sebelum Tuning
SELECT DISTINCT B.emplid, MAP.hms_cc_group, bank_cd, branch_ec_cd FROM ps_job B
left join ps_hms_cc_map MAP ON MAP.hms_cost_center = B.acct_cd join ps_pye_bankacct BANK
ON B.emplid = BANK.emplid AND MAP.hpyp_cntrl_area = 'IDN'
WHERE ( bank_cd, branch_ec_cd )
IN (SELECT bank_cd, branch_ec_cd FROM ps_bank_branch_tbl
WHERE src_bank_id = 'BCA-HMS' AND eff_status = 'A')
AND eff_status = 'A'
AND account_type_pye = 'S' AND B.effdt = (SELECT Max(B1.effdt) FROM ps_job B1 WHERE B1.effdt <= (SELECT Max(prd_end_dt) FROM ps_gp_pye_prc_stat D WHERE D.emplid = B1.emplid
Gambar 7 Statistik Query Bank Sebelum Tuning
Gambar 8 Tampilan Query Bank Sebelum Tuning
Berdasarkan hasil pengukuran yang terdapat pada gambar 7 diatas, terlihat bahwa query Bank yang ditunjukan pada tabel 3 memiliki elapsed time sebesar 142.28 sec dengan buffer gets sebesar 582,260 yang memperlihatkan bahwa query ini tergolong memiliki nilai buffer gets yang cukup tinggi sehingga menyebabkan penggunaan resource menjadi besar sehingga menyebabkan elapsed time yang dibutuhkan menjadi tinggi.
(SELECT Max(B1.effdt) FROM ps_job B1
WHERE B1.effdt <= (SELECT Max(prd_end_dt)
FROM ps_gp_pye_prc_stat D WHERE D.emplid = B1.emplid AND D.cal_id IN
(SELECT cal_id
FROM ps_hmsa_ts_out_cal) AND D.emplid =
(SELECT DISTINCT emplid FROM ps_gp_payment PYE WHERE PYE.emplid =
D.emplid AND PYE.cal_id =
Setelah Tuning
Tabel 4 Composite Index pada Query Bank
Tabel 5 Query Bank Setelah Tuning
Gambar 9 Statistik Query Bank Setelah Tuning
CREATE INDEX IDX001 ON PS_PYE_BANKACCT (bank_cd,branch_ec_cd)
SELECT DISTINCT
B.EMPLID,MAP.HMS_CC_GROUP,BANK_CD,branch_ec_cd FROM PS_JOB B
LEFT JOIN PS_HMS_CC_MAP MAP
ON MAP.HMS_COST_CENTER = B.ACCT_CD JOIN PS_PYE_BANKACCT BANK
ON B.EMPLID = BANK.EMPLID
AND MAP.HPYP_CNTRL_AREA = 'IDN' WHERE EXISTS(SELECT bank_cd,branch_ec_cd FROM ps_bank_branch_tbl brn
WHERE brn.src_bank_id = 'BCA-HMS' AND brn.eff_status = 'A'
AND bank.bank_cd = brn.bank_cd
AND bank.branch_ec_cd = brn.branch_ec_cd) AND EFF_STATUS = 'A'
AND ACCOUNT_TYPE_PYE = 'S' AND B.effdt = (SELECT MAX(B1.effdt) FROM PS_JOB B1
WHERE B1.EFFDT <= (SELECT MAX(PRD_END_DT) FROM PS_GP_PYE_PRC_STAT D WHERE D.EMPLID = B1.EMPLID AND EXISTS (SELECT CAL_ID FROM
PS_HMSA_TS_OUT_CAL cal
WHERE d.cal_id = cal.cal_id)
AND D.EMPLID = (SELECT DISTINCT EMPLID FROM PS_GP_PAYMENT PYE WHERE PYE.EMPLID = D.EMPLID AND PYE.CAL_ID = 'C_2011W004_TS_D')))
Gambar 10 Tampilan Query Bank Setelah Tuning
Berdasarkan tabel 3, pada percobaan seperti yang terlihat pada tabel 5 dilakukan penggantian sintaks IN pada pemanggilan value menjadi menggunakan EXISTS sehingga pemanggilan data bisa menjadi lebih ringan serta dilakukan penggunaan composite index pada atribut bank_cd dan branch_ec_cd tabel PS_PYE_BANKACCT dikarenakan kedua atribut tersebut merupakan selective
attribute sehingga dengan menggunakan index dapat mengurangi beban dalam pemanggilan data.
Terlihat pada gambar 9 bahwa elapsed time yang dibutuhkan menjadi 111.42 sec dengan buffer gets yaitu 119,162.
SIMPULAN DAN SARAN
SimpulanBedasarkan penelitian yang telah dilakukan, maka simpulan yang dapat ditarik adalah :
• Terdapat Elapsed time dan Buffer Gets yang tinggi pada saat mengeksekusi query pada Sistem Informasi Penggajian PT. XYZ. Penyebab dari lamanya pemanggilan query pada Sistem Informasi Penggajian PT.XYZ disebabkan oleh penggunaan syntax yang tidak tepat dan penggunaan tabel yang tidak diperlukan. Hasil dari penelitian SQL tuning ini adalah dengan menurunnya buffer gets maka pemakaian resource dalam pemanggilan data ke dalam database akan menjadi lebih sedikit dan mengakibatkan lama pemanggilan data berkurang.
Saran
Saran yang diberikan oleh penulis agar pengembangan DBMS di perusahaan dapat berjalan dengan baik adalah :
1. Menggunakan skripsi ini sebagai landasan dalam melakukan proses tuning pada modul lainnya. 2. Melakukan proses tuning lainnya, seperti Memory tuning, I/O tuning dan Application tuning
agar proses bisnis PT.XYZ dapat meningkat.
REFERENSI
Sukheja, D., & Singh, U. K. (2011). A Novel Approach of Query Optimization for Distributed. IJCSI
International Journal of Computer Science Issues, Vol. 8, Issue 4, No 1, July 2011, 307.
K.Burleson, D. (2010). Oracle Tuning : The Definitive Reference.
RIWAYAT HIDUP
Edbert Giovanni Suryadi lahir di kota Jakarta pada 7 Maret 1991. Penulis menamatkan pendidikan S1
di Universitas Bina Nusantara dalam bidang Sistem Informasi pada 2013.
Keithsen Chusny lahir di kota Jakarta pada 27 September 1991. Penulis menamatkan pendidikan S1 di