Clipper On Line • Ver Tópico - Mysql: consulta lenta

Mysql: consulta lenta

Discussão sobre SQL

Moderador: Moderadores

 

Mysql: consulta lenta

Mensagempor JoséQuintas » 26 Abr 2021 14:29

Itamar M. Lins Jr. escreveu:Deveria está conectando,(abrindo) conexão para cada sentença SQL... Só se for isso.


No começo tava complicado.
A base já estava com 100GB e SEM ÍNDICES.
CHAR() ao invés de VARCHAR, etc.
No começo, pra excluir uma única linha do banco de dados demorava horas, quando conseguia excluir, foi quando vi que não existia índice.
Fui descobrindo aos poucos essas coisas, conforme ele foi precisando de ajuda.

Agora que ele comentou.... talvez tudo isso demorado é que impedia de fechar conexões.
o ADO trabalha com multithread, então, isso pode ter ajudado, porque não precisava esperar outro processo.

Pra confirmar tudo isso, só se voltar a usar SQLMIX, agora que a parte do MySQL foi resolvida.

Nota: a base também é usada via celular, fora do Harbour, por isso acabei considerando que só havia problema com Harbour, e não com o MySQL, com o que mencionei antes.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18161
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Mysql: consulta lenta

Mensagempor Itamar M. Lins Jr. » 26 Abr 2021 14:39

Olá!
o ADO trabalha com multithread, então, isso pode ter ajudado, porque não precisava esperar outro processo.

MultiThread também é um recurso do Harbour, então SQLMIX faz uso.
Não foi isso.
Sem ver os fontes nós ficamos apenas fazendo suposições.

Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6959
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 313 vezes
Mens.Curtidas: 508 vezes

Mysql: consulta lenta

Mensagempor cjp » 26 Abr 2021 20:14

Pra confirmar tudo isso, só se voltar a usar SQLMIX, agora que a parte do MySQL foi resolvida.


Acho que não é o caso de voltar pro SQLMIX né! O ADO está resolvendo bem o meu problema.
Inacio de Carvalho Neto
cjp
Usuário Nível 6

Usuário Nível 6
 
Mensagens: 1531
Data de registro: 19 Nov 2010 21:29
Cidade/Estado: paraná
Curtiu: 10 vezes
Mens.Curtidas: 20 vezes

Mysql: consulta lenta

Mensagempor JoséQuintas » 27 Abr 2021 12:52

cjp escreveu:Acho que não é o caso de voltar pro SQLMIX né! O ADO está resolvendo bem o meu problema.


Nem tenho como discutir isso.

Pra mim, meu uso, testar SQLMIX agora seria ficar preso novamente ao padrão DBF, à primeira vista sem nenhuma vantagem adicional.
Pra você, como também tem fontes pra uso em internet, deve preferir sintaxe parecida nos dois casos.
Por enquanto pra nós, basta saber que pode ser uma alternativa depois, se precisar.

No Windows, conexão fechada NÃO É conexão fechada. Ela pode ficar pendente pra reaproveitamento.
Em certos casos isso acaba sendo problema no Windows, porque há limite de conexões pendentes.
É uma diferença com relação ao Linux, e são essas coisas que precisam de tratamento diferente conforme sistema operacional.
Não que SQLMIX não esteja preparado pra isso, mas.... não sabemos detalhes internos, e acabamos usando conforme exemplos, com o que está nos exemplos.
Com o ADO a mesma coisa, mas fica visível que uma variável é a conexão, e basta deixar a variável visível.

É o que comentei sobre o ADO: acaba tudo ficando visível, e o usuário não confunde com DBF.
Melhor ou pior não sei, talvez para o usuário facilite entender que não tem a ver com DBF, e force pensar diferente e já resolver problemas.
Depois com tudo funcionando direito... só se a Microsoft acabar com ADO pra gente querer testar alguma outra opção.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18161
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Mysql: consulta lenta

Mensagempor Itamar M. Lins Jr. » 27 Abr 2021 15:55

Olá!
agora seria ficar preso novamente ao padrão DBF,|

Isso que é inversão!
Agora vc está preso ao ADO! Não existe nenhuma diferença de ADO para DBF.
ADO que é está PRESO nas engrenagens das DLLs do WINDOWS.
Vai ver como são as outras alternativas e deixe de preconceito.
O que é diferente de ADO para DBF ? Ainda não vi NADA, parece até a mesma coisa. A Vantagem do DBF é que funciona em qualquer lugar, não depende de SO.
E tem várias linguagens que trabalham com DBF. DBF não tem nada a ver com falta de performance nem com FICAR PRESO em conceitos, quem tem problema com isso parece que é vc.
Vantagens do DBF para ADO são várias, qual é vantagem do ADO ?
DBF podemos indexar, filtrar, relacionar, etc, etc... Vc está confundindo SQL com ADO isso sim que é um problema.
SQL é uma coisa, DBF é outra e ADO outra.

Se SQLMIX não fosse bom, não teria ninguém usando. Nem o Eric Landvai estaria criando o novo DRIVE de conexão compatível com os conceitos do FOXPRO em cima do SQLMIX.

Veja o drive do Rodrigo Moreno para PG, muita gente usa e não tem nada com DBF, piorou ADO.
   oQuery := oServer:Query( "SELECT code, name, description, sales FROM test" )

   FOR EACH i IN oQuery:Struct()
      ? i[ 1 ], i[ 2 ], i[ 3 ], i[ 4 ]
   NEXT

   ? "Fields:", oQuery:FCount()

   oRow := oQuery:Blank()

   ? ;
      oRow:FCount(), ;
      oRow:FieldPos( "sales" ), ;
      oRow:FieldGet( 1 ), ;
      oRow:FieldName( 2 ), ;
      oRow:FieldType( 1 ), ;
      oRow:FieldDec( 1 ), ;
      oRow:FieldLen( 1 )

   oRow:FieldPut( 1, 150 )
   oRow:FieldPut( 2, "MY TEST" )

   ? oRow:FieldGet( 1 ), oRow:FieldGet( 2 )

   ? oRow:aRow[ 1 ], oRow:aRow[ 2 ], oRow:aOld[ 1 ], oRow:aOld[ 2 ]

   ? oQuery:Append( oRow )

   ? oQuery:ErrorMsg()

   DO WHILE ! oQuery:Eof()
      ? ;
         oQuery:RecNo(), ;
         oQuery:FieldPos( "code" ), ;
         oQuery:FieldGet( oQuery:FieldPos( "code" ) ), ;
         oQuery:FieldGet( 4 ), ;
         oQuery:FieldGet( 2 ), ;
         oQuery:FieldName( 1 ), ;
         oQuery:FieldType( 1 ), ;
         oQuery:FieldDec( 1 ), ;
         oQuery:FieldLen( 1 ), ;
         oQuery:FieldGet( 3 )

      IF oQuery:RecNo() == 50
         oRow := oQuery:getrow()

         oRow:FieldPut( 2, "My Second test" )
         ? "Update:", oQuery:Update( oRow )
      ENDIF

      IF oQuery:RecNo() == 60
         oRow := oQuery:getrow()
         ? "Delete:", oQuery:Delete( oRow )
      ENDIF

      oQuery:Skip()

   ENDDO


Praticamente a mesma coisa, de usar com ADO ou DBF. Só que funciona independente de OS.
O importante é isso: oQuery := oServer:Query( "SELECT code, name, description, sales FROM test" )

Tanto faz se vai ser com ADO/DBF/XXX, aprender SQL não tem nenhuma relação com DBF ou ADO. Agora quais são as ferramentas que vc tem para tratar o RETORNO da sentença é que importa.

Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6959
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 313 vezes
Mens.Curtidas: 508 vezes

Mysql: consulta lenta

Mensagempor JoséQuintas » 27 Abr 2021 17:25

Itamar M. Lins Jr. escreveu:Isso que é inversão!
Agora vc está preso ao ADO! Não existe nenhuma diferença de ADO para DBF.
ADO que é está PRESO nas engrenagens das DLLs do WINDOWS.
Vai ver como são as outras alternativas e deixe de preconceito.
O que é diferente de ADO para DBF ? Ainda não vi NADA, parece até a mesma coisa. A Vantagem do DBF é que funciona em qualquer lugar, não depende de SO.


Se considerar DBF... qual linguagem de programação funciona com DBF?
Se considerar ADO... qual linguagem de programação funciona com ADO?

SQLMIX não deixa preso, pode usar SQLMIX no Linux.
ADO deixa preso, só funciona no Windows em qualquer linguagem de programação.

Sei lá, né... cada um tem um significado sobre estar preso.

E se acabar o ADO?
E se acabar o SQLMIX?
E se acabar o Harbour?
E se acabar MySQL? Ele foi vendido pra Oracle uma vez.....
E se acabar Windows?
E se acabar o programador?

Sei lá... é muito SE....
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18161
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Mysql: consulta lenta

Mensagempor JoséQuintas » 27 Abr 2021 18:30

Outro post me lembrou de uma coisa: ADORDD

Continua em extras, no Harbour 3.2, e em algumas LIBs, mas não tem mais no 3.4.

Acaba parecido com SQLMIX, no que se refere a usar igual DBF.

Se não me engano: USE ( "SELECT ..." ) ALIAS TEMP VIA ADORDD.

Por mais esquisito que pareça.... estilo SQLMIX, muito antes do SQLMIX.

Talvez seja como eu falei: usar igual DBF acaba em confusão geral, e gera mais suporte do que uso efetivo, pelo menos até a coisa "engrenar".
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18161
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Mysql: consulta lenta

Mensagempor JoséQuintas » 27 Abr 2021 18:38

Se não me engano, quem baixa o Harbour pronto nem sabe que isso existe, e imagina que foram as LIBs que fizeram.

Direto do Harbour 3.2:

https://github.com/harbour/core/blob/master/extras/rddado/tests/mysql3.prg

#require "rddado"

// Testing LOCATE and CONTINUE

#include "adordd.ch"

REQUEST ADORDD

PROCEDURE Main()

   USE test00 VIA "ADORDD" TABLE "ACCOUNTS" MYSQL ;
      FROM "www.freesql.org" USER "myuser" PASSWORD "mypass"

   LOCATE FOR "City LIKE 'Chi*'"

   DO WHILE ! Eof()
      ? test00->First, test00->City
      CONTINUE
   ENDDO

   USE

   RETURN
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18161
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Mysql: consulta lenta

Mensagempor Itamar M. Lins Jr. » 27 Abr 2021 18:45

Olá!
ADO deixa preso, só funciona no Windows em qualquer linguagem de programação.

ADO não é SQL! Apenas isso. ADO é uma alternativa, não é a unica no windows. E está delegada a ultima opção. Todo mundo procura acesso nativo.
zeos usa conexão nativa com o banco de dados, ou seja a forma mais eficiente,

https://www.devmedia.com.br/forum/qual-melhor-forma-de-conexao-com-delphi/420968
Pq nas linguagens modernas isso tudo fica invisível na IDE.

Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6959
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 313 vezes
Mens.Curtidas: 508 vezes

Mysql: consulta lenta

Mensagempor Itamar M. Lins Jr. » 27 Abr 2021 19:02

Olá!
Talvez seja como eu falei: usar igual DBF acaba em confusão geral, e gera mais suporte do que uso efetivo, pelo menos até a coisa "engrenar".


Isso é na sua forma de pensar. SQLMIX não usa IGUAL ao DBF, ADO é a mesma coisa.
Como se grava usando ADO ?
Tem 2 formas, deixando a cargo do ADO ou usando SQL.
SQLMIX só grava na tabela via SQL.
Pq demora para a pessoa entender que precisa manipular o resultado.
Do while, skip, etc sempre vai existir com ADO ou usando DBF.
Até agora o problema que vejo é saber os comandos em SQL, não tem nada a ver com DBF.
Até pq todo mundo usa fora o SQL. Não se aprende SQL no ADO, vc usa HeidiSQL, vai testando, aprendendo depois que o resultado é o que vc deseja, coloca lá no Harbour o comando SQL, se vai voltar o resultado em ADO ou DBF, tanto faz. Agora o SQLMIX é nativo, não faz uso de DLL.

Saudações,
Itamar M. Lins Jr.
.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6959
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 313 vezes
Mens.Curtidas: 508 vezes

Mysql: consulta lenta

Mensagempor JoséQuintas » 27 Abr 2021 19:36

Itamar M. Lins Jr. escreveu:Talvez seja como eu falei: usar igual DBF acaba em confusão geral, e gera mais suporte do que uso efetivo, pelo menos até a coisa "engrenar".

Isso é na sua forma de pensar. SQLMIX não usa IGUAL ao DBF, ADO é a mesma coisa.


Vamos lá:

Pra que serve o SQLMIX?
Pra usar outras bases de dados que não sejam DBF, igual DBF.
Não é pra usar DBF, mas usando SQLMIX, você vai conseguir usar igual DBF.
Mas não é pra usar igual DBF, porque isso não é DBF, se usar igual DBF vai ficar lento.
E tem a vantagem de poder usar no Linux.

Resumo: SQLMIX é pra usar igual DBF, mas não é pra usar igual, é pra usar diferente

Não sei porque isso causaria confusão, é só usar igual DBF, mas diferente de DBF.

Itamar M. Lins Jr. escreveu:Todo mundo procura acesso nativo.


Caracas, um post perguntando opinião sobre acessos, foi traduzido pra "todo mundo usa"

e que tal esta parte:

dbexpress é do proprio delphi e só os driver que a borland/embarcadero desenvolver irao funcionar, ou seja alguns bancos nao tem disponivel


e que tal esta outra parte:

o dbexpress e o ado são intermediarios e tem bons desempenho tambem


Pois é.... daí pra dizer que todo mundo usa, acho que foi exagerado.

Vivemos na era da salada, de componentes, cada um escolhe o que acha interessante. Tem espaço pra tudo.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18161
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Mysql: consulta lenta

Mensagempor Itamar M. Lins Jr. » 27 Abr 2021 19:43

Olá!
O ADO permite que um desenvolvedor escreva programas que acessem dados sem saber como o banco de dados é implementado. Ele deve estar ciente do banco de dados apenas para conexão. Não é necessário conhecimento de SQL para acessar um banco de dados ao usar o ADO, embora se possa usar o ADO para executar comandos SQL diretamente. A desvantagem do último é que ele introduz uma dependência sobre o tipo de banco de dados utilizado.


https://pt.wikipedia.org/wiki/ActiveX_Data_Objects

Veja que é exatamente o contrário do que vc está tetando passar, dizendo que SQLMIX faz a pessoa não aprender SQL. Mas é usando o ADO que faz com que o usuário não aprenda SQL.

Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6959
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 313 vezes
Mens.Curtidas: 508 vezes

Mysql: consulta lenta

Mensagempor Itamar M. Lins Jr. » 27 Abr 2021 19:45

Olá!
Pra usar outras bases de dados que não sejam DBF, igual DBF.


Não é! Vc inventou isso. Não tem nada a ver isso que vc está dizendo.

Se o resultado fosse em ADO, seria SQLMIX da mesma forma.
Veja o drive do Rodrigo Moreno, não é uma coisa nem outra(DBF/ADO), mas precisa MANIPULAR, subir, descer, etc... Vai ficar fazendo isso na base de dados ?
Logico que é no "RESULT SET", vc sabe muito bem.

Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6959
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 313 vezes
Mens.Curtidas: 508 vezes

Mysql: consulta lenta

Mensagempor Itamar M. Lins Jr. » 27 Abr 2021 20:04

Olá!

foi traduzido pra "todo mundo usa"

Foi traduzido por quem ? por vc. ?
A frase "procura usar", não é a mesma coisa que escrever que "todo mundo usa". Mas se vc entende dessa forma e quer pq quer dizer que SQLMIX é usar DBF, fique a vontade.

Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6959
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 313 vezes
Mens.Curtidas: 508 vezes

Mysql: consulta lenta

Mensagempor Itamar M. Lins Jr. » 27 Abr 2021 20:16

Olá!
Outra coisa que vc escreveu e não é verdade.
ADO deixa preso, só funciona no Windows em qualquer linguagem de programação.


Java usa ?
PHP usa ?
Python usa ?
C usa ?
C++ usa ?
Ruby usa ?
Object Pascal usa ?

Nenhuma dessas, usa como padrão ADO, isso é o ultimo recurso, até pq , para JAVA e PHP e Python nem tem ADO.
Aqui em JAVA, Olhá ai o SKIP(.next) o While... etc.. Então é DBF ? é SQLMIX ?
 //STEP 5: Extract data from result set
      while(rs.next()){
         //Retrieve by column name
         int id  = rs.getInt("id");
         int age = rs.getInt("age");
         String first = rs.getString("first");
         String last = rs.getString("last");

         //Display values
         System.out.print("ID: " + id);
         System.out.print(", Age: " + age);
         System.out.print(", First: " + first);
         System.out.println(", Last: " + last);
      }
      //STEP 6: Clean-up environment
      rs.close();
      stmt.close();
      conn.close();


Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6959
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 313 vezes
Mens.Curtidas: 508 vezes

Anterior Próximo



Retornar para SQL

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 16 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro