Estou confuso sobre tablespaces no PostgreSQL. É algo como LVM? Quero dizer, quando o disco está ficando cheio, podemos adicionar outro disco, formatar e depois CREATE TABLESPACE tblspace LOCATION /media/disk2/data
? É o suficiente? Ou devemos manualmente ALTER
bancos de dados, tabelas ou índices para tirar proveito disso?
relate perguntas
-
Posso ativar o PITR depois que o banco de dados foi usado
-
Práticas recomendadas para executar a replicação atrasada do deslocamento de tempo
-
Os procedimentos armazenados impedem a injeção de SQL?
-
Sequências Biológicas do UniProt no PostgreSQL
-
Qual é a diferença entre a replicação do PostgreSQL 9.0 e o Slony-I?
Historicamente, o PostgreSQL armazenava tabelas e índices em arquivos individuais. Tablespaces são um meio de colocar várias tabelas/índices em um único arquivo ou grupo de arquivos relacionados no mesmo diretório. Outros sistemas de gerenciamento de banco de dados usam técnicas semelhantes, embora possam armazenar vários objetos em um arquivo. No PostgreSQL, um espaço de tabela é implementado como um diretório no qual os arquivos individuais são colocados, mas os arquivos ainda são um por objeto de banco de dados.
Uma tabela deve residir em um único tablespace, a menos que seja particionada, caso em que cada partição deve residir em um determinado tablespace. Em algumas plataformas de DBMS, você pode adicionar arquivos a um espaço de tabela conforme sugerido, embora no caso do PostgreSQL um espaço de tabela seja essencialmente apenas um diretório para agrupar arquivos. Em sistemas onde isso é possível, pode resultar em desempenho de E/S abaixo do ideal, pois os discos individuais podem conter pontos de acesso de E/S. Provavelmente, seria melhor configurar vários discos em um volume RAID e colocar o tablespace nele.
Dependendo de sua carga de trabalho, você pode configurar volumes de disco individuais com tablespaces em cada volume e distribuir partes de seu banco de dados pelos diferentes volumes. O caso mais trivial é separar os logs do banco de dados em um volume separado, mas você pode distribuir dados em vários volumes por vários motivos.
EDIT: Aqui está um link nos tablespaces do PostgreSQL.
Não, isso não é suficiente - é verdade que se "a partição ou volume em que o cluster foi inicializado ficar sem espaço e não puder ser estendida, um tablespace pode ser criado em uma partição diferente e usado até que o sistema possa ser reconfigurado. " , mas os objetos atuais não se espalharão automaticamente para o novo tablespace no sentido que você quis dizer ao se referir ao LVM - eles precisam ser movidos, por exemplo, com
alter table
:A documentação completa para tablespaces pode ser encontrada aqui e detalha qual é a sua finalidade, incluindo a citação acima sobre ficar sem espaço e, por exemplo: