[firebase-br] Ainda sobre Manter cursor aberto ou fechado ?

luapfirebird em yahoo.com.br luapfirebird em yahoo.com.br
Sex Maio 10 17:57:45 -03 2019


 Atualmente eu uso o IBDac que diz o seguinte :: 
devart.com/ibdac/docs/devart.ibdac.tibcdatasetoptions.autoclose

Use a propriedade AutoClose para CustomIBCDataSet para fechar o cursor depois de buscar todas as linhas. Permite reduzir o número de cursores abertos no servidor.


O FireDac docwiki.embarcadero.com/Libraries/Tokyo/en/FireDAC.Stan.Option.TFDFetchOptions.AutoClose

 Controla o fechamento automático de um cursor do conjunto de dados após a obtenção do último registro. Use o valor da propriedade AutoClose para controlar o fechamento automático de um cursor do conjunto de dados. Se AutoClose estiver configurado como True e o último registro for buscado no conjunto de resultados atual, o cursor subjacente será fechado, todos os conjuntos de resultados adicionais que ainda não foram processados ​​serão descartados e os recursos associados aos cursores serão liberados. O dataset ( descendente de TFDDataSet ) é fechado, mas seu objeto de comando interno é fechado. Isso permite a liberação de recursos do DBMS associados a um cursor o mais rápido possível.  Se o comando SQL retornar vários conjuntos de resultados e você precisar processar todos eles, será necessário definir AutoClose como False . Caso contrário, depois de processar o primeiro conjunto de resultados, todos os outros conjuntos de resultados serão descartados. 
Eu confesso que estou perdido com essa questão me parece que o cursor é como se fosse uma tabela montada em memoria no servidor e que essa opção fecha essa tabela ficando deixando aberta só no DataSet Local.
Por isso não sei se deixar o Cursor aberto pode prejudicar em uma eventual queda de energia  e se ótimiza o desempenho fazendo com que se a mesma consulta for requisitada o Firebird não preciso montar novamente a query pois vai analisar o cursor já montado previamente que ficou aberto.
Grato.


    Em quinta-feira, 2 de maio de 2019 15:09:49 BRT, Gladiston Santana <gladiston em vidy.com.br> escreveu:  
 Cursor é a designação da posição atual dentro dum conjunto de dados.
Muito util quando vocÊ precisa navegar num conjunto de dados.
Cursor para mim, tem muita serventia dentro de procedures e loops,
desconheço outra forma de uso pelo usuário.
As vezes suites como firedac, ibo, .... podem usar o termo cursor para
referir-se a posição dentro dum grid ou dataset e há um evento para
determinar o que será feito se o curso for finalizado como por exemplo, a
pesquisa for finalizada, se tem autoclose, deve significar fechar a conexão.

    


Mais detalhes sobre a lista de discussão lista