Create A Temp Table (if Not Exists) For Use Into A Custom Procedure


Answer :

DROP Table each time before creating TEMP table as below:



BEGIN
DROP TABLE IF EXISTS temp_table1;
create temp table temp_table1
-- Your rest Code comes here


The problem of temp tables is that dropping and recreating temp table bloats pg_attribute heavily and therefore one sunny morning you will find db performance dead, and pg_attribute 200+ gb while your db would be like 10gb.



So we're very heavy on temp tables having >500 rps and async i\o via nodejs and thus experienced a very heavy bloating of pg_attribute because of that. All you are left with is a very aggressive vacuuming which halts performance.
All answers given here do not solve this, because they all bloat pg_attribute heavily.



So the solution is elegantly this



create temp table if not exists my_temp_table (description) on commit delete rows;


So you go on playing with temp tables and save your pg_attribute.



You want to DROP term table after commit (not DELETE ROWS), so:



begin
create temp table temp_table1
on commit drop
...


Documentation



Comments

Popular posts from this blog

Converting A String To Int In Groovy

"Cannot Create Cache Directory /home//.composer/cache/repo/https---packagist.org/, Or Directory Is Not Writable. Proceeding Without Cache"

Android SDK Location Should Not Contain Whitespace, As This Cause Problems With NDK Tools