Galera mandei essa mensagem pro Klaus, mas gostaria de ver se os experts do guj podem me adiantar alguma coisa
Eu fiz o teste descrito abaixo:
Numa aplicação java utilizando o Prevayler,eu inseri 200 mil e hum registros. Demorou 23 segundos e o log ficou com 9,62 Mega bytes.
Utilizando a mesma aplicação só que agora utilizando drivers nativos JDBC para SQL Server 2000 ao inserir os mesmos 200 mil e hum registros na tabela demoraram 6 minutos e 33 segundos e o log ficou com 82,4 Mega bytes.
Agora o meu entendimento do que acontece:
No Prevayler, todos os dados são mantidos na memória RAM.
Para evitar a perda dos dados, antes de alterá-los, cada inclusão é salva num arquivo de log através da serialização. O arquivo de log é guardado no disco para evitar a sua perda no caso de alguma falha ocorrer.
No SQL Server 2000, a inclusão dos dados também não é feita diretamente no disco, mas sim nas páginas de dados carregadas na memória. Então as inclusões são registradas no log.
A dúvida:
Se é assim mesmo como eu disse, porque o Prevayler é tão superior ao SQL Server no tempo de resposta? Está claro que o sql server faz mais i/o mas porque? E porque a diferença de tamnho nos arquivos de log?