Replika baca PostgreSQL untuk pelaporan — jaga dashboard tetap cepat
Gunakan replika baca PostgreSQL untuk pelaporan agar dashboard tetap cepat sekaligus melindungi database utama dari query lambat, lonjakan beban, dan tekanan lock.

Mengapa pelaporan bisa memperlambat database utama Anda
Polanya sering terlihat seperti ini: aplikasi terasa lancar sebagian besar waktu, lalu seseorang membuka dashboard dan tiba-tiba proses checkout, login, atau alat support mulai melambat. Tidak ada yang “down”, tetapi semuanya menjadi lebih lambat. Biasanya itu berarti database utama Anda ditarik ke dua arah sekaligus.
Transaksi (pekerjaan aplikasi sehari-hari) biasanya singkat dan selektif. Mereka membaca atau memperbarui sejumlah kecil baris, menggunakan indeks, dan selesai cepat sehingga permintaan lain bisa dilayani. Query pelaporan berperilaku berbeda. Mereka sering memindai banyak data, menggabungkan banyak tabel, mengurutkan dan mengelompokkan hasil, serta menghitung total untuk hari atau bulan. Bahkan ketika tidak memblokir penulisan secara langsung, query semacam ini masih bisa memakan sumber daya bersama yang dibutuhkan aplikasi Anda.
Berikut cara umum dashboard bisa merugikan database OLTP:
- Pembacaan berat bersaing untuk CPU, memori, dan disk I/O
- Pemindaian besar mendorong halaman “hot” keluar dari cache, sehingga query normal menjadi lebih lambat
- Pengurutan besar dan GROUP BY menulis ke disk dan menciptakan lonjakan beban
- Query yang berjalan lama meningkatkan kontensi dan membuat lonjakan bertahan lebih lama
- Filter ad hoc (rentang tanggal, segmen) membuat beban tidak terduga
Replika baca adalah server PostgreSQL terpisah yang terus menyalin data dari server utama Anda dan dapat melayani query hanya-baca. Menggunakan replika baca PostgreSQL untuk pelaporan memungkinkan dashboard menjalankan pekerjaan beratnya di tempat lain, sehingga server utama dapat fokus pada transaksi yang cepat.
Harapan yang perlu ditetapkan sejak awal: replika membantu pembacaan, bukan penulisan. Anda tidak bisa dengan aman mengirim INSERT/UPDATE ke replika standar, dan hasilnya bisa sedikit tertinggal dari primary karena replikasi butuh waktu. Untuk banyak dashboard, itu trade-off yang baik: angka yang sedikit kurang “segar” sebagai ganti performa aplikasi yang konsisten.
Jika Anda membuat dashboard internal (misalnya di AppMaster) pembagian ini sering cocok: aplikasi terus menulis ke primary, sementara layar pelaporan melakukan query ke replika.
Cara kerja replika baca di PostgreSQL (penjelasan sederhana)
Replika baca PostgreSQL adalah server database kedua yang menyimpan salinan near-real-time dari database utama (primary) Anda. Primary menangani penulisan (INSERT, UPDATE, DELETE). Replika sebagian besar melayani pembacaan (SELECT), sehingga query pelaporan tidak bersaing dengan transaksi harian.
Primary vs replika dalam satu menit
Bayangkan primary sebagai kasir di toko yang sibuk: ia harus tetap responsif karena setiap penjualan memperbarui stok, pembayaran, dan pesanan. Replika seperti layar tampilan yang menunjukkan total dan tren. Ia mengamati apa yang kasir lakukan dan memperbarui tampilan sedikit setelahnya.
Di balik layar, PostgreSQL menyalin perubahan dengan mengirimkan aliran perubahan dari primary dan memprosesnya di replika. Itu berarti replika akan memiliki struktur dan data yang sama, hanya sedikit tertinggal.
Secara praktis, replikasi menyalin:
- Data tabel (baris)
- Perubahan indeks (supaya query bisa menggunakan indeks yang sama)
- Perubahan skema (seperti kolom baru, tabel baru, dan banyak tipe migrasi)
- Sebagian besar perubahan database lain yang terjadi melalui SQL normal
Yang tidak diselesaikan oleh replika: replika tidak membuat penulisan berat menjadi lebih murah, dan tidak akan memperbaiki query lambat yang disebabkan oleh skema buruk atau indeks yang hilang. Jika query dashboard Anda memindai tabel besar di replika, query itu masih bisa lambat. Hanya saja tidak akan memperlambat checkout pada saat bersamaan.
Inilah mengapa replika baca PostgreSQL untuk pelaporan populer: mereka memisahkan pekerjaan OLTP (transaksi cepat dan sering) dari pekerjaan bergaya OLAP (pembacaan lebih lama, pengelompokan, dan total). Jika Anda membuat dashboard internal atau panel admin (misalnya di AppMaster), menunjuk halaman pelaporan ke replika seringkali cara termudah agar kedua sisi tetap berjalan baik.
Beban kerja pelaporan umum yang cocok di replika
Aturan sederhana: jika sebuah query terutama membaca banyak data untuk meringkasnya, itu kandidat kuat untuk dijalankan di replika. Dengan replika baca PostgreSQL untuk pelaporan, Anda melindungi alur checkout, sign-in, dan pekerjaan transaksional lain dari pekerjaan berat yang sering diperlukan dashboard.
Pola dashboard paling umum adalah rentang tanggal lebar ditambah beberapa filter. “90 hari terakhir per wilayah, produk, dan saluran” bisa saja menyentuh jutaan baris, meskipun grafik akhir hanya menampilkan 12 batang. Pemindaian ini dapat bersaing dengan database utama Anda untuk pembacaan disk dan ruang cache.
Beban kerja yang cocok dijalankan di replika
Kebanyakan tim memulai dengan memindahkan hal-hal ini ke database pelaporan:
- Join besar di beberapa tabel (orders + items + customers + refunds)
- Agregasi seperti SUM, COUNT DISTINCT, perhitungan persentil, kohort
- Query yang berjalan lama yang mengurutkan dan mengelompokkan hasil besar
- Laporan terjadwal yang berjalan setiap jam/hari dan mengulang pekerjaan berat yang sama
- Sesi BI eksploratori di mana orang mengklik dan menjalankan variasi berulang
Bahkan ketika sebuah query “hanya-baca”, ia masih bisa membakar CPU, memori, dan I/O. Operasi GROUP BY besar bisa mengusir query lain dari memori. Pemindaian berulang bisa mengacaukan buffer cache, sehingga primary mulai membaca dari disk lebih sering.
Perilaku koneksi juga penting. Banyak alat BI membuka banyak koneksi per pengguna, menyegarkan tile setiap beberapa menit, dan menjalankan ekstrak latar belakang. Itu bisa menciptakan lonjakan koneksi dan query konkuren secara tiba-tiba. Replika memberi tempat yang lebih aman untuk mendaratkan lonjakan tersebut.
Contoh sederhana: dashboard operasi Anda dimuat pada pukul 09.00 dan 50 orang membukanya bersamaan. Setiap tampilan halaman memicu beberapa widget, dan setiap widget menjalankan query dengan filter berbeda. Di primary, ledakan itu bisa memperlambat pembuatan pesanan. Di replika, dashboard mungkin lebih lambat atau sedikit tertinggal, tetapi transaksi Anda tetap cepat.
Jika Anda membangun dashboard internal di platform seperti AppMaster, menunjuk layar pelaporan ke string koneksi replika seringkali kemenangan mudah, selama semua orang memahami data mungkin beberapa detik (atau menit) tertinggal.
Trade-off: kesegaran vs kecepatan (replication lag)
Replika baca menjaga dashboard tetap cepat karena mengambil query pelaporan dari database utama Anda. Biayanya adalah replika biasanya sedikit tertinggal. Keterlambatan ini disebut replication lag, dan itu adalah trade-off utama dalam penggunaan replika baca PostgreSQL untuk pelaporan.
Yang dilihat pengguna sederhana: angka “hari ini” sedikit kurang, pesanan terbaru hilang, atau grafik diperbarui beberapa menit terlambat. Kebanyakan orang tidak keberatan jika tren mingguan terlambat 2 menit, tetapi mereka peduli jika tampilan “pembayaran baru saja berhasil” salah.
Lag terjadi ketika primary menghasilkan perubahan lebih cepat daripada replika dapat menerima dan memprosesnya. Penyebab umum termasuk ledakan penulisan (flash sale, impor), bandwidth jaringan terbatas, disk replika yang lambat, atau query yang berjalan lama yang bersaing untuk CPU dan I/O sementara replika mencoba menerapkan perubahan.
Cara praktis memilih lag yang dapat diterima adalah mencocokkannya dengan keputusan yang didukung dashboard:
- Dashboard KPI eksekutif: beberapa detik hingga beberapa menit biasanya oke.
- Antrian operasi (pengiriman, support): bidik real-time, biasanya detik.
- Penutupan finansial atau audit: jalankan pada snapshot terkontrol, bukan “live.”
- Tampilan pelanggan “pesanan terbaru saya”: near real time, atau gunakan primary.
Aturan sederhana: jika sebuah laporan harus menyertakan transaksi yang baru saja dikomit, itu harus memukul primary (atau sistem yang dirancang untuk kesegaran terjamin). Contoh tipikal adalah ketersediaan inventori saat checkout, pemeriksaan fraud, dan apa pun yang memicu tindakan segera.
Contoh: dashboard tim penjualan bisa aman membaca dari replika dan menyegarkan setiap menit. Tetapi halaman “konfirmasi pesanan” harus membaca dari primary, karena menampilkan “pesanan tidak ditemukan” untuk pesanan yang baru dibuat adalah tiket support yang menunggu terjadi.
Jika aplikasi atau alat no-code Anda memungkinkan memilih koneksi database (misalnya, menunjuk layar read-only ke replika di AppMaster), Anda dapat menerapkan pemisahan ini tanpa mengubah cara tim membuat UI.
Langkah demi langkah: menyiapkan replika baca untuk dashboard
Menyiapkan replika untuk dashboard sebagian besar soal membuat beberapa pilihan jelas sejak awal, lalu menjaga lalu lintas pelaporan agar tidak menuju database utama.
1) Bentukkan topologi dengan benar
Mulailah dari topologi. Satu replika sering cukup untuk satu alat BI dan beberapa dashboard. Beberapa replika membantu jika Anda memiliki banyak analis atau beberapa alat yang mengakses data sepanjang hari. Jika pengguna Anda jauh dari wilayah utama, replika regional dapat mengurangi latensi untuk dashboard, tetapi itu juga menambah lebih banyak tempat yang harus dipantau.
Selanjutnya, pilih replikasi sinkron atau asinkron. Sinkron memberikan kesegaran terbaik tetapi bisa memperlambat penulisan, yang mengalahkan tujuan bagi banyak tim. Asinkron biasanya pilihan untuk dashboard, selama semua orang menerima bahwa data mungkin sedikit tertinggal.
2) Bangun replika seperti server pelaporan
Replika bukan salinan produksi yang murah. Query pelaporan sering membutuhkan lebih banyak CPU, lebih banyak memori untuk pengurutan, dan disk cepat untuk pemindaian.
Berikut alur penyiapan praktis untuk replika baca PostgreSQL untuk pelaporan:
- Tentukan berapa banyak replika yang Anda butuhkan dan di mana mereka harus berada (satu region yang sama atau lebih dekat ke pengguna).
- Pilih async vs sync berdasarkan seberapa besar delay yang dapat ditoleransi dashboard Anda.
- Siapkan sumber daya untuk beban baca berat (CPU, RAM, dan IOPS disk biasanya lebih penting daripada ukuran penyimpanan).
- Buat kredensial read-only terpisah untuk pengguna dan alat pelaporan.
- Rutekan query dashboard ke replika (konfigurasikan aplikasi, alat BI, atau layanan pelaporan kecil untuk menggunakan koneksi replika).
Setelah merutekan, validasi dengan tes sederhana: jalankan query dashboard berat yang diketahui dan pastikan itu tidak lagi muncul di aktivitas database utama.
Jika Anda membangun aplikasi dengan AppMaster, ini biasanya berarti mendefinisikan koneksi database terpisah untuk pelaporan dan menggunakannya hanya untuk endpoint dashboard, sehingga checkout dan alur transaksional lainnya tetap memiliki jalur cepat sendiri.
Kontrol akses dan keamanan untuk pengguna pelaporan
Replika baca bagus untuk dashboard, tetapi tetap perlu pembatasan. Perlakukan seperti sumber daya bersama: berikan alat pelaporan akses secukupnya, dan batasi potensi kerusakan oleh query buruk.
Mulailah dengan user database terpisah untuk pelaporan. Hindari menggunakan kredensial utama aplikasi Anda, meskipun Anda menunjuk ke replika. Ini mempermudah audit aktivitas, rotasi password, dan memperketat hak akses.
Pendekatan sederhana yang cocok untuk kebanyakan tim:
-- Create a dedicated login
CREATE ROLE report_user LOGIN PASSWORD '...';
-- Allow read-only access to a schema
GRANT CONNECT ON DATABASE yourdb TO report_user;
GRANT USAGE ON SCHEMA public TO report_user;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO report_user;
ALTER DEFAULT PRIVILEGES IN SCHEMA public
GRANT SELECT ON TABLES TO report_user;
-- Put safety limits on the role
ALTER ROLE report_user SET statement_timeout = '30s';
ALTER ROLE report_user SET idle_in_transaction_session_timeout = '15s';
Selanjutnya, kendalikan lonjakan koneksi. Dashboard dan alat BI suka membuka banyak koneksi, terutama saat banyak widget menyegarkan bersamaan. Batasi koneksi pelaporan pada level database dan pada pooler Anda, dan pisahkan dari lalu lintas transaksional.
Daftar periksa praktis:
- Gunakan user read-only (tanpa INSERT/UPDATE/DELETE, tanpa perubahan skema).
- Atur timeout per-role untuk query lama dan sesi idle.
- Batasi max connections untuk pengguna pelaporan ke angka aman.
- Batasi akses hanya ke skema dan tabel yang diperlukan dashboard.
- Sembunyikan atau keluarkan kolom sensitif (PII, rahasia, token) dari view pelaporan.
Jika Anda perlu menampilkan data pelanggan parsial, jangan mengandalkan “orang akan berhati-hati.” Buat view pelaporan yang menyamarkan atau meng-hash field sensitif, atau pertahankan skema pelaporan yang dikurasi. Ketika tim membangun dashboard dengan AppMaster, gunakan string koneksi replika dan user pelaporan khusus sehingga aplikasi yang dihasilkan membaca dengan aman tanpa menyentuh akses write produksi.
Kontrol ini membuat replika baca PostgreSQL untuk pelaporan tetap cepat, dapat diprediksi, dan jauh lebih sulit disalahgunakan.
Monitoring yang mencegah kejutan pada dashboard
Replika hanya membantu jika berperilaku dapat diprediksi. Dua hal yang biasanya mengejutkan tim adalah lag replikasi yang diam-diam terjadi (dashboard terlihat “salah”) dan lonjakan sumber daya di replika (dashboard menjadi lambat). Monitoring harus menangkap keduanya sebelum pengguna Anda mengetahuinya.
Mulailah dengan mengukur lag dan sepakati apa arti “cukup segar” untuk bisnis Anda. Untuk banyak dashboard pelaporan, 30 hingga 120 detik cukup. Untuk yang lain (seperti inventori atau fraud), bahkan 5 detik bisa terlalu lama. Apa pun yang Anda pilih, buat itu menjadi angka yang terlihat dan beri alert jika terlampaui.
Berikut sinyal praktis yang perlu dipantau untuk replika baca PostgreSQL untuk pelaporan:
- Replication lag (waktu dan byte). Beri alert ketika melebihi ambang batas Anda selama beberapa menit, bukan hanya lonjakan tunggal.
- Kesehatan replika: tekanan CPU, memori, dan disk read I/O saat jam puncak pelaporan.
- Saturasi koneksi pada replika (terlalu banyak sesi dashboard dapat terlihat seperti “database lambat”).
- Query lambat pada replika, menggunakan statistik dan log replika sendiri (jangan berasumsi primary menceritakan seluruh kisah).
- Autovacuum dan bloat pada replika. Pembacaan bisa menurun ketika tabel atau indeks membengkak.
Pelacakan query lambat pantas mendapat perhatian khusus. Mode kegagalan umum adalah dashboard yang baik saat testing berubah menjadi “festival full table scan” di produksi. Pastikan replika memiliki monitoring yang sama seperti yang Anda andalkan untuk primary, termasuk query teratas berdasarkan total waktu dan waktu rata-rata.
Akhirnya, putuskan sejak awal apa yang dilakukan aplikasi ketika replika tidak tersedia atau terlalu tertinggal. Pilih satu perilaku dan terapkan secara konsisten:
- Tampilkan banner “data tertunda” saat lag di atas ambang.
- Nonaktifkan sementara chart terberat dan pertahankan ringkasan ringan.
- Kembalikan ke hasil cache untuk jendela tetap (mis. 15 menit terakhir).
- Rute kembali pembacaan kritikal ke primary hanya untuk layar tertentu.
- Masukkan dashboard ke mode pemeliharaan read-only sampai replika pulih.
Jika Anda membangun dashboard internal di AppMaster, perlakukan replika sebagai sumber data terpisah: pantau secara terpisah, dan desain dashboard agar menurun dengan anggun saat kesegaran atau performa turun.
Kesalahan umum dan jebakan yang harus dihindari
Replika membantu, tetapi bukan tombol ajaib “buat pelaporan jadi gratis”. Sebagian besar masalah replika muncul dari memperlakukannya seperti gudang analitik tak terbatas, lalu terkejut ketika dashboard menjadi lambat atau salah.
Salah satu yang sering terlewat: replika juga bisa kelebihan beban. Beberapa pemindaian tabel lebar, join berat, atau ekspor “SELECT *” bisa mendorong CPU dan disk keras-keras dan menyebabkan timeout. Jika replika berada pada hardware yang lebih kecil dari primary (umum dilakukan untuk menghemat biaya), perlambatan muncul lebih cepat.
Berikut jebakan yang paling menyakitkan:
- Merutekan layar real-time kritikal ke replika. Jika dashboard digunakan untuk mengonfirmasi checkout yang baru saja selesai atau menunjukkan inventori live, replication lag bisa membuat data terlihat hilang.
- Membiarkan alat BI membuka terlalu banyak koneksi. Beberapa alat menyegarkan banyak tile sekaligus, dan setiap tile bisa membuka sesi sendiri. Lonjakan koneksi bisa menjatuhkan replika bahkan saat tiap query tampak “kecil.”
- Menganggap indeks sudah cukup. Indeks tidak dapat memperbaiki query yang menarik jutaan baris, mengelompokkan pada kunci yang salah, atau join tanpa batasan. Bentuk query dan volume data lebih penting daripada tambahan indeks.
- Lupa bahwa “cepat sekali” bukan berarti “selalu cepat.” Query yang baik di pagi hari bisa melambat setelah data tumbuh, atau ketika banyak orang menyegarkan laporan yang sama.
- Tidak merencanakan perilaku failover. Saat failover, replika bisa dipromosikan atau diganti, dan klien bisa menghadapi error read-only atau endpoint usang jika Anda tidak merencanakan perpindahan.
Contoh realistis: alat BI Anda menyegarkan halaman “pesanan hari ini” setiap menit. Jika itu menjalankan lima query berat per penyegaran dan 20 orang membukanya, itu menjadi 100 ledakan query berat per menit. Primary mungkin aman, tetapi replika bisa runtuh.
Jika Anda membangun dashboard internal dengan platform seperti AppMaster, perlakukan database pelaporan sebagai target terpisah dengan batas koneksi dan aturan "freshness required" sendiri, sehingga pengguna tidak secara tidak sengaja bergantung pada data yang tertinggal.
Pola desain yang membuat pelaporan lebih cepat di replika
Replika memberi Anda ruang bernapas, tetapi tidak otomatis membuat setiap dashboard cepat. Hasil terbaik datang dari membentuk query pelaporan agar melakukan lebih sedikit kerja dan lebih prediktabel. Pola berikut bekerja baik untuk replika baca PostgreSQL karena mengurangi pemindaian berat dan agregasi ulang.
Pisahkan “lapisan pelaporan”
Pertimbangkan skema pelaporan khusus (mis. reporting) yang berisi view stabil dan tabel pembantu. Ini menjaga alat BI dan dashboard agar tidak langsung memukul tabel transaksi mentah, dan memberi Anda satu tempat untuk mengoptimalkan. View pelaporan yang baik juga menyembunyikan join berantakan sehingga query dashboard tetap sederhana.
Pra-aggregasi untuk pekerjaan berat
Jika dashboard sering menghitung total yang sama sepanjang hari (pendapatan harian, pesanan per status, produk teratas), hentikan perhitungan dari awal setiap kali. Bangun tabel ringkasan atau materialized view yang sudah menyimpan angka-angka tersebut dalam bentuk yang teragregasi.
Pilihan umum:
- Rollup harian atau per jam (berdasarkan tanggal, wilayah, saluran)
- Tabel snapshot “last known” (inventori, saldo akun)
- Tabel Top-N (produk teratas, pelanggan teratas)
- Tabel fakta dengan kolom denormalisasi untuk penyaringan lebih cepat
Segarkan metrik berat secara terjadwal
Segarkan pra-aggregasi dengan job terjadwal, idealnya di luar jam sibuk. Jika bisnis bisa hidup dengan “diperbarui setiap 5 menit”, Anda bisa menukar sedikit delay dengan dashboard yang jauh lebih cepat. Untuk dataset yang sangat besar, pembaruan inkremental (hanya baris baru sejak terakhir) biasanya lebih murah daripada refresh penuh.
Cache apa yang sering diklik pengguna
Jika widget dashboard yang sama sering diminta berulang, cache hasil di lapisan aplikasi untuk waktu singkat (30–120 detik sering cukup). Misalnya, tile “Penjualan Hari Ini” bisa di-cache per perusahaan atau toko. Di alat seperti AppMaster, jenis caching ini biasanya paling mudah ditambahkan di sekitar endpoint API yang memberi data pada dashboard.
Aturan sederhana: jika sebuah query lambat dan populer, pra-aggregasi-kan, cache, atau lakukan keduanya.
Contoh realistis: pelaporan penjualan tanpa memperlambat checkout
Bayangkan aplikasi e-commerce kecil. Database utama menangani login, keranjang, pembayaran, dan pembaruan pesanan sepanjang hari. Pada saat yang sama, tim ingin dashboard yang menunjukkan pendapatan per jam, produk teratas, dan pengembalian.
Sebelum perubahan, dashboard menjalankan query berat di database primary. Menjelang akhir bulan, seseorang membuka chart “30 hari terakhir per produk”, dan itu memindai sebagian besar tabel orders. Checkout mulai terasa lambat karena query pelaporan bersaing untuk CPU, memori, dan pembacaan disk yang sama.
Perbaikan sederhana: pindahkan bacaan dashboard ke replika. Dengan replika baca PostgreSQL untuk pelaporan, primary terus melakukan penulisan cepat, sementara replika menjawab pembacaan panjang. Dashboard menunjuk ke string koneksi replika, bukan primary.
Tim juga menetapkan aturan kesegaran yang jelas agar tidak ada yang mengharapkan angka real time sempurna:
- Tampilkan “Data diperbarui X menit lalu” di dashboard
- Izinkan hingga 5 menit delay pada jam normal
- Jika lag melewati 10 menit, alihkan dashboard ke “mode tertunda” dan jeda chart terberat
- Tetap lakukan checkout dan pembaruan pesanan selalu di primary
Setelah perubahan, hasilnya terasa. Checkout tetap stabil bahkan saat terjadi lonjakan laporan, dan chart memuat cepat karena tidak lagi bersaing dengan transaksi.
Yang perlu didengar pengguna sederhana: dashboard adalah “near real time,” bukan sumber kebenaran untuk 10 detik terakhir. Jika seseorang membutuhkan total yang tepat untuk rekonsiliasi, jalankan ekspor terjadwal atau laporan akhir hari.
Jika Anda membangun aplikasi dengan platform seperti AppMaster, anggap pelaporan sebagai koneksi read-only terpisah sejak hari pertama sehingga alur transaksional Anda tetap dapat diprediksi.
Pemeriksaan cepat dan langkah selanjutnya
Sebelum Anda mengarahkan dashboard ke replika, lakukan pemeriksaan kewajaran singkat. Beberapa pengaturan dan kebiasaan kecil mencegah kejutan paling umum: angka kadaluarsa, timeout, dan penulisan tidak sengaja.
Berikut daftar periksa cepat sebelum mengirim lalu lintas ke replika:
- Buat koneksi pelaporan read-only (gunakan user khusus dan paksa transaksi read-only).
- Pisahkan pelaporan dari lalu lintas aplikasi (pool koneksi sendiri dan batas koneksi yang masuk akal).
- Pastikan replika memiliki indeks yang diperlukan dashboard Anda andalkan (replika menyalin indeks, tapi periksa agar tidak kehilangan perubahan terbaru).
- Atur statement dan lock timeout untuk query pelaporan agar satu chart buruk tidak menggantung semuanya.
- Validasi bahwa chart toleran terhadap delay kecil (tampilkan timestamp “as of” atau bulatkan ke menit bila perlu).
Setelah lalu lintas mengalir, perlakukan monitoring sebagai rutinitas mingguan ringan, bukan darurat. Ini terutama berlaku untuk replika baca PostgreSQL untuk pelaporan, di mana “itu bekerja kemarin” bisa berubah cepat saat volume data tumbuh.
Daftar periksa monitoring mingguan (10 menit):
- Replication lag: pantau lag tipikal dan lonjakan terburuk selama jam puncak.
- Query lambat: lacak pelanggar teratas berdasarkan total waktu, bukan hanya satu eksekusi lambat.
- Koneksi: periksa max connections, saturasi pool, dan koneksi idle menumpuk.
- Disk dan CPU: replika bisa menjadi bottleneck pada penyimpanan selama pemindaian berat.
- Query gagal: cari timeout, statement dibatalkan, atau error izin.
Langkah selanjutnya sebagian besar tentang aturan routing dan rencana fallback. Putuskan endpoint mana yang selalu aman dibaca dari replika (dashboard, ekspor, laporan admin), dan mana yang harus tetap di primary (apa pun yang harus up-to-the-second). Definisikan apa yang terjadi ketika lag melewati batas Anda: tampilkan peringatan, alihkan beberapa halaman kembali ke primary, atau nonaktifkan chart terberat sementara.
Jika Anda membuat dashboard internal atau alat admin, AppMaster bisa menjadi cara praktis untuk meluncurkannya dengan cepat sambil menunjuk layar pelaporan ke replika sehingga aplikasi transaksional inti tetap berjalan lancar.


