[firebase-br] Lentidão no TIB_Cursor.Prepare;

Carlos H. Cantu listas em warmboot.com.br
Qui Nov 9 17:41:07 -03 2017


Falei com o Jason e ele disse que os 13 segundos estão demorando
quando o IBO pede ao Firebird para abrir um nova transação, antes de
preparar o comando. Ele disse que pode ser a coleta de lixo.

Pediu pra vc enviar um exemplo da base de dados e do comando que está
demorando para Jason Wharton <jason em jwharton.com>

[]s
Carlos H. Cantu
eBook Guia de Migração para o FB 3 - www.firebase.com.br/guiafb3.php
www.FireBase.com.br - www.firebirdnews.org - blog.firebase.com.br

CRdS> Está levando 13,812 segundos para preparar o statement.
CRdS> A preparação deste mesmo sql no firedac ou no ibexpert é instantaneo.
CRdS> Att.


CRdS> /*===
CRdS> [ 09/11/2017 14:10:09 ]
CRdS> (TApplication).DmContabil.CrSaldo_Conta.trCrSaldo_Conta.API_Start()
CRdS> ====*/
CRdS> /*---
CRdS> [ 09/11/2017 14:10:09 ]
CRdS> START TRANSACTION
CRdS> DB HANDLE COUNT 1
CRdS> DB HANDLE 1 = 1
CRdS> TPB VERSION 3
CRdS>   write
CRdS>   read_committed
CRdS>   rec_version
CRdS>   nowait
CRdS> TR_HANDLE = 61

CRdS> SECONDS = 13,812
CRdS> ----*/
CRdS> /*---
CRdS> [ 09/11/2017 14:10:23 ]
CRdS> PREPARE STATEMENT
CRdS> TR_HANDLE = 61
CRdS> STMT_HANDLE = 60
CRdS> Dialect = 3

CRdS> select x.reduzido, x.dc, sum(x.valor) valor from 
CRdS> (
CRdS> select
CRdS> reduzido,
CRdS> tpsaldo dc,
CRdS> sum(saldoinicial) valor
CRdS> from co_sct
CRdS> where
CRdS> (
CRdS> (codempresa=?/* codempresa */) and
CRdS> (codfilial=?/* codfilial */) and
CRdS> (reduzido between ?/* reduzido_inicial */ and ?/* reduzido_final */)
CRdS> )
CRdS> group by 1, 2
CRdS> union all
CRdS> select
CRdS> debito reduzido,
CRdS> 'D' dc,
CRdS> sum(valor) valor
CRdS> from co_lct
CRdS> where
CRdS> (
CRdS> (co_lct.codempresa=?/* codempresa */) and
CRdS> (co_lct.codfilial=?/* codfilial */) and
CRdS> (debito between ?/* reduzido_inicial */ and ?/* reduzido_final */) and
CRdS> (data<=?/* data */)
CRdS> )
CRdS> group by 1, 2
CRdS> union all
CRdS> select
CRdS> credito reduzido,
CRdS> 'C' dc,
CRdS> sum(valor) valor
CRdS> from co_lct
CRdS> where
CRdS> (
CRdS> (co_lct.codempresa=?/* codempresa */) and
CRdS> (co_lct.codfilial=?/* codfilial */) and
CRdS> (credito between ?/* reduzido_inicial */ and ?/* reduzido_final */) and
CRdS> (data<=?/* data */)
CRdS> )
CRdS> group by 1, 2
CRdS> ) x group by 1, 2

CRdS> PLAN SORT ((X CO_SCT INDEX (FK_CO_SCT_REDUZIDO, FK_CO_SCT_CODEMPRESA)))
CRdS> PLAN SORT ((X CO_LCT INDEX (FK_CO_LCT_DEBITO, FK_CO_LCT_CODEMPRESA)))
CRdS> PLAN SORT ((X CO_LCT INDEX (FK_CO_LCT_CREDITO, FK_CO_LCT_CODEMPRESA)))

CRdS> FIELDS = [  Version 1 SQLd 3 SQLn 3
CRdS>   [REDUZIDO] = <NIL>    < LONG SubType: 0 Len: 4 Scale: 0 Data: <nil> >
CRdS>   [DC] = <NIL>    < TEXT[!null] SubType: 1589 Len: 1 Scale: 0 Data: <nil> >
CRdS>   [VALOR] = <NIL>    < INT64 SubType: 1 Len: 8 Scale: -2 Data: <nil> > ]
CRdS> ----*/
CRdS> /*===
CRdS> [ 09/11/2017 14:10:23 ]
//>>>> STATEMENT PREPARED <<<//
CRdS> TIB_Statement.API_Prepare()
CRdS> TIB_Cursor: "DmContabil.CrSaldo_Conta" stHandle=60
CRdS> ====*/
CRdS> /*---
CRdS> [ 09/11/2017 14:10:23 ]
CRdS> DESCRIBE INPUT
CRdS> STMT_HANDLE = 60
CRdS> Dialect = 3
CRdS> PARAMS = [  Version 1 SQLd 14 SQLn 14
CRdS>    = <NIL>    < SHORT[!null] SubType: 0 Len: 2 Scale: 0 Data: <nil> >
CRdS>    = <NIL>    < SHORT[!null] SubType: 0 Len: 2 Scale: 0 Data: <nil> >
CRdS>    = <NIL>    < LONG[!null] SubType: 0 Len: 4 Scale: 0 Data: <nil> >
CRdS>    = <NIL>    < LONG[!null] SubType: 0 Len: 4 Scale: 0 Data: <nil> >
CRdS>    = <NIL>    < SHORT[!null] SubType: 0 Len: 2 Scale: 0 Data: <nil> >
CRdS>    = <NIL>    < SHORT[!null] SubType: 0 Len: 2 Scale: 0 Data: <nil> >
CRdS>    = <NIL>    < LONG SubType: 0 Len: 4 Scale: 0 Data: <nil> >
CRdS>    = <NIL>    < LONG SubType: 0 Len: 4 Scale: 0 Data: <nil> >
CRdS>    = <NIL>    < TYPE_DATE[!null] SubType: 0 Len: 4 Scale: 0 Data: <nil> >
CRdS>    = <NIL>    < SHORT[!null] SubType: 0 Len: 2 Scale: 0 Data: <nil> >
CRdS>    = <NIL>    < SHORT[!null] SubType: 0 Len: 2 Scale: 0 Data: <nil> >
CRdS>    = <NIL>    < LONG SubType: 0 Len: 4 Scale: 0 Data: <nil> >
CRdS>    = <NIL>    < LONG SubType: 0 Len: 4 Scale: 0 Data: <nil> >
CRdS>    = <NIL>    < TYPE_DATE[!null] SubType: 0 Len: 4 Scale: 0 Data: <nil> > ]
CRdS> ----*/
CRdS> /*===
CRdS> [ 09/11/2017 14:10:23 ]
CRdS> (TApplication).DmContabil.CrSaldo_Conta.SysAfterPrepare()
CRdS>   stHandle=60
CRdS>   CharSet Information:
CRdS>   Field Name:DC CharSet:WIN1252|WIN1252 Collate:WIN_PTBR CharLen:1 ByteLen:1
CRdS> ====*/
CRdS> /*===
CRdS> [ 09/11/2017 14:10:23 ]
CRdS> (TApplication).DmContabil.CrSaldo_Conta.trCrSaldo_Conta.API_Commit()
CRdS> (TApplication).DmContabil.CrSaldo_Conta.trCrSaldo_Conta.OpenCursors = 0
CRdS> ====*/



CRdS> Em 9 de novembro de 2017 11:23, Carlos H. Cantu
CRdS> <listas em warmboot.com.br> escreveu:

CRdS> Tem um componente monitordialog que mostra na tela mesmo.

CRdS>  []s
CRdS>  Carlos H. Cantu
CRdS>  eBook Guia de Migração para o FB 3 - www.firebase.com.br/guiafb3.php
CRdS> www.FireBase.com.br - www.firebirdnews.org - blog.firebase.com.br

CRdS>> O IB_Monitor cria um arquivo de log ?
 CRdS>> Como faço para direcionar para um arquivo de log ?
 CRdS>> Att.


 CRdS>> Em 9 de novembro de 2017 10:06, Carlos H. Cantu
 CRdS>> <listas em warmboot.com.br> escreveu:

 CRdS>> Use o componente de Monitor do IBO para tentar ver em que parte do
 CRdS>>  processo está ocorrendo essa lentidão, e se for no código do IBO
 CRdS>>  mesmo, reporte para o Jason.

 CRdS>>  []s
 CRdS>>  Carlos H. Cantu
 CRdS>>  eBook Guia de Migração para o FB 3 - www.firebase.com.br/guiafb3.php
 CRdS>> www.FireBase.com.br - www.firebirdnews.org - blog.firebase.com.br


  CRdS>>> Recentemente atualizei o IBO para a última versão e a partir daí alguns
  CRdS>>> cursores/querys ficaram
  CRdS>>> lentos ao executar o prepare.
  CRdS>>> A mesma instrução SQL no FDQuery ( FireDac ) é instantâneo como era na
  CRdS>>> versão anterior do IBO.
  CRdS>>> Algum colega que passou por esta situação ?


  CRdS>>> IBO versão 5.9.5_2652
  CRdS>>> Firebird 2.1.7 - SuperServer

  CRdS>>> SQL:
  CRdS>>> select x.reduzido, x.dc, sum(x.valor) valor from
  CRdS>>> (
  CRdS>>>   select
  CRdS>>>     reduzido,
  CRdS>>>     tpsaldo dc,
  CRdS>>>     sum(saldoinicial) valor
  CRdS>>>   from co_sct
  CRdS>>>   where
  CRdS>>> (
  CRdS>>>   (codempresa=:codempresa) and
  CRdS>>>   (codfilial=:codfilial) and
  CRdS>>>   (reduzido between :reduzido_inicial and :reduzido_final)
  CRdS>>> )
  CRdS>>> group by 1, 2
  CRdS>>> union all
  CRdS>>> select
  CRdS>>> debito reduzido,
  CRdS>>> 'D' dc,
  CRdS>>> sum(valor) valor
  CRdS>>> from co_lct
  CRdS>>> where
  CRdS>>> (
  CRdS>>> (co_lct.codempresa=:codempresa) and
  CRdS>>> (co_lct.codfilial=:codfilial) and
  CRdS>>> (debito between :reduzido_inicial and :reduzido_final) and
  CRdS>>> (data<=:data)
  CRdS>>> )
  CRdS>>> group by 1, 2
  CRdS>>> union all
  CRdS>>> select
  CRdS>>> credito reduzido,
  CRdS>>> 'C' dc,
  CRdS>>> sum(valor) valor
  CRdS>>> from co_lct
  CRdS>>> where
  CRdS>>> (
  CRdS>>> (co_lct.codempresa=:codempresa) and
  CRdS>>> (co_lct.codfilial=:codfilial) and
  CRdS>>> (credito between :reduzido_inicial and :reduzido_final) and
  CRdS>>> (data<=:data)
  CRdS>>> )
  CRdS>>> group by 1, 2
  CRdS>>> ) x group by 1, 2
  CRdS>>> ______________________________________________
  CRdS>>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
  CRdS>>> Para saber como gerenciar/excluir seu cadastro na lista, use:
  CRdS>>> http://www.firebase.com.br/fb/artigo.php?id=1107
  CRdS>>> Para consultar mensagens antigas:
  CRdS>>> http://www.firebase.com.br/pesquisa_lista.html


 CRdS>>  ______________________________________________
 CRdS>>  FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
 CRdS>>  Para saber como gerenciar/excluir seu cadastro na lista, use:
 CRdS>> http://www.firebase.com.br/fb/artigo.php?id=1107
 CRdS>>  Para consultar mensagens antigas:
 CRdS>> http://www.firebase.com.br/pesquisa_lista.html



CRdS>  ______________________________________________
CRdS>  FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
CRdS>  Para saber como gerenciar/excluir seu cadastro na lista, use:
CRdS> http://www.firebase.com.br/fb/artigo.php?id=1107
CRdS>  Para consultar mensagens antigas:
CRdS> http://www.firebase.com.br/pesquisa_lista.html






Mais detalhes sobre a lista de discussão lista