You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Aug 11, 2026. It is now read-only.
Base sudah punya connection pooling + work-class backpressure + circuit breaker (Issue 10.2) dan pola akses data doc 16, tetapi belum ada audit performa sistematis: index belum diverifikasi cocok dengan predikat RLS, beberapa endpoint list belum keyset-paginated, dan belum ada baseline benchmark.
Tujuan
Menemukan & memperbaiki bottleneck nyata — ukur dulu, baru optimasi.
Scope (pakai skill awcms-mini-performance)
Index RLS-aware: EXPLAIN (ANALYZE, BUFFERS) pada query tenant-scoped panas; pastikan index komposit berprefiks (tenant_id, …); tambah index yang hilang via migration berurutan (nomor setelah 015).
Hilangkan N+1: cari await tx\…`di dalam loop; batch pakai= ANY(tx.array(ids,"uuid"))atau JOIN. (Lihat pola read-side*-directory.ts`.)
Keyset pagination: ganti LIMIT tanpa cursor / OFFSET besar dengan keyset (created_at,id) — mis. decision-logs (LIMIT 50 tetap), object-queue (LIMIT 200), audit log.
Work-class: verifikasi endpoint berat (reporting, sync) tidak di kelas interactive; saturasi → 503 DATABASE_BUSY.
Materialized view / read model untuk laporan agregasi bila data tumbuh (saat ini agregasi baca langsung).
Baseline benchmark p50/p95/p99 untuk endpoint utama; catat sebelum/sesudah.
Definition of Done
EXPLAIN ANALYZE sebelum/sesudah membuktikan perbaikan (Seq→Index Scan, cost turun) untuk query yang diubah.
Tidak ada N+1 / OFFSET besar tersisa di endpoint yang tercakup.
Index baru lewat migration berurutan + test bentuk-migrasi; bun run db:pool:health sehat.
bun run check hijau. Uji beban ringan/backpressure TIDAK dijalankan pada issue ini (lihat komentar penutupan) — work-class reporting/background_sync sudah diverifikasi benar sejak Issue 10.2, tapi tidak ada load-test baru yang membuktikan antrean naik lalu mengering.
Konteks
Base sudah punya connection pooling + work-class backpressure + circuit breaker (Issue 10.2) dan pola akses data doc 16, tetapi belum ada audit performa sistematis: index belum diverifikasi cocok dengan predikat RLS, beberapa endpoint list belum keyset-paginated, dan belum ada baseline benchmark.
Tujuan
Menemukan & memperbaiki bottleneck nyata — ukur dulu, baru optimasi.
Scope (pakai skill
awcms-mini-performance)EXPLAIN (ANALYZE, BUFFERS)pada query tenant-scoped panas; pastikan index komposit berprefiks(tenant_id, …); tambah index yang hilang via migration berurutan (nomor setelah015).await tx\…`di dalam loop; batch pakai= ANY(tx.array(ids,"uuid"))atau JOIN. (Lihat pola read-side*-directory.ts`.)LIMITtanpa cursor /OFFSETbesar dengan keyset(created_at,id)— mis.decision-logs(LIMIT 50tetap), object-queue (LIMIT 200), audit log.SELECT *); pastikan bigint →Number(...).interactive; saturasi →503 DATABASE_BUSY.Definition of Done
EXPLAIN ANALYZEsebelum/sesudah membuktikan perbaikan (Seq→Index Scan, cost turun) untuk query yang diubah.OFFSETbesar tersisa di endpoint yang tercakup.bun run db:pool:healthsehat.bun run checkhijau. Uji beban ringan/backpressure TIDAK dijalankan pada issue ini (lihat komentar penutupan) — work-class reporting/background_sync sudah diverifikasi benar sejak Issue 10.2, tapi tidak ada load-test baru yang membuktikan antrean naik lalu mengering.Referensi
Doc 16 (data access, pooling), doc 07 (target performa),
docs/awcms-mini/database-pooling.md. Skill:awcms-mini-performance,awcms-mini-new-migration.