[firebase-br] Comparação MSSQL Server x Firebird x PostGreSQL
Jennecy Junior
jennecy em gmail.com
Ter Maio 3 12:45:02 -03 2005
Olá pessoal,
Estou fazendo um estudo para migrar um servidor MSSQL Server, e, por
isso, instalei em uma máquina o MSDE 2000 ( SQLServer com limitações
), o Firebird 1.5.2 e o PostgreSQL 8.0. Em seguida, criei um
aplicativo em Delphi 7 que se conecta a um banco em cada um dos
servidores, todos com 9 tabelas de mesma estrutura. Em seguida, o
aplicativo iria inserir registros nas nove tabelas de cada banco, com
um código semelhante ao abaixo:
...
log.lines.add('Inicio Banco A - tabela 1:'+formatdatetime('hh:mm:ss.zzz', now));
Query.Open;
for x:=1 to y do
begin
Query.append;
query.fieldbyname('coluna1').value := a;
query.fieldbyname('coluna2').value := a;
query.fieldbyname('coluna3').value := a;
....
query.fieldbyname('coluna3').value := a;
Query.post;
end;
log.lines.add('Fim Banco A - tabela 1:'+formatdatetime('hh:mm:ss.zzz', now));
...
///muda o banco
...
log.lines.add('Inicio Banco B - tabela 1:'+formatdatetime('hh:mm:ss.zzz', now));
Query.Open;
for x:=1 to y do
begin
Query.append;
query.fieldbyname('coluna1').value := a;
query.fieldbyname('coluna2').value := a;
query.fieldbyname('coluna3').value := a;
....
query.fieldbyname('coluna3').value := a;
Query.post;
end;
log.lines.add('Fim Banco B - tabela 1:'+formatdatetime('hh:mm:ss.zzz', now));
....
///muda o banco
...
log.lines.add('Inicio Banco C - tabela 1:'+formatdatetime('hh:mm:ss.zzz', now));
Query.Open;
for x:=1 to y do
begin
Query.append;
query.fieldbyname('coluna1').value := a;
query.fieldbyname('coluna2').value := a;
query.fieldbyname('coluna3').value := a;
....
query.fieldbyname('coluna3').value := a;
Query.post;
end;
log.lines.add('Fim Banco C - tabela 1:'+formatdatetime('hh:mm:ss.zzz', now));
....
/// Próxima tabela
...
Bem, usando primeiramente Drivers ODBC/ADO para o Postgre e para o
Firebird ( pois a aplicação que será migrada usa ADO) e somando-se os
tempos para cada banco, o resultado foi:
MSSQL Server : 31s
Firebird : 1m 30s
PostgreSQL: 6m
Em seguida, usando componentes ZeosDB para o Postgre e para o
Firebird, e mantendo o ADO para o MS SQL, e somando-se os tempos para
cada banco, o resultado foi (sem campos blob):
MSSQL Server : 19s
Firebird : 35s
PostgreSQL: 4m 48s
Sendo Assim,
a) O PostgreSQL é tão lento assim ?!
b) Há como melhorar a performance do Firebird para aproximá-lo mais do
MS SQL? A diferença está beirando 100% mais lento...
Abraços
Jennecy Pereira
ServData Ltda
Mais detalhes sobre a lista de discussão lista