[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