patternsqlMajor
PostgreSQL "size of temporary files"
Viewed 0 times
postgresqlsizefilestemporary
Problem
I've imported data into a new database (about 600m rows of timestamp, integer, double).
I then created some indexes and tried to alter some columns (got some out of space issues), the database is vacuumed.
Now pgAdmin III tells me that the "Size of temporary files" is 50G~+.
Using Posgres 9.4.1 on a Windows 2012 server.
A screenshot of the database statistics tab:
I then created some indexes and tried to alter some columns (got some out of space issues), the database is vacuumed.
Now pgAdmin III tells me that the "Size of temporary files" is 50G~+.
- What are these temporary files? are these like SQL Server transaction log?
- How can I get rid of them, it seems the database is much bigger than it should (the total size of the database is 91 GB)
Using Posgres 9.4.1 on a Windows 2012 server.
A screenshot of the database statistics tab:
Solution
I found nothing in the pgAdmin documentation, but the source code reveals the query behind these entries (added for Postgres 9.2+):
It boils down to:
And the Postgres manual has details for
this database. All temporary files are counted, regardless of why the
temporary file was created (e.g., sorting or hashing), and regardless
of the log_temp_files setting.
by queries in this database. All temporary files are counted,
regardless of why the temporary file was created, and regardless of
the log_temp_files setting.
Note that these values do not contribute to the size of your database. But they indicate that your setting for
Related:
To actually compact the size of your database:
To measure size:
Aside: WAL (Write Ahead Log) would be equivalent in Postgres for the transaction log in SQL Server. Nice explanation in this related answer on SO:
It boils down to:
SELECT temp_files AS "Temporary files"
, temp_bytes AS "Size of temporary files"
FROM pg_stat_database db;And the Postgres manual has details for
pg_stat_database:tmp_files bigint Number of temporary files created by queries inthis database. All temporary files are counted, regardless of why the
temporary file was created (e.g., sorting or hashing), and regardless
of the log_temp_files setting.
temp_bytes bigint Total amount of data written to temporary filesby queries in this database. All temporary files are counted,
regardless of why the temporary file was created, and regardless of
the log_temp_files setting.
Note that these values do not contribute to the size of your database. But they indicate that your setting for
work_mem may be too low, so that many sort operations spill to disk (which is very slow as compared to just RAM).Related:
- Optimize simple query using ORDER BY date and text
To actually compact the size of your database:
- VACUUM returning disk space to operating system
To measure size:
- Measure the size of a PostgreSQL table row
Aside: WAL (Write Ahead Log) would be equivalent in Postgres for the transaction log in SQL Server. Nice explanation in this related answer on SO:
- Why do SQL databases use a write-ahead log over a command log?
Code Snippets
SELECT temp_files AS "Temporary files"
, temp_bytes AS "Size of temporary files"
FROM pg_stat_database db;Context
StackExchange Database Administrators Q#111187, answer score: 27
Revisions (0)
No revisions yet.