Consultas lentas do Data Explorer

Criei algumas consultas do Data Explorer.

Se as executo no backend de administração, a GUI mostra um tempo de execução muito rápido para a consulta do banco de dados em si, por exemplo, “Consulta concluída em 7,9 ms”.

O log de rede do meu navegador mostra que, por exemplo, https://example.com/admin/plugins/explorer/queries/1/run foi acessado e que levou de 1 a 2 ordens de magnitude mais tempo para obter o resultado, por exemplo, 150 ms.

Quando eu curl tal consulta, leva ainda mais tempo, cerca de o dobro do tempo em comparação com a execução da consulta no painel de administração.

Como posso ter consultas do Data Explorer que eu possa recuperar rapidamente sem tanta sobrecarga?

1 curtida

Com base nas informações que você forneceu, eu diria que essas são consultas simples (rápidas de executar no SGBD), que retornam muitas linhas (lentas para desserializar no backend e transferir).

Se o desempenho atual estiver bloqueando seu caso de uso, existem muitas soluções diferentes que você pode explorar:

  • Diminuir a contagem de linhas por página, para que cada página seja mais rápida.

  • Criar um plugin que exponha as mesmas informações em um novo endpoint de API e seja mais inteligente sobre cache e formato de dados.

  • Consultar diretamente o banco de dados subjacente.

3 curtidas

Temos pesquisas mágicas para certos nomes de colunas (user_id, post_id, etc.) e as apelidamos para algo como post_id1, etc.

1 curtida

Obrigado, pessoal!

É o mesmo se eu tiver apenas uma única linha como resultado de uma consulta. Por exemplo, uma consulta que retorna um único inteiro, executada no painel do Explorador de Dados no backend de administração, leva 9 ms; executada de fora contra a API do Explorador de Dados via curl, leva 200 ms.

Eu gostaria muito de evitar isso, uso o Explorador de Dados porque foi sugerido nestes fóruns como uma boa maneira de obter informações do banco de dados e uma API que funciona bem para isso.

Minha consulta os usa para JOINs, mas não no conjunto de resultados. O SELECT tem apenas uma coluna, e essa é uma recém-calculada com um nome arbitrário.

O que o NGINX diz que é o tempo do servidor para a solicitação, isso pode ser um problema de rede?

Assumindo que esses são os números de ponto flutuante 3 casas à direita do código de status HTTP (por exemplo, ... 200 642 "-" **0.107 0.108** "system" ..., destacados com estrelas por mim), eles são cerca de 10 vezes a duração do tempo de consulta relatado no backend e praticamente exatamente a metade do tempo que leva para curl do meu cliente.