From c100a2d1a6410eb56b42982018ba461a9b624355 Mon Sep 17 00:00:00 2001 From: yihong Date: Mon, 10 Feb 2025 11:59:18 +0800 Subject: [PATCH] fix: refactor pgkv using prepare_cache about 10% better (#5497) fix: refactor pgkv using prepare_cache about 15% better Signed-off-by: yihong0618 --- src/common/meta/src/kv_backend/postgres.rs | 27 +++++++++++++++------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/src/common/meta/src/kv_backend/postgres.rs b/src/common/meta/src/kv_backend/postgres.rs index 7f3333575a..01ea5bee4e 100644 --- a/src/common/meta/src/kv_backend/postgres.rs +++ b/src/common/meta/src/kv_backend/postgres.rs @@ -55,14 +55,25 @@ impl PgQueryExecutor<'_> { params: &[&(dyn ToSql + Sync)], ) -> Result> { match self { - PgQueryExecutor::Client(client) => client - .query(query, params) - .await - .context(PostgresExecutionSnafu { sql: query }), - PgQueryExecutor::Transaction(txn) => txn - .query(query, params) - .await - .context(PostgresExecutionSnafu { sql: query }), + PgQueryExecutor::Client(client) => { + let stmt = client + .prepare_cached(query) + .await + .context(PostgresExecutionSnafu { sql: query })?; + client + .query(&stmt, params) + .await + .context(PostgresExecutionSnafu { sql: query }) + } + PgQueryExecutor::Transaction(txn) => { + let stmt = txn + .prepare_cached(query) + .await + .context(PostgresExecutionSnafu { sql: query })?; + txn.query(&stmt, params) + .await + .context(PostgresExecutionSnafu { sql: query }) + } } }