From: | Jerry Sievers <gsievers19(at)comcast(dot)net> |
---|---|
To: | Mariel Cherkassky <mariel(dot)cherkassky(at)gmail(dot)com> |
Cc: | pgsql-performance(at)postgresql(dot)org |
Subject: | Re: postgresql 9.6 data directory fs becomes full |
Date: | 2017-09-11 17:07:56 |
Message-ID: | 87bmmhnoyb.fsf@jsievers.enova.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-performance |
Mariel Cherkassky <mariel(dot)cherkassky(at)gmail(dot)com> writes:
> I want to check something regarding postgresql performance during my
> app is running.
>
> My app does the next things on 20 tables in a loop :
>
> 1.truncate table.
> 2.drop constraints on table
> 3.drop indexes on table
> 4.insert into local_table select * from remote_oracle_table
> 4.1.Recently I'm getting an error in this part : SQLERRM = could not extend
> file "base/16400/124810.23": wrote only 4096 of 8192 bytes at block
> 3092001
> 5.create constraints on table
> 6.create indexes on table.
>
> This operation runs every night. Most of the tables are small 500M-2G
> but few tables are pretty big 24G-45G.
>
> My wals and my data directory are on different fs. My data directory
> fs size is 400G. During this operation the data directory fs becomes
> full. However, after this operation 100G are freed which means that
> 300G are used from the 400g of the data directory fs. Something
> regarding those sizes doesnt seems ok.
>
> When I check my database size :
>
> mydb=# SELECT
> mydb-# pg_database.datname,
> mydb-# pg_size_pretty(pg_database_size(pg_database.datname)) AS size
> mydb-# FROM pg_database;
> datname | size
> -----------+---------
> template0 | 7265 kB
> mydb | 246 GB
> postgres | 568 MB
> template1 | 7865 kB
> (4 rows)
>
> When I check all the tables in mydb database :
>
> mydb-# relname as "Table",
> mydb-# pg_size_pretty(pg_total_relation_size(relid)) As "Size",
> mydb-# pg_size_pretty(pg_total_relation_size(relid) -
> pg_relation_size(relid)) as "External Size"
> mydb-# FROM pg_catalog.pg_statio_user_tables ORDER BY
> pg_total_relation_size(relid) DESC;
> Table | Size | External Size
> -------------------+------------+---------------
> table 1| 45 GB | 13 GB
> table 2| 15 GB | 6330 MB
> table 3| 9506 MB | 3800 MB
> table 4| 7473 MB | 1838 MB
> table 5| 7267 MB | 2652 MB
> table 6| 5347 MB | 1701 MB
> table 7| 3402 MB | 1377 MB
> table 8| 3092 MB | 1318 MB
> table 9| 2145 MB | 724 MB
> table 10| 1804 MB | 381 MB
> table 11 293 MB | 83 MB
> table 12| 268 MB | 103 MB
> table 13| 225 MB | 108 MB
> table 14| 217 MB | 40 MB
> table 15| 172 MB | 47 MB
> table 16| 134 MB | 36 MB
> table 17| 102 MB | 27 MB
> table 18| 86 MB | 22 MB
> .....
>
> In the data directory the base directory`s size is 240G. I have 16G
> of ram in my machine.
>
> Waiting for help, thanks.
You didn't say but if I can assume you're doing this work in a
transaction...
You understand that space is *not* freed by the truncate until commit, right?
>
>
>
--
Jerry Sievers
Postgres DBA/Development Consulting
e: postgres(dot)consulting(at)comcast(dot)net
p: 312.241.7800
From | Date | Subject | |
---|---|---|---|
Next Message | Mike Broers | 2017-09-13 20:28:18 | query of partitioned object doesnt use index in qa |
Previous Message | Tom Lane | 2017-09-11 12:02:28 | Re: postgresql 9.6 data directory fs becomes full |