Autor Tópico: Apresentação V8 - Especial DÚVIDAS  (Lida 2535 vezes)

Alexandre Pereira Bühler

  • Expert
  • *****
  • Mensagens: 1658
  • Nunca estabeleça um teto para os seus rendimentos.
    • Simão & Bühler Ltda
    • Email
Re:Apresentação V8 - Especial DÚVIDAS
« Responder #15 Online: Julho 16, 2014, 05:56:41 pm »
Obrigado Márcia
--
Alexandre Pereira Bühler
https://www.simaoebuhler.com.br
Hospedagem compartilhada Scriptcase desenvolvimento e produção. Temos servidores dedicados Scriptcase.
Eu RTFM todo dia e você?

Régis Matos

  • Global Moderator
  • Expert
  • *****
  • Mensagens: 632
  • Se a porta não se abrir, construa uma.
    • Email
Re:Apresentação V8 - Especial DÚVIDAS
« Responder #16 Online: Julho 17, 2014, 09:02:50 am »
Bom dia,

Tenta criar uma view dessa tabela grande, de repente pode melhorar...



Bom dia,
A minha pergunta é  o scriptcase 8 deixará de ser lento no Firebird e Postgresql para bases com tabelas acima de 1GB?
Tenho bases com tabelas acima  de 1GB com mais de 11.000.000 de registros e fica super lento mostrar a tela.
Obs: Para bases Oracle vale o mesmo.

O Firebird e o Postgresql trabalham com MVCC.
Isto quer dizer que um SELECT COUNT(*) FROM tbl; fica muito lento para tabelas acima de 1GB.
E como se a Netmake desse prioridade para o mysql e esquece de ver como os outros SGDB funcionam.
Vide:
https://wiki.postgresql.org/wiki/Slow_Counting
http://www.firebirdfaq.org/faq5/

Isto implica que se um cliente muito doido, e sempre existe um, quiser fazer um "select * from tbl; " ou uma query trouxer uma quantidade muito grande de registros o scriptcase terá o retorno da query super rápido como no mysql. Mas para montar a paginação irá demorar mais de 18 segundos. Pois o scriptcase usa select count(*) from tbl; para montar a paginação. Consequentemente a grid ou form irá demorar muito para aparecer na tela.

Então como manter o suporte ou mesmo vender uma aplicação que você sabe que será lenta com o passar dos anos e não poderá fazer nada para mudar isto? Pois o framework é fechado. Há várias maneiras de contornar isto. No scriptcase 8 isto foi corrigido?

Nos fontes gerados de uma grid, por exemplo, a função pode ser achado no:
arquivo nome_grid_total.class.php
function quebra_geral()

Exemplo de função quebra_geral gerada pelo scriptcase:

 function quebra_geral()
   {
      global $nada, $nm_lang ;
      if ($_SESSION['sc_session'][$this->Ini->sc_page]['grid_xxxxxx_xxxxxx']['contr_total_geral'] == "OK")
      {
          return;
      }
      $_SESSION['sc_session'][$this->Ini->sc_page]['grid_xxxxxx_xxxxxx']['tot_geral'] = array() ;
      $nm_comando = "select count(*) from " . $this->Ini->nm_tabela . " " . $_SESSION['sc_session'][$this->Ini->sc_page]['grid_xxxxx_xxxxxx']['where_pesq'];
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_comando;
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = '';
      if (!$rt = $this->Db->Execute($nm_comando))
      {
         $this->Erro->mensagem (__FILE__, __LINE__, "banco", $this->Ini->Nm_lang['lang_errm_dber'], $this->Db->ErrorMsg());
         exit ;
      }
      $_SESSION['sc_session'][$this->Ini->sc_page]['grid_xxxxx_xxxxx']['tot_geral'][0] = "" . $this->Ini->Nm_lang['lang_msgs_totl'] . "";
      $_SESSION['sc_session'][$this->Ini->sc_page]['grid_xxxxx_xxxxx']['tot_geral'][1] = $rt->fields[0] ;
      $rt->Close();
      $_SESSION['sc_session'][$this->Ini->sc_page]['grid_xxxxx_xxxxx']['contr_total_geral'] = "OK";
   }

Alexandre Pereira Bühler

  • Expert
  • *****
  • Mensagens: 1658
  • Nunca estabeleça um teto para os seus rendimentos.
    • Simão & Bühler Ltda
    • Email
Re:Apresentação V8 - Especial DÚVIDAS
« Responder #17 Online: Julho 17, 2014, 10:26:12 am »
Régis,
Não tem jeito.
Na arquitetura MVCC o select count sempre pesa para tabelas grandes.
Tem que se encontrar outro jeito de fazer esta paginação.
Os remendos para melhorar a performance estão nos links:
https://wiki.postgresql.org/wiki/Slow_Counting
http://www.firebirdfaq.org/faq5/
« Última modificação: Julho 17, 2014, 10:27:52 am por Alexandre Pereira Bühler »
--
Alexandre Pereira Bühler
https://www.simaoebuhler.com.br
Hospedagem compartilhada Scriptcase desenvolvimento e produção. Temos servidores dedicados Scriptcase.
Eu RTFM todo dia e você?