Query Tuning - Tingkatkan Performa Database Anda!

แชร์
ฝัง
  • เผยแพร่เมื่อ 7 ก.ย. 2024
  • #backend #backendmagang #SQL #PostgreSQL #DatabaseOptimization #QueryTuning #Indexing #Profiling #TechTips #CodingTips #DevCommunity
    Di video kali ini, kita akan membahas tentang optimasi query SQL di PostgreSQL. Kita akan belajar bagaimana cara menulis query yang lebih efisien, menggunakan indeks dengan tepat, dan melakukan profiling dengan EXPLAIN ANALYZE untuk mengidentifikasi bottleneck dalam query kita.

ความคิดเห็น • 14

  • @hanyachanelbiasa8357
    @hanyachanelbiasa8357 28 วันที่ผ่านมา

    sehat selalu mas agar lebih sering buat videonya. jujur sangat membantu sekali

  • @metime_me
    @metime_me หลายเดือนก่อน

    Mantappp bang materi nya 🔥

  • @adrianramadhan162
    @adrianramadhan162 หลายเดือนก่อน

    Izin nyimas mas, hihi

  • @fajarihsan03
    @fajarihsan03 8 วันที่ผ่านมา

    mas mau tanya dong. saat ini kan saya pake oracle sebagai database. saya punya table yang datanya sampai puluhan juta row. table ini punya beberapa child table dengan ID sebagai foreign key nya. saya juga sudah indexing di parent table dan juga child table. tapi kenapa ya ketika saya menggunakan query delete itu lama nya minta ampun. saya hapus ratusan ribu data bisa sampe berjam jam baru selesai. saya baca baca juga katanya lebih cepat ambil data selain yang mau dihapus lalu dipindahkan ke table baru lalu di rename table barunya. tapi saya khawatir relasi nya jadi aneh ke child table nya. menurut mas gimana ya untuk case ini?

    • @backendmagang5913
      @backendmagang5913  8 วันที่ผ่านมา

      ya ini masalah umum di database dengan data yang udh lumayan besar seperti ini. karena kan ketika mas nya delete, udah pasti akan terjadi Referential Integrity. dan seperti yg masnya bilang masnya juga sudah memasang indexing ya tentunya ketika proses delete, databasenya bakal mengupdate indexnya. ya untuk hal superti ini banyak alternatifnya sih yang bisa jadi pertimbangan. misal :
      Partitioning: Kalo tabel masnya sangat besar, pertimbangkan untuk mempartisi tabel berdasarkan kolom tertentu, seperti tanggal. Dengan partisi masnya bisa menghapus seluruh partisi dengan cepat tanpa mempengaruhi partisi lainnya.
      Batch Deletion: daripada menghapus ratusan ribu baris dalam satu transaksi, coba hapus dalam batch yang lebih kecil, misalnya 10,000 atau 50,000 baris per batch. Ini bisa mengurangi beban pada sistem dan mempercepat proses. masnya bisa menggunakan loop dengan commit setelah setiap batch untuk menghindari beban besar pada proses transaksi.
      Disable Constraints Sementara: Kalo referential integrity bukan masalah utama untuk proses DELETE ini, masnya bisa mempertimbangkan untuk menonaktifkan sementara constraints dan index pada tabel child sebelum melakukan operasi DELETE, dan kemudian mengaktifkannya lagi setelah selesai. Tapi ini ya perlu hati-hati untuk menghindari inkonsistensi data.
      Archiving: Kalo data yang ingin masnya hapus sudah tidak diperlukan, pertimbangkan untuk meng-archive data tersebut ke tabel terpisah sebelum menghapusnya. Ini bisa jadi opsi yang lebih aman daripada memindahkan data yang tersisa.
      semoga menjawab..

  • @muhammadsetyanto3515
    @muhammadsetyanto3515 หลายเดือนก่อน

    Saya pernah dengar dari pengalaman beberapa teman. Untuk meningkatkan kecepatan web justru bukan karena bahasa pemograman. Bahasa pemograman memang berpengaruh namun tidak sesignifikan itu. Justru yang paling signifikan adalah dari optimasi kode dan query database.
    Bang mau izin tanya, saya dengar bahwa postgre jauh lebih baik ketimbang mysql. Pertanyaannya
    1. Emangnya kenapa ya bang ? Kalau memang lambat kenapa perusahaan besar seperti wordpress masih pakai mysql.
    2. Sekarang saya sedang pakai Laravel dengan database awal mysql. Saat sudah berjalan programnya dengan baik kemudian pindah ke postgre. Apakah tinggal pindah database aja atau ada beberapa penyesuaian ?
    Terimakasih bang atas ilmunya

    • @backendmagang5913
      @backendmagang5913  หลายเดือนก่อน +2

      untuk statement itu saya tidak setuju sih mohon maaf. web apalagi bila kita bicara system yang lebih besar tidak sekedar website, pemilihan bahasa program yang akan dipakai itu sangat crucial. mas-nya ga akan menemukan aplikasi dengan pengguna publik yg massive dan RPS tinggi, untuk backend-nya hanya sekedar PHP. di beberapa perusahaan tempat saya pernah bekerja, kita memakai Golang ya bukan Karena bercanda ataupun keren2an, tapi karena kemampuannya untuk mengurangi latency dan meningkatkan throughput. dan begitupula bahasa2 yang lain punya kelebihan tertentu yang disesuaikan dengan system seperti apa yang akan dibuat. pemilhan bahasa program itu paling pertama dilakukan, baru teknik - teknik yang lain itu mengikuti seiring meningkatnya tantangan yang dihadapi sistem.
      dan untuk pertanyaanya :
      simplenya postgre punya indexing yang lebih baik dari mySQL dan lebih ketat dalam integritas data dan transaksi.
      kalau kenapa perusahaan seperti wordpress masih memakai mysql, itu ya karena dalam sistem yang dibuat meraka, lebih banyak read dari pada write nya, mysql memang cenderung lebih cepat dalam kontext tertentu ketika melakukan reading data. Dan juga simplicity yang diutamakan mysql lebih cocok ke aplikasi web yang memang belum butuh fitur - fitur yang kompleks seperti yang dimiliki postgres. analogi simplenya, untuk sekedar ke alfamart di depan gang, naik mobil bisa tp ribet, n lbh simple naik motor.
      untuk ganti database ya tidak serta merta juga. perlu diperhatikan detail juga Karena syntax pada mysql dan postgres sedikit berbeda dan tipe data juga banyak perbedaan. jadi untuk query - query yang spesifik, ya perlu penyesuaian tentunya.
      semoga membantu ya..

    • @muhammadsetyanto3515
      @muhammadsetyanto3515 หลายเดือนก่อน

      ​@@backendmagang5913 makasih banyak mas atas masukannya. Bagus sekali.
      Say juga sedikit banyak mencari informasi dan menemukan memang bahasa pemograman juga amat besar pengaruhnya. Mungkin pengalaman teman saya tidak sampai se kompleks yang project mas nya.
      Mungkin izin bertanya lagi mas.
      Saya di lembaga pendidikan dengan IT sendirian. sekarang posisi udah make laravel selama 4 bulanan dan ditargetkan untuk membuat LMS/Sistem akademik ( project itu belum dimulai )
      Saya masih agak bingung. Apakah saya bangun aja pakai yang saya bisa baru nanti migrasi ke golang atau dari awal aja sekarang saya belajar golang supaya nggak ada migrasi lagi.
      Dengan kasus ini mempertimbangkan waktu belajar golang kemudian dari pengalaman masnya. Saya lebih baik ambil keputusan yang mana ?

    • @backendmagang5913
      @backendmagang5913  หลายเดือนก่อน +1

      untuk focus ke kecepatan delivery dulu, tentunya lebih baik buat pakai stack technology yang masnya bisa dulu dalam kasus ini Laravel. dan Laravel memang diperuntukan untuk membuat sistem yang monolith yang pastinya lebih mudah saat awal proses pengembangan. nantinya seiring meningkatnya user dan tantangan2 lain yang di hadapi system, bisa dipertimbangkan untuk migrasi ke arah microsrvices. dengan microservices mas nya bebas menggunakan teknologi apa saja pada setiap service tergantung kebtuhan dari service - service itu sendiri, baik dari bahasa program, database, dan stack technology lainnya.
      semoga membantu ya..

    • @muhammadsetyanto3515
      @muhammadsetyanto3515 หลายเดือนก่อน

      @@backendmagang5913 mentor saya juga berpesan kurang lebih sama yang intinya lebih baik pake yang biasa digunakan dulu baru optimasi kecepatan belakangan.
      Namun saya tetap dapat pelajaran berharga apalagi dari orang yang sudah terbiasa menggunakan golang.
      Makasih banyak atas masukan dan sharingnya. Sangat membantu kami.

    • @backendmagang5913
      @backendmagang5913  หลายเดือนก่อน

      siap.. semoga bermanfaat..