"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Por que minha consulta Go Bathabase/SQL é significativamente mais lenta que uma consulta direta do Postgres PSQL?

Por que minha consulta Go Bathabase/SQL é significativamente mais lenta que uma consulta direta do Postgres PSQL?

Postado em 2025-02-06
Navegar:929

Why is my Go database/sql Query Significantly Slower Than a Direct Postgres psql Query?

consulta usando o banco de dados/sql significativamente mais lento do que consultar o banco de dados diretamente

Apesar de usar consultas idênticas, existe um discrepância de desempenho notável entre a execução a. Consulta diretamente usando o utilitário PSQL do PostGres e usando o pacote de banco de dados/SQL em um aplicativo Go. Essa discrepância, onde as consultas que levam milissegundos no PSQL levam dezenas de milissegundos em Go, podem ser atribuídos a fatores específicos na implementação. O banco de dados/SQL inicializa um pool de conexão para estabelecer conexões com o banco de dados, em vez de criar uma única conexão. O atraso inicial na execução da consulta no banco de dados/SQL é porque o pool começa com zero conexões abertas. A primeira consulta deve estabelecer uma conexão com o servidor antes de executar a instrução SQL. Isso significa que cada consulta subsequente precisa criar uma nova conexão antes de executar a consulta. são liberados de volta à piscina após cada consulta. A liberação de uma conexão envolve a retenção do valor de retorno primário do db.Query e, posteriormente, chamando o método de fechamento. Atraso inicial, ligue para o ping no pool de conexão imediatamente após a inicialização. Isso garante que pelo menos uma conexão esteja disponível no pool. Na verdade, crie e execute declarações preparadas sob o capô. As declarações preparadas oferecem benefícios de desempenho ao executar a mesma consulta várias vezes com argumentos diferentes. Para considerar:

Latência da rede:

o atraso causado pela transferência de dados sobre a rede entre o aplicativo e o banco de dados. &&&] A carga de trabalho do servidor de banco de dados pode afetar os tempos de execução da consulta. banco de dados diretamente.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3