10. Dicas

D001. Constantes de outros tipos que não os valores numéricos podem ser representados por uma das seguintes formas:

type 'string'
'string'::type
CAST ( 'string' AS type )

D002. Para aumentar a quantdade de memória RAM utilizada na criação de índices, faça:

Consulte o valor atual do parâmetro maintenance_work_mem:

SHOW maintenance_work_mem;

Para aumentar esse valor, digamos para 4GB , e garantir que esse valor seja mantido mesmo após reinicializações do servidor, faça:

ALTER SYSTEM SET maintenance_work_mem TO '4GB';

Para que o servidor passe a usar esse valor em todas as conexões abertas, podemos utilizar o comando pg_reload_conf:

SELECT pg_reload_conf();

D003. Para forçar que uma consulta sempre utilize um índice existente em seu processamento, defina a variável ENABLE_SEQSCAN como OFF:

SET ENABLE_SEQSCAN TO OFF;

Para que o otimizador de consultas possa optar por uma busca sequencial novamente, faça:

SET ENABLE_SEQSCAN TO ON;

D004. Para verificar o número de tuplas e páginas usadas por uma tabela e seus índices faça:

SELECT relname, relkind, reltuples, relpages
  FROM pg_class
 WHERE relname LIKE 'focos%';

D005. Para saber o volume de dados ocupado por uma tabela, seus índices e arquivos auxiliares (TOAST), use os seguintes comandos:

  • pg_table_size ('nome-tabela'): Computa o espaço em disco usado pela tabela, isto é, por seus dados, pelo arquivo auxiliar TOAST, o free space map e o visibility map. O valor retornado exclui o volume usado por índices. Esse comando também aceita que o argumento seja o nome de um índice.

  • pg_indexes_size ('nome-tabela'): Computa o espaço em disco usado pelos índices de uma tabela.

  • pg_total_relation_size ('nome-tabela'): Computa o espaço total usado por uma tabela incluindo seus indices.

Exemplo de uso:

SELECT pg_size_pretty( pg_table_size('pts') ) AS volume_tabela,
       pg_size_pretty( pg_table_size('pts_x_y_idx') ) AS volume_indice_x_y,
       pg_size_pretty( pg_indexes_size('pts') ) AS volume_indices,
       pg_size_pretty( pg_total_relation_size('pts') ) AS volume_total_tabela;