Array
(
)

Performance - ClientDataSet Query UpdateSQL

Gardel
   - 22 jan 2006

Estou precisando de um esclarecimento...

Gostaria de obter informações sobre performance de uma query ligada um clietdataset.

Estou usando uma query conectada a um datasetprovider que por sua vez está conectada a um clientdataset, a propriedade RequestLive da query está definida como true, diz-se que com esta propriedade setada dessa forma perde-se em performance.

Baseado nisso gostaria de saber se usando um updatesql ligado a essa query (permitindo que coloque o RequestLive como false) ligado ao provider e por ultimo ligado ao clietdaset, eu ganharia mais em performance? ou a performance permaneceria a mesma visto que estou usando clientdataset que por sí só já possui uma performance melhor?

Agradeço a cooperação


Vinicius2k
   - 22 jan 2006

Colega,

Na verdade, não creio que você necessite de setar RequestLive para True. Você já tentou sem? O set feito por você é exclusivamente para que a Query seja atualizável?

Se sim, até aonde eu sei, isto não é necessário quando se utiliza Midas (TDataSetProvider + TClientDataSet). Digo ´até aonde eu sei´ porque nunca trabalhei com BDE + Midas. Como você não mencionou a camada de acesso, apenas o RequestLive, suponho que seja BDE.

Se não, seria bom você dar mais detalhes sobre como está trabalhando os dados, o porque do RequestLive := True, para que tentemos lhe ajudar a melhorar a performance.


Gardel
   - 23 jan 2006

Para a conexão estou usando zeos...

Ligo a zconnection com uma zquery o provider na zquery e o clientdataset no provider... até ai tudo certo...

Mas se deixo requestlive como false a seguinte mensagem de erro é apresentada:

ZQuery1: Cannot modify a read-only dataset.

Se seto RequestLive para true ele faz tudo certinho...

Mas até onde sei, quem trata diretamente de atualizações, inserções e exclusões é provider, ele trata direto com o bd, nesse caso a query só funciona como um provedor para que o clientdataset saiba que campos usar, isso é estranho parece que a query é quem ta tratando com o bd, pq para necessitar de requestlive ela precisa atualizar dados no bd...

Me corrijam se eu estiver errado...
Preciso de ajuda.

Agradeço desde já


Vinicius2k
   - 23 jan 2006

Colega

Até a última versão estável da Zeos (6.1.5-stable) ela não dava suporte à Midas. Inclusive isto é mencionado pelos autores no ´KnowBugs´.

Não sei qual versão você está utilizando, se for até a 6.1.5-stable a razão do erro é essa. Se for mais nova (6.5.1-alpha), e ela já oferecer suporte, *deve* ser um bug.

Suas considerações sobre a Midas estão corretas. A Query é um mero ´coadjuvante´.

T+


Gardel
   - 24 jan 2006

Realmente observei o q vc disse...

Estou usando a 6.5.1-stable, dei uma olhada nos bugs conhecidos e realmente está lá, fui dar uma olhada no site do zeos, achei que ta muito bugado mesmo essa versão alpha, até pq é ainda é alpha né :D...

Nesse caso tenho que ver uma outra alternativa de conexão, o que vc recomenda, preciso de algo free e que me de garantias futuras que eu vo ter conexão, por exemplo não gostaria de investir em ibx pq não tenho garantia que essa biblioteca vai ser compativel com o firebird 2.0 por exemplo, exatamente por isso optei por zeos...

Se vc tiver alguma sugestão, por favor me informe...

Agradeço muito a sua ajuda...


Vinicius2k
   - 24 jan 2006

Garantia de compatibilidade é bem complicado...

O método de conexão mais seguro quanto a isto é ADO+ODBC.
Isto porque os times de desenvolvimento de todos os SGBDs sempre desenvolvem um driver ODBC,com certeza, compatível com a versão atual do SGBD.

T+


Gardel
   - 25 jan 2006

Ok, entendi

Mas qdo se usa odbc num se perde em performance?
Essa perda é muito grande?

Porque caso a performance seja muito prejudica, estou cogitando a possibilidade de usar ibx mesmo.

Agradeço,

Até mais


Thomaz_prg
   - 25 jan 2006

Olá...
Realmente, utilizando-se ODBC perde-se em performance para os componentes nativos. Porém essa perda não é muito grande não.
Se seu sistema for bem elaborado, você praticamente não notará a diferença.