PostgreSQL básico – Testado e pronto para ser usado

Características

PostgreSQL é um SGBD (Sistema Gerenciador de Banco de Dados) objeto-relacional de código aberto, com mais de 15 anos de desenvolvimento. É extremamente robusto e confiável, além de ser extremamente flexível e rico em recursos.Suas características são:

  • Tamanho máximo do banco de dados: ilimitado;
  • Tamanho máximo da tabela: 32 TB;
  • Tamanho máximo de linha: 1.6 TB;
  • Tamanho máximo de campos: 1 GB;
  • Máximo de linhas por tabela: ilimitado;
  • Colunas máximas por tabela: 250~1600 dependendo do tipo da coluna;
  • Os índices máximos por tabela são ilimitados.

Possui recursos como:

  • Consultas complexas;
  • Chaves estrangeiras;
  • Integridade transacional;
  • Controle de concorrência multi-versão;
  • Suporte ao modelo híbrido objeto-relacional;
  • Ele tem facilidade de acesso;
  • Gatilhos;
  • Visões;
  • Linguagem procedural em várias linguagens (PL/pgSQL, PL/Python, PL/Java, PL/Perl);
  • Indexação por texto;
  • Estrutura para guardar dados Georeferenciados PostGIS.
Instalando

Para instalar no CentOS Linux:Eu recomendo as versões que possuem instalação gráfica por já virem com quase tudo semi-configurado. No meu caso, optei por baixar do site a seguinte versão:

$ wget http://get.enterprisedb.com/postgresql/postgresql-8.3.23-3-linux-x64.run
$ chmod +x postgresql-8.3.23-3-linux-x64.run
# ./postgresql-8.3.23-3-linux-x64.run

Porém existem outras maneiras de instalar… Você pode optar em fazer a instalação como abaixo.

Baixe a versão desejada em:

Instale utilizando:

$ ./configure
$ make
# make install

Após instalado, faça os seguintes procedimentos…

Adicione um grupo:

# groupadd postgres

Adicione um usuário:

# useradd -g postgres -d /usr/local/pgsql postgres

Crie a pasta data:

# mkdir /usr/local/pgsql/data

Troque o dono da pasta:

# chown postgres:postgres /usr/local/pgsql/data

Crie uma senha para o usuário postgres:

# passwd postgres

Acesse com o usuário postgres no sistema:

# su – postgres

Faça os seguintes comandos:

$ /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
$ /usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data >logfile 2>&1 &
$ /usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data start
$ /usr/local/pgsql/bin/createdb test
$ /usr/local/pgsql/bin/psql test

Ou você pode instalar a versão mais recente do Postgres com o comando:

# yum install postgresql-server

Após instalado, vamos configurar…

Primeiramente vamos configurar o arquivo pg_hba.conf localizado em: /opt/Postgres/versão/data

Encontre as linhas:

# “local” is for Unix domain socket connections only
local   all         all                                      trust
# IPv4 local connections:
host    all         all         127.0.0.1/32          trust
host    all     all             IP_DE_ACESSO     trust
# IPv6 local connections:
host    all         all         ::1/128                 trust

E troque a palavra “md5” por “host”, como no exemplo acima e adicione os IPs de acesso.

Salve o arquivo e saia.

Agora vamos configurar o arquivo postgresql.conf que está na mesma pasta do arquivo anterior.

Encontre as linhas abaixo e modifique-as para que fiquem iguais ao exemplo:

listen_addresses = ‘*’
port = 5432
max_connections = 100
shared_buffers = 32MB
max_fsm_pages = 204800
log_destination = ‘stderr’
logging_collector = on
log_line_prefix = ‘%t ‘
datestyle = ‘iso, mdy’
lc_messages = ‘C’
lc_monetary = ‘C’
lc_time = ‘C’
default_text_search_config = ‘pg_catalog.english’

Agora, com tudo já configurado, reinicie o Postgres:

# /etc/init.d/postgresql restart

Manuseio do banco

Na pasta bin onde está instalado seu banco… No meu caso:$ ls /opt/Postgres/8.3/bin/
clusterdb
createuser
dropuser
ipcclean
pg_config
pg_dump
pg_restore
pltcl_listmod
postmaster
vacuumdb
createdb
dropdb
ecpg
oid2name
pg_controldata
pg_dumpall
pg_standby
pltcl_loadmod
psql
vacuumlo
createlang
droplang
initdb
pgbench
pg_ctl
pg_resetxlog
pltcl_delmod
postgres
reindexdbCada arquivo acima é responsável por algo, veremos os principais no decorrer da leitura…1. Criar um banco de dados:# ./createdb nome_do_banco -U postgres2. Visualizar o banco criado:# ./psql -U postgres -l3. Excluir o banco criado:# ./dropdb nome_do_banco -U postgres

4. Acessar o banco criado através do terminal interativo de gerenciamento do PostgreSQL (psql):

# ./psql banco -U postgres

Welcome to psql 8.3.23, the PostgreSQL interactive terminal.
    Type:  \copyright for distribution terms
           \h for help with SQL commands
           \? for help with psql commands
           \g or terminate with semicolon to execute query
           \q to quit
    Cannot read termcap database;
    using dumb terminal settings.
    IVAI13=#

Vamos executar alguns comandos do psql e algumas consultas.

  • \l — Lista bancos, donos e codificação
  • \d — Descreve tabelas, índices, sequências ou views (visão)
  • \du — Lista usuários e permissões
  • \dg — Lista grupos
  • \dp — Lista privilégios de acesso à tabelas, views (visões) e sequências
  • SELECT version();

5. Consultas básicas em SQL:

SELECT — selecionar registros de tabelas

Sintaxe resumida:

SELECT * FROM tabela; — Retorna todos os registros da tabela com todos os campos

6. Atualizar uma tabela:

UPDATE tabela SET coluna = { expressão | DEFAULT } [, …]
UPDATE produtos SET quantidade = quantidade + 1;
 — Todos os registros de clientes serão atualizados

7. Deletando tabelas:

DELETE FROM tabela; — Cuidado, este comando excluirá todos os registros da tabela

Ajuda sobre os comandos:

nome_comando –help

pg_dump pg_restore e psql

Imagine que nós criamos um banco… e com informações gravadas. Agora vamos criar um backup dele.Obs.: certifique-se de estar na pasta bin do postgres.

# ./pg_dump -Fc -h IP_D0_SERVIDOR -U postgres BANCO_PARA_BACKUP > /backup.backup

Sendo:

  • pgdump – script que gera backup.
  • -F – formato da saída. O formato pode ser um dos seguintes:
    • p – exporta um script SQL para um arquivo texto-puro (padrão).
    • t – exporta um arquivo tar adequado para servir de entrada para o pg_restore. Usando este formato de exportação pode-se reordenar e/ou excluir elementos do esquema durante a restauração do banco de dados. Também é possível limitar quais dados serão importados durante a restauração.
    • c – exporta um arquivo personalizado apropriado para servir de entrada para o pg_restore. Este é o formato mais flexível porque permite a reordenação da importação dos dados, assim como dos elementos do esquema. Este formato também é comprimido por padrão.
  • -h – host
  • -U – usuário

Agora com este backup criado, vamos restaurar o banco de dados.

Para restaurar existem alguns parâmetros… vejamos.

Caso seu backup foi criado com a opção “-Fp”, precisamos restaurar por psql:

# ./psql -U usuario -d banco < “/banco.sql”

Caso seu banco foi criado usando parâmetro “-Fc”, podemos utilizar o pg_restore:

# ./pg_restore -U postgres -d banco /backup.backup

Otimizando o PostgreSQL

Vou mostrar cada opção válida no arquivo apresentado abaixo.# vim /opt/Postgres/versão/data postgresql.conf

Procure as seguintes linhas:

shared_buffers = 32MB # Uma boa configuração seria entre 8% a 12% do total de RAM do servidor.work_mem = 2048 # Este parâmetro configura o tamanho em KBytes utilizado no servidor para cada conexão efetivada ao SGBD (Configura 2 MBytes de RAM do servidor para operações de ORDER BY, CREATE INDEX e JOIN disponíveis para cada conexão ao banco.)

maintenance_work_mem = 16384 # O total de memória configurada neste parâmetro é utilizado somente durante as operações de manutenção do banco (como VACUUM e REINDEX), sendo liberada durante o seu uso normal. Se o seu processo de VACUUM está muito custoso, tente aumentar o valor deste parâmetro.

max_fsm_pages = 120000 # Realiza a procura por até 120.000 páginas sujas na limpeza pelo VACUUM utilizando cerca de 71 Kb de RAM para isto.

wal_buffers = 64 # Seta para 512 KBytes a memória destinada ao buffer de escrita no WAL.

effective_cache_size = 32768 # Seta o cache de dados do PostgreSQL para 256 MBytes de RAM.

random_page_cost = 2 # Diminui o tempo para seleção aleatória de páginas do otimizador de consultas.

Fonte: Otimizando bancos PostgreSQL – Parte 01

Desmarque as linhas abaixo para inicializar o autovacuum:

#autovacuum = on#log_autovacuum_min_duration = -1
#autovacuum_max_workers = 3
#autovacuum_naptime = 1min
#autovacuum_vacuum_threshold = 50#autovacuum_analyze_threshold = 50
#autovacuum_vacuum_scale_factor = 0.2
#autovacuum_analyze_scale_factor = 0.1
#autovacuum_freeze_max_age = 200000000
#autovacuum_vacuum_cost_delay = 20
# autovacuum, -1 means use
# vacuum_cost_delay
#autovacuum_vacuum_cost_limit = -1

 

Rolar para cima