Have an amazing solution built in RAD Studio? Let us know. Looking for discounts? Visit our Special Offers page!
Notícia

Alterações na configuração de isolamento de transação FireDAC no RAD Studio 10.4

Antes do RAD Studio 10.4, o padrão da opção de isolamento de transação para conexões FireDAc era lido e confirmado. Isso é TFDConnection.TxOptions.Isolation foi xiReadCommitted. Este foi o valor definido para o componente e, sendo o padrão, ele não foi enviado para o banco de dados. FireDAC apenas assumiu que o valor padrão em sua configuração era o padrão do banco de dados e não enviou explicitamente essa configuração de isolamento para o banco de dados no início de uma sessão. Por exemplo, no MySQL o comando necessário é SET SESSION TRANSACTION ISOLATION LEVEL não foi executado se o padrão não foi modificado. Nesse caso, o isolamento da transação do MySQL permanecia com o valor padrão do banco de dados, que é xiRepeatableRead, independentemente do que foi definido na configuração padrão do FireDAC.

Para corrigir esse problema, decidimos que é melhor manter o nível de isolamento padrão em xiUnspecified, o que significa que se você não precisar de um nível de isolamento específico, a configuração padrão para o banco de dados específico é usada – esta é a que já está predefinida int O banco de dados e você não precisa pedir configuração. O nível de isolamento padrão é otimizado para um banco de dados específico, pois os padrões são diferentes e alguns dos níveis de isolamento nem mesmo são suportados por todos os mecanismos de banco de dados da mesma forma.

Se um desenvolvedor deseja usar um nível de isolamento diferente do padrão usado pelo banco de dados, ele deve ser definido explicitamente na configuração do componente ou no código. Se o desenvolvedor quiser usar o banco de dados padrão, nenhum código é necessário.

Aqui estão os níveis de isolamento padrão dos principais bancos de dados em termos FireDAC – novamente, o valor da propriedade é apenas xiUnspecified:

DB2 – xiReadCommitted
InterBase e Firebird – xiSnapshot
MySQL e MariaDB – xiRepeatableRead
Oracle – xiReadCommitted
Microsoft SQL Server – xiReadCommitted
SQLite – xiSerializible
PostgreSQL – xiReadCommitted

Espero que isso ajude a esclarecer a mudança e explicar como contorná-la, alterando o nível de isolamento da transação de sua conexão FireDAC para aquele de que você precisa especificamente, se diferente do padrão do banco de dados. Esta mudança não foi listada nas notas de lançamento do RAD Studio 10.4 e causou algumas preocupações (e relatórios de erros).


Reduce development time and get to market faster with RAD Studio, Delphi, or C++Builder.
Design. Code. Compile. Deploy.
Start Free Trial   Upgrade Today

   Free Delphi Community Edition   Free C++Builder Community Edition

Leave a Reply

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.

IN THE ARTICLES