[firebase-br] Ainda sobre SWEEP (Firebird) e VACUUM (PostgreSQL)
Walter Cruz
walter.php em gmail.com
Ter Out 3 13:07:40 -03 2006
Olá a todos.
Muito bacana essa discussão sobre VACUUM e SWEEP. E muito bacana a
explicação do Eduardo Jedliczka sobre páginas. Interessantíssimo.
Não quero criar flames - atualmente sou usuário do PostgreSQL e acho o
Firebird também interessante.
Porém o Cantu levantou alguns pontos que gostaria de falar sobre:
"No entanto, o PostgreSQL é bem mais complexo de se configurar e dar
manutenção, não existe nem um décimo das ferramentas e componentes de
acesso que o Firebird tem, e o processo de limpeza do banco (chamado
por eles de VACCUUM) exige conexão exclusiva com o banco.
Tire suas próprias conclusões."
Bom: O VACUUM NÃO exige conexão exclusiva com o banco. O VACUUM puro usa um
lock chamado ShareUpdateExclusiveLock (quem quiser curiar o fonte do
PostgreSQL, está em lock.h). Do manual:
"O VACUUM simples (sem o FULL) simplemente reclama espaço e o torna
disponível para reutilização. Essa forma de comando pode operar em paralelo
com a leitura e escrita na tabela, já que um lock exclusivo não é obtido. O
VACUUM FULL faz um processamento mais extensivo, incluindo mover tuplas nos
blocos para tentar compactar a tabela ao número mínimo necessário de blocos
no disco. Essa forma é mais lenta e requer um lock exclusivo em cada tabela
enquanto está sendo processado"
Ora, o VACUUM pode ser usado concorrentemente com INSERTS, UPDATES e
DELETES, sem problema.
O VACUUM FULL faz o que o Firebid só faz com um backup do banco - encolher o
tamanho do banco. Nesse caso, um lock exclusivo e necessário - outras
transações deverão esperar.
No mais, eu, que uso Linux, tenho encontrado pouquissimas ferramentas para
Firebird no Linux. Tem o Flamerobin, mais ainda é meio instável (e eu não
sei C nem tenho tempo suficiente pra contribuir). No mais, há drivers ODBC,
JDBC, conexão com python, php e o que mais precisar no PostgreSQL.
A dificuldade de administração tem sido mitigada. Hoje, já existe o
auto-vacuum, embora ele venha desabilitado por padrão. E a dificuldade de
configuração está diminuindo. A partir da versão 8.2, será possível
configurar valores em MB ou KB, por exemplo.Isso e muito mais :). Sua
aparente complexidade na configuração é decorrente de sua flexibilidade.
Não me entendam mal - reitero: não quero causar flame-wars. Uso o
PostgreSQL, acho o Firebird um banco bacana (inclusive comprei o livro do
Cantu. Na época fiquei um mês desejando-o, e fiquei bem satisfeito com o
conteúdo!). Porém é chato quando informações incorretas são divulgadas.
(Me copiem no cc.. Estou em modo digest, só vou ler os e-mails de vocês sei
lá quando..)
[]'s
- Walter
Mais detalhes sobre a lista de discussão lista