Re: [pgbr-geral] Duvida com Vacuum Full

2014-08-20 Por tôpico Flavio Henrique Araque Gurgel

tenho uma duvida: É possivel identificar quais tabelas do banco estao
inchadas, ou seja, que sofreram muitas alteracoes e que necessitam de


https://wiki.postgresql.org/wiki/Show_database_bloat


vacuum full ?


Normalmente, nunca, mas há casos excepcionais.

[]s
Flavio Gurgel
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


[pgbr-geral] estimando tamanho da base

2014-08-20 Por tôpico Alessandro Lima
Estive analisando os tamanhos das colunas, tabelas e base e alguns valores
não batem:

1- uma tabela com 27435 registros com índice (integer 4 bytes) consome
616KB, sendo que 27435 x 4B = 107KB, esta diferença (overhead) é normal?
tem alguma fórmula matemática para calcular o tamanho de índices?

2- Somando o tamanho (informado pelo pgadmin) das colunas:
integer:,média 4B
varchar: média 14B
varchar: média 19B
varchar: média 12B

total: média 49B
27435 x 49B = 1,28MB, o pgadmin informa que a tabela (sem índices) consome
2,18MB

3- Somando todas as tabelas (incluindo toast e índices) informados pelo
próprio pgadmin, o tamanho seria de 3,1MB mas o tabanho da base completa é
de 9.56MB

Alessandro Lima

email grandegoia...@gmail.com
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] estimando tamanho da base

2014-08-20 Por tôpico Flavio Henrique Araque Gurgel

Estive analisando os tamanhos das colunas, tabelas e base e alguns
valores não batem:

1- uma tabela com 27435 registros com índice (integer 4 bytes) consome
616KB, sendo que 27435 x 4B = 107KB, esta diferença (overhead) é normal?
tem alguma fórmula matemática para calcular o tamanho de índices?


Além do tamanho dos dados em si, você tem que considerar que existem 
bytes extras de visibilidade, identificador de tuplas, entre outros.



2- Somando o tamanho (informado pelo pgadmin) das colunas:
integer:,média 4B
varchar: média 14B
varchar: média 19B
varchar: média 12B

total: média 49B
27435 x 49B = 1,28MB, o pgadmin informa que a tabela (sem índices)
consome 2,18MB


Você tem que também considerar que os dados são armazenados em páginas 
de 8 kiB (por padrão). As páginas possuem espaço vazio propositalmente e 
esse espaço é bem variável.



3- Somando todas as tabelas (incluindo toast e índices) informados pelo
próprio pgadmin, o tamanho seria de 3,1MB mas o tabanho da base completa
é de 9.56MB


Considere aqui também o inchaço. Tuplas mortas, dados que foram 
removidos ou atualizados, também ocupam espaço.


Resumindo, a conta não é direta como está fazendo. O ideal é popular uma 
tabela com alguns de seus dados e computar o espaço médio ocupado usando 
as funções apropriadas, o que o PgAdmin faz pra você e mostra na 
interface gráfica.


[]s
Flavio Gurgel
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] estimando tamanho da base

2014-08-20 Por tôpico Matheus de Oliveira
2014-08-20 8:22 GMT-03:00 Alessandro Lima grandegoia...@gmail.com:

 1- uma tabela com 27435 registros com índice (integer 4 bytes) consome
 616KB, sendo que 27435 x 4B = 107KB, esta diferença (overhead) é normal?
 tem alguma fórmula matemática para calcular o tamanho de índices?


Sim, é normal. Isso porque você está desconsiderando vários fatores.

Primeiro, as tuplas numa tabela (vamos desconsiderar índices por enquanto)
estão dispostas em páginas de 8KB, sendo que cada página possui cabeçalho
(header) e pointeiros para as páginas, algo como:

([header][ptr][ptr][ptr] ... espaço vazio ... [tupla][tupla][tupla])

Acima é possível que uma página completamente cheia ainda tenha um espaço
em branco, seja devido à nenhuma tupla+ptr caber nesse espaço ou devido ao
fill_factor (que por padrão não alteraria). Além de espaço sendo ocupados
por tuplas mortas, que serão marcadas pelo VACUUM tornando-se espaço vazio
e que só serão ocupados em novas operações de INSERT ou UPDATE.

Segundo, temos que considerar também que cada tupla possui também um
cabeçalho. O cabeçalho ocupa ao menos 27 bytes, geralmente vai ser mais
devido ao alinhamento [1] e ao bitmap de valores NULLs. Detalhes em [2].

Agora, se formos considerar índices, a coisa complica bem mais. Pensando em
B-trees temos várias sobrecargas, além dos cabeçalhos, cada valor de um nó
folha (onde estão os dados) tem um ponteiro para a tupla (cerca de 6-8
bytes se não me engano), tem também os nós intermediários (ao menos o nó
raiz existirá) e ainda o fill_factor dos índices que é menor por padrão.
Fora inchaço.


2- Somando o tamanho (informado pelo pgadmin) das colunas:
 integer:,média 4B
 varchar: média 14B
 varchar: média 19B
 varchar: média 12B
 
 total: média 49B
 27435 x 49B = 1,28MB, o pgadmin informa que a tabela (sem índices) consome
 2,18MB


Além dos overheads que comentei acima, tem mais o alinhamento de bytes
[1].

Veja também a apresentação do Bruce Monjian PostgreSQL Internals Through
Pictures, em [3].



 3- Somando todas as tabelas (incluindo toast e índices) informados pelo
 próprio pgadmin, o tamanho seria de 3,1MB mas o tabanho da base completa é
 de 9.56MB


Você considerou tabelas de catálogo? Não sei como o pgAdmin calcula isso,
então fica difícil dizer. Eu diria que as duas consultas abaixo deveriam
retornar valores bem próximos:

SELECT pg_size_pretty(sum(pg_relation_size(oid))) FROM pg_class;

SELECT pg_size_pretty(pg_database_size(current_database()));

Como deve ter notado, não são contas triviais. Na verdade não são exatas,
pois muitas coisas temos que explorar mais baixo nível para encontrar.
Algumas contribs como pageinspect e freespacemap ajudam nisso.

[1] http://en.wikipedia.org/wiki/Data_structure_alignment
[2] http://www.postgresql.org/docs/current/static/storage-page-layout.html
[3] http://www.postgresql.org/files/developer/internalpics.pdf

Atenciosamente,
-- 
Matheus de Oliveira
Analista de Banco de Dados
Dextra Sistemas - MPS.Br nível F!
www.dextra.com.br/postgres
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] estimando tamanho da base

2014-08-20 Por tôpico Alessandro Lima
Obrigado pelas explicações!!!

Atenciosamente,

Alessandro Lima

email grandegoia...@gmail.com
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


[pgbr-geral] Instalacao Postgresql via rpm CentOS

2014-08-20 Por tôpico ngonzaga
 

Ola a todos, 

Tenho um servidor CentOS 5.10 32Bits com o postgresql 9.2.1
compilado(instalado a partir dos fontes). 

Estou querendo atualizar para a versao 9.3, porem com pacotes rpm. 

Baixei, com curl, o arquivo rpm do site postgresql.org e tentei
instalar, mas aparece a mensagem: 

rpm -ivh pgdg-centos93-9.3-1.noarch.rpm 

Preparando... ### [100%] 

o pacote pgdg-centos93-9.3-1.noarch já está instalado 

Quando tento desinstalar, aparece: 

 rpm -e pgdg-centos93-9.3-1.noarch.rpm 

erro: o pacote pgdg-centos93-9.3-1.noarch.rpm não está instalado 

A ideia é instalar a 9.3 em outra porta, migrar os bancos e somente
depois de funcionar corretamente, parar a 9.2.1 

Como driblar este erro e instalar o 9.3? 

 ___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Instalacao Postgresql via rpm CentOS

2014-08-20 Por tôpico Flavio Henrique Araque Gurgel

Ola a todos,

Tenho um servidor CentOS 5.10 32Bits com o postgresql 9.2.1
compilado(instalado a partir dos fontes).

Estou querendo atualizar para a versao 9.3, porem com pacotes rpm.

Baixei, com curl, o arquivo rpm do site postgresql.org e tentei
instalar, mas aparece a mensagem:

rpm -ivh pgdg-centos93-9.3-1.noarch.rpm

Preparando... ### [100%]

o pacote pgdg-centos93-9.3-1.noarch já está instalado


Este pacote só adiciona o repositório ao CentOS.


Quando tento desinstalar, aparece:

rpm -e pgdg-centos93-9.3-1.noarch.rpm

erro: o pacote pgdg-centos93-9.3-1.noarch.rpm não está instalado


Isso é bem estranho.
Já tentou limpar o cache de pacotes do RPM e recriar a base?


A ideia é instalar a 9.3 em outra porta, migrar os bancos e somente
depois de funcionar corretamente, parar a 9.2.1


Isto é perfeitamente possível.


Como driblar este erro e instalar o 9.3?


O erro é do sistema operacional e é bem bizarro.
Está tudo atualizado?
Por que não aproveita que vai atualizar o PostgreSQL e vai pra uma 
versão mais nova do CentOS, com melhor suporte, que possa usar o yum?


[]s
Flavio Gurgel
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


[pgbr-geral] Usuário não superuser modificar um owner de um objeto

2014-08-20 Por tôpico Luiz Carlos L. Nogueira Jr.
A dúvida é a seguinte:

Tem alguma regra onde possamos dizer que um login/role (que não é
superuser)  tem direito de mudar um owner de um objeto?
Tipo GRANT CHANGE OWNER TO user/role

Atenciosamente,
Luiz Carlos
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Usuário não superuser modificar um owner de um objeto

2014-08-20 Por tôpico Luiz Carlos L. Nogueira Jr.
Complementando:

Ou que pelo menos que crie o objeto com o owner sendo o do database?
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Usuário não superuser modificar um owner de um objeto

2014-08-20 Por tôpico Matheus de Oliveira
2014-08-20 18:46 GMT-03:00 Luiz Carlos L. Nogueira Jr. 
lcnogueir...@gmail.com:

 Tem alguma regra onde possamos dizer que um login/role (que não é
 superuser)  tem direito de mudar um owner de um objeto?



Apenas o próprio proprietário ou um superusuário pode transferir a
propriedade de um objeto. Além disso o proprietário só pode transferir para
outra role que este seja membro.

Fora isso, me parece um pouco estranho você querer fazer isso. Qual seria a
razão?

Atenciosamente,
-- 
Matheus de Oliveira
Analista de Banco de Dados
Dextra Sistemas - MPS.Br nível F!
www.dextra.com.br/postgres
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Usuário não superuser modificar um owner de um objeto

2014-08-20 Por tôpico Matheus de Oliveira
On Wed, Aug 20, 2014 at 6:47 PM, Luiz Carlos L. Nogueira Jr. 
lcnogueir...@gmail.com wrote:

 Ou que pelo menos que crie o objeto com o owner sendo o do database?



Bom, se o usuário que está criando o objeto for membro do proprietário da
base é possível. Mas isso também implica que este terá as permissões deste
usuário, além de poder reverter e retomar a propriedade do objeto.

Atenciosamente,
-- 
Matheus de Oliveira
Analista de Banco de Dados
Dextra Sistemas - MPS.Br nível F!
www.dextra.com.br/postgres
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral