segunda-feira, 3 de agosto de 2015

Atualização PgBouncer 1.6

Dia 01 de Agosto saiu uma nova atualização para o PgBouncer a versão é a 1.6.

Novos Recursos na versão 1.6:

  • Carrega o hash de senha do usuário do banco de dados Postgres.
  • O tipo de Pool pode ser configurado tanto por banco de dados e por usuário.
  • O limite de conexão pode ser definido per-database e per-user: max_db_connections e max_user_connections.
  • Novo comando para impedir novas conexões: DISABLE/ENABLE.
  • Novo backend DNS preferencial : c- ares.
  • Arquivos de configuração têm '%include FILENAME' diretiva para permitir a configuração divida em vários arquivos.

Informações extraídas do site oficial do projeto Pgbouncer.

Quantas vezes uma Function foi executada?

Se alguém te perguntar quantas vezes uma função foi executada você vai saber dizer? e ainda qual é o tempo de execução?
Bom eu já passei por essa situação e não soube responder de imediato mas eu sabia que poderia confiar no Elefante, então eu fui estudar o manual e encontrei as respostas.

O PostgreSQL recolhe esse tipo informação mais com uma condição precisa estar ativado um parâmetro no postgresql.conf o parâmetro é o "track_functions", esse parâmetro tem três opções por padrão ele vem como "none" o que quer dizer que esta desativado, tem a opção "pl" que vai logar somente funções do tipo procedural e ainda tem a opção "all" que vai logar o que a opção "pl" loga e também funções em linguagem C. Bom seja qual for a opção que você fez você deve dar um reload no banco para ativar suas configurações, então vamos colocar a mão na massa.

Verificando a situação configuração.

# psql -U postgres -p 5432

postgres=# show track_functions;
 track_functions
-----------------
 none
(1 row)


Esta desativado, então vou setar para all diretamente no postgresql.conf ficando assim:

track_functions = all       # none, pl, all

Reload no banco para ele assumir a nova configuração:

# service postgresql reload

Vamos ver como ficou o parâmetro agora

# psql -U postgres -p 5432

postgres=# show track_functions;
 track_functions
-----------------
 all
(1 row)


Pronto parâmetro ativo e com a opção "all", como vou obter as informações que estão sendo coletado pelo PostgreSQL?

O select é bem simples:

# psql -U postgres -p 5432


database1=# select * from pg_stat_user_functions;
funcid|schemaname|funcname|calls|total_time|self_time 
------+----------+--------+-----+----------+-----------
13972 | public   | vali   |   8 |    1.183 |   1.183



Essa dica ajuda bastante!

Fonte postgresql.org

quinta-feira, 30 de julho de 2015

PgBouncer


PgBouncer? O que é? Pra que serve?

O bouncer é um agrupador de conexões para o PostgreSQL.
Qualquer aplicação de destino pode ser ligado ao pgbouncer como se fosse um servidor PostgreSQL , e pgbouncer vai criar uma ligação ao servidor real , ou vai reutilizar uma das suas ligações existentes.

Além disso, ele tem três diferentes modos de pool:

pool por sessão (Session pooling)

    Método mais educado ou gentil. Quando o cliente se conecta, a conexão com o servidor será atribuída a ele enquanto dure toda a conexão do cliente. Quando o cliente se desconectar, a conexão do servidor será colocada de volta como disponível no pool. Este é o método padrão.

pool por transação (Transaction pooling)

    A conexão com o servidor é atribuída ao cliente apenas durante uma transação. Quando o PgBouncer percebe que transação acabou, a conexão do servidor será colocada de volta como disponível no pool.

Pool por declaração ou comando (Statement pooling)

    Método mais agressivo. A conexão com o servidor será colocada de volta como disponível ao pool imediatamente após o fim da consulta. Transações com várias instruções não são permitidas neste modo.

Vantagem de se utilizar o pgBouncer?

Em ambientes com muitas conexões e muitos usuários ele ajuda a reduzir o impacto de performance causado pela abertura de novas conexões.

1) Instalação exemplo no CentOS:

# yum install pgbouncer

Ou Compilando

# wget http://pgfoundry.org/frs/download.php/3393/pgbouncer-1.5.4.tar.gz
# tar -zxvf pgbouncer-1.5.4.tar.gz
# cd pgbouncer-1.5.4
# ./configure
# make
# make install


2) Para o funcionamento ele precisa de dois arquivos um é pgbouncer.ini para configuração e um outro para os usuarios eu normalmente uso o nome pgbouncer-users.txt

2.1) pgbouncer.ini Exemplo:

[databases]
Minha_Database = host=127.0.0.1 port=5432 dbname=Minha_Database
Minha_Database1 = host=127.0.0.1 port=5432 dbname=Minha_Database1
Minha_Database2 = host=127.0.0.1 port=5432 dbname=Minha_Database2

[pgbouncer]
listen_port = 6432
listen_addr = 127.0.0.1
auth_type = md5
auth_file = pgbouncer-users.txt
logfile = pgbouncer.log
pidfile = pgbouncer.pid
admin_users = dba



2.2) pgbouncer-users.txt Exemplo:

"usuario1" "senha_usuario1"
"usuario2" "senha_usuario2"
"usuario3" "senha_usuario3"
"usuario4" "senha_usuario4"



3) Executando o pgbouncer:

# pgbouncer -d pgbouncer.ini

4) Para testar se esta conectando ao banco via pgbouncer use a porta que o pgbouncer esta escutando "listen_port"

# psql -U usuario1 -p 6432 -d Minha_Database

Se conectou quer dizer que o pgbouncer esta funcionando, bom ele ainda tem varias outras funcionalidades e comandos internos que podem ser executados para isso você pode ler o manual do pgbouncer clicando AQUI.

Existem outras ferramentas que fazem a mesma tarefa que pgbouncer um exemplo é o Pgpool mais em minha opinião o pgbouncer em questão de facilidade e reaproveitamento de conexões é o melhor pelo menos até o momento.

segunda-feira, 27 de julho de 2015

Bases de Exemplo para PostgreSQL

Base de Exemplo ou Dbsamples for PostgreSQL

Sempre alguém me questiona onde pode se encontrar bases de exemplo, com tabelas e dados para fazer algum teste ou ainda para uso didático para o postgres.

Já a algum tempo encontrei no site do postgres uma relação com varias bases de exemplo, entre elas a Pagila que me acompanhou quando ainda engatinhava no mundo de banco de dados.

A database Pagila é uma Locadora de Vídeo, sua estrutura é composta de:

-> 15 Tabelas
-> 1   Trigger
-> 7   Views
-> 8   Funções
-> 1   Dominio
-> 13 Sequences


No site do postgresql você vai encontrar outras bases de exemplo.


sexta-feira, 10 de julho de 2015

pgBadger e não mais pgFouine, Conheça o mais novo log Analyzer do PostgreSQL


PgBadger - a PostgreSQL log Analyzer


Pgbadger


Minha primeira postagem foi sobre o uso do pgFouine, então desse tempo para cá o pgFouine já se tornou um projeto obsoleto, mais não fique triste pois não estamos desamparados, agora temos o pgBadger ele também é um log analyser com uma configuração simples e com relatórios de layout bonito e prático.

Bom como ele é um log analyser para seu relatório ficar o mais completo possível o nível de log do PostreSQL deve estar alto ou seja quanto mais você logar mais completo será seu relatório. 

Não vou entrar no mérito se você deve colocar a gravação de log em outro disco, se a quantidade e o tamanho desses arquivos de logs acumulados diariamente é muito grande (sim é muito), irei tratar esses assuntos em outras postagens.

Agora vamos as configurações de log do postgres.conf:



log_destination = 'stderr'
logging_collector = on
log_directory = 'pg_log' 
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
log_truncate_on_rotation = on 
log_rotation_age = 1d
log_rotation_size = 100MB
client_min_messages = notice
log_min_messages = info
log_min_error_statement = info
log_min_duration_statement = 0 
log_checkpoints = on
log_connections = on
log_disconnections = on
log_duration = on
log_error_verbosity = verbose
log_line_prefix = '%t [%p]: [%l-1] user=%u,db=%d '
log_lock_waits = on 
log_statement = 'ddl'
log_temp_files = 1 


Instalação do pgBadger no CentOS :


[root@localhost ~]# yum install pgbadger


Comando para gerar o relatorio:


[root@localhost pg_log]# pgbadger -q -f stederr  -j 2 -x html  postgresql-2015-07-07_175436.log -o relatorio.html







Bom... não custa avisar, faça sempre em um banco de teste e  faça por sua conta e risco.
Não é por que eu passei essas configurações que elas vão servir para você, essas configurações estão em um ambiente monitorado, então talvez para seu cenário precise de adequações.



Retorno ao Blog!

Olá,

Depois de quase 3 anos estou reativando o blog.

Por quê? hummm... boa pergunta depois de quase 3 anos provavelmente não sou mais um DBA baby como me auto denominava, mais ainda estou aprendendo coisas novas todos os dias.

Não tenho o dom de me expressar tão bem quanto o Fábio Telles com o Save Point que com certeza é alguém que tem minha admiração, por isso não vou me estender de mais com motivos e textos bonitos(Como já dito não sei fazer isso). :(

Então com isso vou voltar a postar dicas, ferramentas e duvidas recorrentes até para minha própria pesquisa posterior.

Então VAMOS LÁ!!!

quarta-feira, 5 de setembro de 2012

Install Pgbench

O que é Pgbench?

O Pgbench é uma contrib do Postgres.

O que ele faz?

Ele serve para fazer testes de carga em seu banco Postgres, é muito útil para você analisar a performance do seu banco.

Para Instalar entre na pasta onde esta o Postgres.

# cd /programas/postgresql-9.1.4/contrib/

Encontre na pasta contrib o Pgbench, entre na pasta e instale.

# cd pgbench/
# make install

Com o Pgbench já instalado vamos criar uma base de dados para executarmos os testes 

# CREATE DATABASE pgbench;

Para criar as estruturas na database que você criou:

# pgbench -i -s 10 pgbench -U postgres

Agora vamos aos testes:

# pgbench -c 50 -t 10 pgbench -U postgres -n

 
-c  é o numero de clientes conectados.

-t  é número de transações por cliente.

-n não executar autovacuum para iniciar as transações

Agora é usar a imaginação e necessidade para utilizar o Pgbench de forma que possa ser útil para você.