"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Por qué mi consulta de base de datos/SQL es significativamente más lenta que una consulta PSQL Postgres directa?

¿Por qué mi consulta de base de datos/SQL es significativamente más lenta que una consulta PSQL Postgres directa?

Publicado el 2025-02-06
Navegar:457

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

consulta usando la base de datos/sql significativamente más lento que consultar la base de datos directamente

a pesar de usar consultas idénticas, existe una discrepancia de rendimiento notable entre ejecutar A a A Consulte directamente con la utilidad PSQL de Postgres y utilizando el paquete de base de datos/SQL en una aplicación GO. Esta discrepancia, donde las consultas que toman milisegundos en PSQL toman decenas de milisegundos en GO, podría atribuirse a factores específicos en la implementación.

Comprender las conexiones de la base de datos/SQL

] La base de datos/SQL inicializa un grupo de conexión para establecer conexiones a la base de datos, en lugar de crear una sola conexión. El retraso inicial en la ejecución de la consulta en la base de datos/SQL se debe a que el grupo comienza con cero conexiones abiertas. La primera consulta debe establecer una conexión al servidor antes de ejecutar la instrucción SQL.

consultas posteriores también enfrentan retrasos ya que la conexión desde la primera consulta no se ha lanzado de nuevo al grupo. Esto significa que cada consulta posterior necesita crear una nueva conexión antes de ejecutar la consulta.

liberando conexiones nuevamente al grupo

para resolver la discrepancia de rendimiento, asegure que las conexiones se lanzan de nuevo a la piscina después de cada consulta. La liberación de una conexión implica retener el valor de retorno principal de db.Query y posteriormente llamar al método de cierre en él.

inicializando el grupo con una conexión abierta

para mitigar el Retraso inicial, llame a Ping en el grupo de conexión inmediatamente después de la inicialización. Esto garantiza que al menos una conexión esté disponible en el grupo.

preparó declaraciones

aunque consultas simples sin argumentos se ejecutan como se esperan, consultas con argumentos en la base de datos/sql En realidad, cree y ejecute declaraciones preparadas debajo del capó. Las declaraciones preparadas ofrecen beneficios de rendimiento al ejecutar la misma consulta varias veces con diferentes argumentos.

abordando la latencia adicional

además de la gestión de la conexión y las declaraciones preparadas, puede haber factores de latencia adicionales adicionales Para considerar:

  • Latency de red: el retraso causado por la transferencia de datos a través de la red entre la aplicación y la base de datos.
  • Servidor Load: La carga de trabajo del servidor de la base de datos puede afectar los tiempos de ejecución de consultas.

abordando estos factores e implementando las recomendaciones proporcionadas, el rendimiento de las consultas utilizando la base de datos/SQL puede mejorarse significativamente, lo que hace que sea comparable a la consulta de la consulta base de datos directamente.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3