PostgreSQL "tamanho dos arquivos temporários"

12

Importei dados para um novo banco de dados (cerca de 600m linhas de carimbo de data / hora, inteiro, duplo). Criei alguns índices e tentei alterar algumas colunas (resolvi alguns problemas de espaço), o banco de dados foi aspirado.

Agora, o pgAdmin III me diz que o " Tamanho dos arquivos temporários " é 50G ~ +.

  1. O que são esses arquivos temporários? são como o log de transações do SQL Server?
  2. Como posso me livrar deles, parece que o banco de dados é muito maior do que deveria (o tamanho total do banco de dados é de 91 GB)

Usando o Posgres 9.4.1 em um servidor Windows 2012.

Uma captura de tela da guia de estatísticas do banco de dados:

Uma captura de tela da guia de estatísticas do banco de dados

Ofiris
fonte
O que o valor da coluna "tamanho dos arquivos temporários" representa?
Ofiris 16/08/2015

Respostas:

12

Não encontrei nada na documentação do pgAdmin, mas o código-fonte revela a consulta por trás dessas entradas (adicionada ao Postgres 9.2+):

Tudo se resume a:

SELECT temp_files AS "Temporary files"
     , temp_bytes AS "Size of temporary files"
FROM   pg_stat_database db;

E o manualpg_stat_database do Postgres tem detalhes para :

tmp_files bigint Número de arquivos temporários criados por consultas neste banco de dados. Todos os arquivos temporários são contados, independentemente do motivo pelo qual o arquivo temporário foi criado (por exemplo, classificação ou hash) e independentemente da configuração log_temp_files .

temp_bytes bigint Quantidade total de dados gravados em arquivos temporários por consultas neste banco de dados. Todos os arquivos temporários são contados, independentemente do motivo pelo qual o arquivo temporário foi criado e da configuração log_temp_files .

Observe que esses valores não contribuem para o tamanho do seu banco de dados. Mas eles indicam que sua configuração work_mempode ser muito baixa, de modo que muitas operações de classificação são derramadas no disco (o que é muito lento em comparação com apenas a RAM).

Palavras-chave:

Para realmente compactar o tamanho do seu banco de dados:

Para medir o tamanho:

Além disso: o WAL (Write Ahead Log) seria equivalente no Postgres para o log de transações no SQL Server. Boa explicação nesta resposta relacionada ao SO:

Erwin Brandstetter
fonte
10

De acordo com:

http://www.postgresql.org/message-id/[email protected]

O contador temporário (arquivos e espaço usado) mostra um total de todos os arquivos temporários usados, provavelmente desde a criação do cluster. Não reflete o espaço atual usado pelos arquivos temporários.

Meu sistema, por exemplo, mostra quase 700 GB de arquivos temporários usados, mas o espaço real ocupado por arquivos temporários em /var/lib/pgsql/9.3/data/base/pgsql_tmp é de apenas 53 MB atualmente.

Eduard Rozenberg
fonte