25/11/2005

Delphi MySQL Zeos Queda de Energia

Olá pessoal.

Desenvolvo meus sistemas em Delphi com banco de dados MySQL. Como metodologia de acesso a dados utilizo o ZeosLib. Possibilita uma estrutura muito rápida, estável.

Mas ultimamente tenho enfrentado muito problemas com queda de energia nas estações e as vezes nos servidores. No antigo paradox poderiamos colocar um DbiSaveChanges no afterpost e o problema de perda de registros seria resolvido...

A dúvida é o seguinte: desenvolver uma rotina que faça a gravação física dos dados no banco para em caso de queda não corrompa ou perca informações do banco (eu pensei em fazer um close e open sempre que der um post, mas não sei se adianta alguma coisa...)

Obs: Utilizo MySQL 4.0, Zeos 5.5, tabelas MyISAM sem transação

Agradeço a atenção dos colegas.

Grato.


Netosdr

Respostas

26/11/2005

Wiltonfenix

Na minha opnião, o uso de transações resolve este problema. Nunca tive problema com queda de energia no MySQL.


Responder Citar

26/11/2005

Netosdr

Caro colega Wilton,

Sua sugestão é interessante e torna o sistema mais seguro, mas requer que ele seja reescrito para suportá-las.

Dúvida: qual tipo de tabela devo usar que dê suporte ao uso de transacoes?


Responder Citar

26/11/2005

Wiltonfenix

No MySQL as tabelas do tipo InnoDB suportam transações. Elas perdem em performance para as tabelas MyISAM, mas vc ganha em transações e segurança tb.


Responder Citar

26/11/2005

Netosdr

Pelos testes que fiz com o InnoDB, ele grava as informações em um arquivo ibdata, e não nos arquivos de cada tabela, como é o caso do MyISAM. Com o tempo, devido a quantidade de informações, a perda de performace é relativamente alta.
Você tem sua estrutura utilizando InnoDB? Quantos registros tem seu sistema? E a performace?


Responder Citar

26/11/2005

Wiltonfenix

A perda de performance não acho grande. Na verdade isso depende muito do administrador do BD e do sistema que o acessa. A velocidade do MySQL, mesmo com InnoDB, não fica devendo ao Oracle.

Quanto ao ibdata, vc pode dividir ele em mais de um.


Responder Citar