Tablespaces no PostgreSQL

Criação de tablespaces no Postgresql

Tablespaces permitem que os DBAs definam locais no sistema de arquivos no qual objeto e dados possam ser armazenados. Na instalação do PostgreSQL o próprio SGBD cria tablespaces que podemos utilizar, nesse artigo veremos como criar novas.

Uma boa aplicação do uso de tablespaces é quando acaba o espaço em disco e o mesmo não pode ser estendido, dessa forma pode ser criado uma tablespace em uma nova partição e a mesma ser referenciada na criação de novos objetos. O uso de tablespaces também se torna útil na na otimização de desempenho no qual por exemplo dados muitos utilizados pode ser armazenado em uma unidade de disco mais rápido e dados poucos utilizados podem ser armazenados em uma unidade de disco mais lenta.

Para iniciarmos a criação do tablespace primeiro precisamos definir o local no sistema de arquivo, essa localização deve ser um diretório existente vazio de propriedade do usuário postgres. Todos os objetos posteriormente criado dentro desse tablespace serão armazenado no diretório informado.

sudo mkdir -p  /mnt/ssd/ts_dados
sudo mkdir -p  /mnt/ssd/ts_indices
sudo chown -R postgres:postgres /mnt/ssd/

Após criarmos o diretório podemos dar continuidade.

sudo su postgres
psql
create TABLESPACE ts_dados LOCATION '/mnt/ssd/ts_dados';
create TABLESPACE ts_indices LOCATION '/mnt/ssd/ts_indices';

Após criarmos as tablespaces as mesmas podem ser usadas para armazenar objetos.

CREATE DATABASE vendas TABLESPACE = ts_dados;
\connect vendas
create TABLE vendas(codigo_venda int, codigo_cliente int);
create INDEX idx_venda_cliente on vendas(codigo_cliente) TABLESPACE ts_indices;
\bd+

Assim finalizamos a criação, no exemplo criamos 2 tablespaces tsdados e tsindices, depois criamos o banco de dados vendas definindo a tsdados como padrão, criamos a tabela vendas e por último criamos um índice usando a tsindices. Assim podemos ver a flexibilidade que temos com esse recurso, as tablespaces poderiam ser criadas em partições diferentes e em discos de diferentes velocidades, isso cabe ao DBA definir o melhor layout conforme sua necessidade.

Com o uso do comando \db+ podemos ver os tablespaces criados.

Postgresql - Tablespaces tablespaces

Comentários