IT SERVICES - Performance/Lentidão/Travamentos - O que são transações de Banco de Dados
Dúvida
O que são transações de Banco de Dados?
Solução
Atenção
Não confunda Transação de Banco de Dados (conceito específico do banco de dados) com Transação do sistema Gestão Empresarial | ERP (conceito específico do ERP). Apesar de terem o mesmo nome, são conceitos totalmente diferentes. Neste artigo, a explicação é totalmente voltada a Transação de Banco de Dados.
Conceito
Transação é o recurso do Banco de Dados que visa garantir a integridade dos dados dentro de um processo.
As transações com os dados sempre:
- Concorrem em conexões conexões diferentes (nunca mesmo dentro da mesma conexão/transação);
- Locks e Deadlocks no banco de dados sempre estão atrelados a uma ou mais transações abertas no banco de dados;
A melhor prática para garantia de Performance é utilizar transações pequenas (que gerem locks pequenos durante o processo). Isso garantirá uma disponibilidade maior dos dados para outras rotinas, de forma que essas outras rotinas possam manipular esses dados também.
Para maiores informações sobre Locks e Deadlocks, verifique o artigo IT SERVICES - Performance/Lentidão/Travamentos - O que são locks e deadlocks no processo de comunicação do sistema com o banco de dados.
Informações relacionadas aos sistemas Senior
Com relação as customizações (Regras LSP, WebServices customizados, Relatórios Customizados, Importadores/Exportadores), leve em conta os seguintes conceitos e melhores práticas:
- Sempre que uma regra LSP é executada, caso essa regra efetue alterações em dados do banco de dados, por padrão, essa regra abrirá uma transação com banco de dados específica, onde essa transação será encerrada ao sair do processo da execução da regra LSP.
- Apesar do conceito descrito acima, é possível ainda personalizar a abertura, fechamento e rollback da transação com banco de dados dentro de uma regra. Para isso as funções IniciarTransacao(), FinalizarTransacao() e DesfazerTransacao() são utilizadas. Neste caso, é importante que a regra definida garanta que para toda função IniciarTransacao() haja a definição de uma função FinalizarTransacao() ou DesfazerTransacao(). A utilização da função IniciarTransacao() sem seu respectivo fechamento ou rollback pode acarretar em locks gigantescos na base de dados, ocasionando a paralização de toda a base.
Observação
Para mais informações sobre o questões relacionadas a Performance/Lentidão/Travamentos do Gestão Empresarial | ERP, consulte o artigo ERP - Performance/Lentidão/Travamentos - Onde é possível encontrar informações diversas sobre questões relacionadas a Performance/Lentidão/Travamentos (índice).