From ef2c26fed724e476a212ef0f8e0453501ed1ad9d Mon Sep 17 00:00:00 2001 From: swjtu-wenxiang Date: Thu, 12 Dec 2024 05:46:03 +0000 Subject: [PATCH] [CP] [to #2024120300105879431]Modify the request_memory_used_bit in the spi sql audit to use memory for sql execution. --- src/observer/mysql/ob_mysql_request_manager.cpp | 4 ++++ src/pl/diagnosis/ob_pl_sql_audit_guard.cpp | 10 +++++++++- src/pl/diagnosis/ob_pl_sql_audit_guard.h | 4 ++++ src/sql/monitor/ob_exec_stat.h | 2 ++ 4 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/observer/mysql/ob_mysql_request_manager.cpp b/src/observer/mysql/ob_mysql_request_manager.cpp index 4e460c902..36426916e 100644 --- a/src/observer/mysql/ob_mysql_request_manager.cpp +++ b/src/observer/mysql/ob_mysql_request_manager.cpp @@ -239,6 +239,10 @@ int ObMySQLRequestManager::record_request(const ObAuditRecordData &audit_record, record->data_.proxy_user_name_ = buf + pos; pos += user_len; } + if (nullptr != audit_record.sql_memory_used_) { + record->data_.request_memory_used_ = *audit_record.sql_memory_used_; + } + //for find bug // only print this log if enable_perf_event is enable, // for `receive_ts_` might be invalid if `enable_perf_event` is false diff --git a/src/pl/diagnosis/ob_pl_sql_audit_guard.cpp b/src/pl/diagnosis/ob_pl_sql_audit_guard.cpp index 177822101..f0e96a33f 100644 --- a/src/pl/diagnosis/ob_pl_sql_audit_guard.cpp +++ b/src/pl/diagnosis/ob_pl_sql_audit_guard.cpp @@ -39,7 +39,11 @@ ObPLSqlAuditGuard::ObPLSqlAuditGuard( ps_sql_(ps_sql), retry_ctrl_(retry_ctrl), traceid_guard_(traceid_guard), - stmt_type_(stmt_type) + stmt_type_(stmt_type), + sql_used_memory_size_(0), + pmcb_(0, sql_used_memory_size_), + memory_guard_(pmcb_) + { enable_perf_event_ = lib::is_diagnose_info_enabled(); enable_sql_audit_ = GCONF.enable_sql_audit && session_info_.get_local_ob_enable_sql_audit(); @@ -56,6 +60,7 @@ ObPLSqlAuditGuard::ObPLSqlAuditGuard( } // 监控项统计开始 record_.time_record_.set_send_timestamp(ObTimeUtility::current_time()); + session_info_.get_raw_audit_record().sql_memory_used_ = &sql_used_memory_size_; } ObPLSqlAuditGuard::~ObPLSqlAuditGuard() @@ -114,6 +119,9 @@ ObPLSqlAuditGuard::~ObPLSqlAuditGuard() LOG_WARN("result_set is null", K(ret_), K(ps_sql_)); } } + if(nullptr != session_info_.get_raw_audit_record().sql_memory_used_) { + session_info_.get_raw_audit_record().sql_memory_used_ = nullptr; + } } } // namespace pl diff --git a/src/pl/diagnosis/ob_pl_sql_audit_guard.h b/src/pl/diagnosis/ob_pl_sql_audit_guard.h index 76bf242ac..8751c36bb 100644 --- a/src/pl/diagnosis/ob_pl_sql_audit_guard.h +++ b/src/pl/diagnosis/ob_pl_sql_audit_guard.h @@ -17,6 +17,7 @@ #include "sql/monitor/ob_exec_stat.h" #include "observer/ob_inner_sql_connection.h" #include "sql/resolver/ob_stmt_type.h" +#include "observer/mysql/obmp_base.h" namespace oceanbase { @@ -127,6 +128,9 @@ private: sql::stmt::StmtType stmt_type_; ObExecutingSqlStatRecord sqlstat_record_; + int64_t sql_used_memory_size_; + observer::ObProcessMallocCallback pmcb_; + lib::ObMallocCallbackGuard memory_guard_; }; } diff --git a/src/sql/monitor/ob_exec_stat.h b/src/sql/monitor/ob_exec_stat.h index 27ef5f6f2..6fd780d46 100644 --- a/src/sql/monitor/ob_exec_stat.h +++ b/src/sql/monitor/ob_exec_stat.h @@ -323,6 +323,7 @@ struct ObAuditRecordData { is_perf_event_closed_ = false; pl_trace_id_.reset(); stmt_type_ = sql::stmt::T_NONE; + sql_memory_used_ = nullptr; } int64_t get_elapsed_time() const @@ -445,6 +446,7 @@ struct ObAuditRecordData { stmt::StmtType stmt_type_; uint64_t total_memstore_read_row_count_; uint64_t total_ssstore_read_row_count_; + int64_t *sql_memory_used_; }; } //namespace sql