Small nit: the broadcast hint gets ignored once the table is over threshold, check the UI to confirm.
Noticed table bloat growing steadily and traced it to a long-running analytics transaction, open for 6+ hours, holding back autovacuum's ability to reclaim dead tuples across the whole database, not just its own table.
Small nit: the broadcast hint gets ignored once the table is over threshold, check the UI to confirm.
Prefer a staging table plus validation gate before promoting to prod tables.
Document the grain decision, most BI bugs turn out to be grain bugs.
We replaced custom sensors with data contracts and row count checks.
Set idle_in_transaction_session_timeout to 30 minutes for that role. Bloat growth flattened out within a day.
Document the grain decision, most BI bugs turn out to be grain bugs.
Set a statement_timeout or idle_in_transaction_session_timeout for the analytics role so ad-hoc long queries can't silently pin the vacuum horizon for hours.
Simple way to think about it: caching is a bet that you'll ask the same question again soon. If you don't, you're just paying rent on memory for nothing.
Document the grain decision, most BI bugs turn out to be grain bugs.
Note that merge on Delta still needs unique keys defined correctly.
Any single long-running transaction holds back autovacuum's cleanup horizon database-wide, not just for tables it touches. This is a very common source of surprise bloat.
This matches our runbook for skewed keys.
Sign in to reply.
© 2026 Lakebench, operated by Hunnurji Rao. Bengaluru, Karnataka, India.
No cluster. No install. Just the tab.