Tenho tentado tornar nossos clientes de banco de dados pró-ativos sobre não preencher a partição na qual reside o banco de dados que estão usando.
Como todos os nossos clientes estão no mesmo host que o gerenciador de banco de dados, deve ser fácil o suficiente para tablespaces criados pelo usuário; o cliente pode procurar o caminho do sistema de arquivos para o espaço de tabela (em spclocation) e usar chamadas do sistema operacional para verificar quanto espaço disponível está disponível:
adb=> select * from pg_tablespace;
spcname | spcowner | spclocation | spcacl
------------+----------+-------------------+---------------------
pg_default | 10 | |
pg_global | 10 | |
adb | 2033793 | /database/adb | {adb=C/adb}
Não consigo ver como, do cliente, obter o caminho para onde o tablespace global está armazenado; uma string vazia é retornada para ele na consulta acima.
Infelizmente, temos muitos sistemas legados no campo usando um banco de dados específico criado no tablespace global, e seria um esforço monumental transferi-lo para um tablespace criado pelo usuário.
Espero que eu esteja perdendo algo realmente simples.
pg_default
epg_global
os locais são "codificados".pg_default
mora em:e
pg_global
mora em:src/backend/commands/tablespace.c
diz assim:Observe também que expor a localização do diretório de dados é uma falha de segurança - não tão terrível, mas ainda assim.
O PostgreSQL cria
pg_default
epg_global
quando você cria um cluster, talvez usandoinitdb
diretamente. Oinitdb
utilitário pode receber um argumento que define o diretório de dados, mas nenhum argumento sobre onde colocar opg_default
epg_global tablespaces
.Eu concluiria que eles sempre são criados no diretório de dados. Eu poderia facilmente estar errado sobre isso. Eu não acho que eles podem ser movidos. Eu posso estar errado sobre isso também.
Mas se estou certo até este ponto, você pode derivar sua localização física por
É
pg_global tablespace
quase certo que é o subdiretório "global";pg_default
provavelmente também é.Se eu tivesse tempo, leria o código-fonte . Isso eliminaria todas as dúvidas.