Disable Preloader

Ada laporan masuk dari TIM saya yang memberitahukan kepada saya bahwa Proses pencatatan Defekta (Pengambilan obat dari Gudang ke Apotik) menjadi sangat lambaaaat, bahkan membutuhkan waktu bisa lebih 1 menit hanya untuk mengupdate transaksi pencatatan pengambilan barang dari gudang. Padahal sebelumnya aman-aman saja, tidak ada lambat dan transaksi lancar.

Wah..... nah... hah.... kenapa ????
Coba mencari tahu, awal yang terfikir oleh saya adalah.. adakah masalah dari sisi Coding yg saya lakukan, coba cek dan ricek dari baris ke baris, namun satu sisi sambil ngecek terfikir oleh saya kenapa sebelumnya tidak masalah, tidak ada keluhan lambat saat pencatatan data transaksi pengambilan barang dari Gudang ke Apotik. Sambil terus berfikir dan memeriksa baris-baris code seperti dibawah ini :

'Kurangi stok dari sumber
Dim resupdatesumber As New KlikMedic.StartMedic.ResponUpdateStock
resupdatesumber = klikmedic.Get_Barang_UpdateStock(txtIDLokasi.Text.Trim, _
                                                                   txtIDBarang.Text.Trim, _
                                                                   CDec(txtQTY.Text), _
                                                                   0, _
                                                                   0, _
                                                                   StartMedic.Stok.Keluar, _
                                                                   StartMedic.TransaksiBarang.DariPengambilan, _
                                                                   var_OpsiHPP, _
                                                                   cboDate1.Text, _
                                                                   "", _
                                                                   "", _
                                                                   StartMedic.KartuStok.CreateYes, _
                                                                   StartMedic.KoreksiStok.No, _
                                                                   txtUSERNAME.Text.Trim)
                If resupdatesumber.ResponUpdateStock = True Then
                    Dim resUpdatePenerima As New KlikMedic.StartMedic.ResponUpdateStock
                    resUpdatePenerima = klikmedic.Get_Barang_UpdateStock(var_IDRUanganSystem, _
                                                                 txtIDBarang.Text.Trim, _
                                                                 CDec(txtQTY.Text), _
                                                                 CDec(resupdatesumber.ResponUpdateStockNilaiHPPBarang) / CDec(txtQTY.Text), _
                                                                 CDec(resupdatesumber.ResponUpdateStockHargaSatuan), _
                                                                 StartMedic.Stok.Masuk, _
                                                                 StartMedic.TransaksiBarang.DariPengambilan, _
                                                                 var_OpsiHPP, _
                                                                 cboDate1.Text, _
                                                                 "", _
                                                                 "", _
                                                                 StartMedic.KartuStok.CreateYes, _
                                                                 StartMedic.KoreksiStok.No, _
                                                                 txtUSERNAME.Text.Trim)
                    If resUpdatePenerima.ResponUpdateStock = False Then
                        MessError = MessError & resUpdatePenerima.ResponUpdateStockErrorMessage & vbCrLf
                        jmlError = jmlError + 1
                    Else
                        'Insert log 
                        Dim ht As New Hashtable
                        With ht
                            .Add("tgl_ambil", klik.DateToDateTime(CStr(cboDate1.Text)))
                            .Add("id_barang", txtIDBarang.Text.Trim)
                            .Add("qty", CDec(txtQTY.Text))
                            .Add("satuan", lblSatuan1.Text.Trim)
                            .Add("hpp_total", CDec(resupdatesumber.ResponUpdateStockNilaiHPPBarang))
                            .Add("id_ruangan_sumber", txtIDLokasi.Text.Trim)
                            .Add("id_ruangan_pengambil", var_IDRUanganSystem)
                            .Add("username", txtUSERNAME.Text.Trim)
                        End With
                        Dim ok As Boolean = False
                        ok = klik.InsertRecordMySql("tbl_order_defekta", ht)
                        If ok = False Then
                            jmlError = jmlError + 1
                        End If
                    End If
                Else

                    jmlError = jmlError + 1
                    MessError = MessError & resupdatesumber.ResponUpdateStockErrorMessage & vbCrLf

                End If

Akhirnya.. teringat bahwa kejadian ini baru dilaporkan setelah terjadinya Upgrade Database MariaDB, yang sebelumnya menggunakan Versi 5.6 diganti menjadi Versi 10.3. Nah... sambil mikir apakah ada efek dari perubahan tersebut, akhirnya setelah memastikan tidak masalah dari sisi Coding di Aplikasi, cobalah saya merubah untuk mengecek Field Indexing pada salah satu table yang saya gunakan untuk meng-update stok.

Saat masih menggunakan Database MariaDB 5.6, beberapa field yang menjadi Key saat proses Filter data (Query), saya menambahkan bebera field tersebut dalam daftar indexing. Namun proses pembuatan Indexing saya lakukan per satu field. Kemudian timbul inisiatif saya mencoba mengganti Indexing per Field menjadi Multi Column Index yang urutan indexing-nya saya sesuai dengan code di aplikasi untuk kepentingan update data.

Sebelumnya field index saya susun seperti ini :
=> id_barang
=> id_lokasi
=> stok

Lalu saya rubah menjadi
=> id_barang,id_lokasi,stok

Kemudian saya simpan, dan saya jalankan kembali aplikasi dan melakukan transaksi pencatatan pengambilan barang dari gudang ke apotik, dan... taraaaaaaaaaa..... bigitu di klik tombol Save respon sistem kembali cepat seperti sebelumnya saat masih menggunakan Database MariaDB 5.6.

Kesimpulan :
Saya tidak tau penyebab pastinya apa sehingga proses update transaksi menjadi sangat lambat dan bahkan memakan waktu 1 menit, padahal sebelumnya sangat cepat, dan kejadian ini timbul setelah saya melakukan Upgrade database MariaDB 5.6 menjadi MariaDB 10.3.

Semoga bermanfat.

Share:
admin

Semua manusia memiliki kesempatan yang sama, jadi tetap semangat untuk melakukan pekerjaan sebaik mungkin.

Comments