一键导入
delphi-firedac-optimization
Persistência e acesso a dados estável com FireDAC no Delphi. Configuração de conexão, transações, performance de queries e cache local.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Persistência e acesso a dados estável com FireDAC no Delphi. Configuração de conexão, transações, performance de queries e cache local.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Diretrizes de SOLID, Clean Code e padrões de nomenclatura para classes, interfaces, métodos e variáveis em projetos Delphi.
Desenvolvimento de microserviços e APIs REST com o framework minimalista Horse em Delphi. Rotas, controllers, middlewares, gerenciamento de memória e tratamento de parâmetros.
Diretrizes de qualidade e desenvolvimento de templates HTML e páginas dinâmicas com Web Stencils (Server-Side Rendering) no Delphi.
Diretrizes e mapeamentos de expressões regulares para migração de componentes Borland Database Engine (BDE) para FireDAC no Delphi.
Diretrizes e mapeamentos de expressões regulares para migração de componentes dbExpress (DBX) para FireDAC no Delphi.
Diretrizes de qualidade e desenvolvimento de APIs web, ORM, injeção de dependências e testes utilizando o Dext Framework em Delphi.
| name | delphi-firedac-optimization |
| description | Persistência e acesso a dados estável com FireDAC no Delphi. Configuração de conexão, transações, performance de queries e cache local. |
Esta guia estabelece boas práticas e padrões para o uso seguro, performático e escalável do framework de persistência nativo do Delphi (FireDAC).
O FireDAC suporta nativamente pooling de conexões para evitar a sobrecarga de abrir novas conexões físicas a cada requisição ou chamada de serviço.
Pooled=True, Pool_MaximumItems=50, etc.).TFDConnection associada ao pool. Nunca compartilhe conexões.Ajuste os parâmetros de busca para otimizar o consumo de memória do servidor e do cliente:
fmAll): Útil para carregar tabelas de cadastro pequenas que precisam ser mantidas em memória rápida.fmOnDemand / RowSize): Para relatórios ou tabelas volumosas, configure FetchOptions.Mode := fmOnDemand e regule o FetchOptions.RowsetSize (ex: 50 a 150 registros por lote de rede). Isso impede o estouro de memória no cliente.ReadOnly): Se a consulta for apenas para exibição, configure ReadOnly := True no DataSet. Isso desativa o cache de atualização interna do FireDAC, economizando processamento local.Prefira o uso de TFDMemTable para trafegar dados entre as camadas do sistema (Infraestrutura -> Aplicação -> Apresentação).
TFDQuery com conexões físicas para a UI. Em vez disso, copie os dados da query para um TFDMemTable desconectado (usando LMemTable.CopyDataSet(LQuery, [coStructure, coData])) e envie o TFDMemTable para a visualização.TFDMemTable não impactam o servidor de banco de dados.Sempre controle as transações explicitamente através do objeto TFDTransaction, envolvendo os blocos de persistência lógica em tratamento de exceções:
LTransaction.StartTransaction;
try
// Execução de múltiplos inserts/updates
LQuery1.ExecSQL;
LQuery2.ExecSQL;
LTransaction.Commit;
except
on E: Exception do
begin
LTransaction.Rollback;
raise EDatabaseException.Create('Falha ao gravar no banco: ' + E.Message);
end;
end;
Utilize os seguintes prefixos padronizados ao declarar variáveis ou componentes em DataModules:
| Classe Componente | Descrição | Prefixo Recomendado | Exemplo |
|---|---|---|---|
TFDConnection | Conexão física ao banco de dados | con | conMain |
TFDTransaction | Controle transacional | trn | trnMain |
TFDQuery | Execução de instruções SQL | qry | qryGetCustomers |
TFDStoredProc | Execução de Stored Procedures | prc | prcCalculateTax |
TFDMemTable | Tabela local em memória rápida | mt | mtCustomers |
TFDTable | Acesso direto a tabela física | tbl | tblProducts |