項目拓展-簡易SQL監控,P6SPY攔截所有jdbc連接并打印執行SQL

介紹一下P6spy驅動

p6spy 是一款開源的數據庫監控框架,主要用于 攔截和記錄應用程序與數據庫之間的所有交互(如 SQL 語句、參數、執行時間等)

它通過包裝現有的 JDBC 驅動(如 MySQL JDBC 驅動),在不修改業務代碼的情況下,實現對數據庫操作的透明監控和分析。


p6spy 和普通 MySQL 驅動的區別

特性

普通 MySQL 驅動(如 mysql-connector-java

p6spy

核心功能

實現數據庫通信協議,執行 SQL 并返回結果。

攔截和增強現有 JDBC 驅動的功能,記錄 SQL 操作

日志能力

僅支持基礎日志(需手動配置,功能有限)。

提供詳細的 SQL 日志(含參數、執行時間、調用棧)。

代碼侵入性

無侵入,直接使用原生驅動。

無侵入,通過配置替換原生驅動為 p6spy 驅動。

性能開銷

低,僅處理數據庫通信。

有一定開銷(額外攔截和日志記錄)。

適用場景

生產環境直接操作數據庫。

開發/測試環境調試、性能優化、審計。


p6spy 的核心價值

透明監控

無需修改代碼,通過配置即可捕獲所有 SQL 操作

記錄完整的 SQL 語句(含動態參數)、執行時間、連接信息等

調試與優化

快速定位慢查詢(通過執行時間分析)。

驗證 SQL 參數是否正確綁定(避免 SQL 注入或邏輯錯誤)

日志增強

支持格式化輸出(如 JSON、SQL 美化)

可集成日志框架(如 Log4j、SLF4J)


P6spy使用快速入門

依賴

<dependency><groupId>com.github.klboke</groupId><artifactId>p6spy-spring-boot-starter</artifactId><version>1.0</version>
</dependency>

配置文件

application.yml

指定依賴:com.p6spy.engine.spy.P6SpyDriver

spring:application:name: Kira-Test  # 注意:YAML中使用冒號(:)而非等號(=)datasource:driver-class-name: com.p6spy.engine.spy.P6SpyDriverurl: jdbc:p6spy:mysql://127.0.0.1/mytestusername: rootpassword: 123456hikari:minimum-idle: 5            # 最小空閑連接數maximum-pool-size: 20      # 最大連接數idle-timeout: 60000        # 空閑連接超時時間(ms)max-lifetime: 1800000      # 連接最大存活時間(ms)connection-timeout: 20000  # 連接超時時間(ms)validation-timeout: 5000   # 驗證查詢超時時間(ms)leak-detection-threshold: 2000 # 連接泄漏檢測閾值(ms)logging:level:com.p6spy: DEBUGp6spy: DEBUG

spy.properties

p6spy的配置文件

module.log=com.p6spy.engine.logging.P6LogFactory,com.p6spy.engine.outage.P6OutageFactory#logMessageFormat=com.p6spy.engine.spy.appender.SingleLineFormat
logMessageFormat=com.p6spy.engine.spy.appender.CustomLineFormat
customLogMessageFormat=%(currentTime)| SQL耗時:%(executionTime) ms | 連接%(connectionId) | 執行的SQL語句:%(category) %(sql)appender=com.p6spy.engine.spy.appender.StdoutLoggerexcludecategories=info,debug,result,batc,resultsetderegisterdrivers=truedateformat=yyyy-MM-dd HH:mm:ssdriverlist=com.p6spy.engine.spy.P6SpyDriveroutagedetection=trueoutagedetectioninterval=2

控制臺輸出的sql細節

2025-04-11 11:23:44| SQL耗時:6 ms | 連接0 | 執行的SQL語句:statement insert into t_pha_trade (json_test) VALUES ('[{"installAdsNum":3,"retentionDuration":"30","retentionStrategy":"0.6,0.52,0.5"},{"installAdsNum":5,"retentionDuration":"45","retentionStrategy":"0.7,0.6,0.55,0.5"},{"installAdsNum":2,"retentionDuration":"20","retentionStrategy":"0.5,0.45"}]')

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/83928.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/83928.shtml
英文地址,請注明出處:http://en.pswp.cn/web/83928.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

洛谷B3951 [GESP樣題 五級] 小楊的隊列

題目描述 小楊的班級里共有 N N N 名同學&#xff0c;學號從 0 0 0 至 N ? 1 N-1 N?1。某節課上&#xff0c;老師要求同學們進行列隊。具體來說&#xff0c;老師會依次點名 M M M 名同學&#xff0c;讓他們加入隊伍。每名新入隊的同學需要先站到隊伍末尾&#xff08;剛開…

Java編程之外觀模式

前言 想象你要去一家很復雜的餐廳吃飯&#xff0c;但不想自己點菜、排隊、找位置&#xff0c;也不想管廚房、洗碗、送餐這些后端流程。你只需要告訴餐廳服務員“我要一份牛排套餐”&#xff0c;然后坐等就好。這個服務員&#xff0c;就是外觀模式&#xff08;Facade Pattern&a…

告別 Java 開發困境!飛算 JavaAI 開發助手開啟智能編程新時代

在 Java 開發的世界里&#xff0c;需求不明確、加班寫重復代碼、被 BUG 搞得焦頭爛額&#xff0c;是許多開發者難以擺脫的 “三座大山”。需求文檔模糊不清&#xff0c;讓開發者在項目起始階段就陷入迷茫&#xff1b;大量重復性的代碼編寫工作&#xff0c;不僅消耗時間和精力&a…

Node.js 中兩種模塊導出方式區別

兩種模塊到處方式 exports.xxx ... module.exports ... 1. exports.xxx ... exports 是 module.exports 的一個引用&#xff08;快捷方式&#xff09;。 當你寫 exports.foo function() {}&#xff0c;實際上就是給 module.exports 對象添加了一個 foo 屬性。 這種方式…

電腦出問題了,無網絡環境下一鍵快速重裝系統

在電腦使用過程中&#xff0c;系統故障、卡頓、崩潰等問題屢見不鮮。面對這些情況&#xff0c;重裝系統往往是解決問題的最有效手段之一。然而對于剛接觸計算機操作的新用戶來說&#xff0c;如何安全、穩定地完成系統重裝&#xff0c;仍是一個頗具挑戰的任務。 這一款專為新手…

基于區塊鏈的去中心化身份驗證系統:原理、實現與應用

前言 在數字化時代&#xff0c;身份驗證是網絡安全和隱私保護的核心環節。傳統的身份驗證系統依賴于中心化的機構&#xff0c;如政府、銀行或互聯網服務提供商&#xff0c;這些機構存儲和管理用戶的個人信息。然而&#xff0c;中心化系統存在諸多問題&#xff0c;如數據泄露風險…

React forwardRef 與 useImperativeHandle 深度解析

在React開發中&#xff0c;組件間的通信是一個核心話題。雖然props和state能夠處理大部分場景&#xff0c;但有時我們需要更直接的方式來操作子組件。今天我們來深入探討兩個強大的React Hook&#xff1a;forwardRef和useImperativeHandle。 forwardRef&#xff1a;傳遞引用的…

KingbaseES在線體驗平臺深度測評:基于MCP接口管理的Oracle風格SQL實戰

文章目錄 一、平臺環境與準備二、引導體驗1.檢查數據庫版本及服務狀態 三、建庫與建表1. 建庫&#xff08;KingbaseES中通常無需顯式建庫&#xff0c;此處以創建schema模擬&#xff09;2. 建表 四、查庫與數據操作測試1. 查庫&#xff08;確認表結構&#xff09;2. 新增數據3. …

echarts開發 | 數據可視化 -- 第三篇 echart進階配置項 數據集

文章目錄 一、概念二、回顧在系列(series)中設置數據三、在數據集中設置數據3.1 數據集(dataset) 基礎3.2 二維數組數據(默認) 四、把數據集(dataset) 的行或列 映射為 序列 (series)五、維度(dimension)六、數據到圖形的映射 &#xff08;series.encode&#xff09; 一、概念 …

如何科學測算AI業務場景所需算力服務器?——以Qwen3 32B模型與海光K100為例

在人工智能&#xff08;AI&#xff09;技術飛速發展的今天&#xff0c;越來越多企業開始部署大模型應用&#xff0c;如智能問答、文本生成、知識圖譜構建等。但如何合理配置硬件資源&#xff0c;既滿足業務需求又避免資源浪費&#xff0c;是每個項目實施前必須解決的問題。 本…

滲透實戰:利用XSS獲取cookie和密碼

操作均來自靶場&#xff0c;切勿用于未授權滲透測試&#xff01; Lab 21&#xff1a;將反射型 XSS 注入帶有尖括號、單引號、雙引號、反斜杠和反引號的 Unicode 轉義模板文字中 輸入的任何單引號雙引號尖括號都會被 unicode 編碼 直接換另一種代碼執行方式${alert(1)}&#…

Eureka、Nacos、Zookeeper 優雅上下線機制

? 三大注冊中心優雅上下線機制對比 維度EurekaNacosZookeeper注冊方式客戶端注冊 心跳維持客戶端注冊 心跳維持客戶端創建臨時節點服務可用狀態控制STARTING、UP、DOWN、OUT_OF_SERVICEUP、DOWN、STARTING 等無顯式狀態標識&#xff0c;靠節點存在與否判定上線控制方式通過…

Flink與Kubernetes集成

引言 在當今大數據與云計算蓬勃發展的時代&#xff0c;容器編排與流處理技術成為企業數據處理架構的關鍵支柱。Kubernetes作為容器編排系統的行業標準&#xff0c;能夠高效自動化地部署、擴展和管理計算機應用程序&#xff1b;Apache Flink則是流處理和批處理領域的佼佼者&…

第五節:Vben Admin 最新 v5.0 (vben5) 快速入門 - 角色管理模塊(上)

Vben5 系列文章目錄 ?? 基礎篇 ? 第一節:Vben Admin 最新 v5.0 (vben5) 快速入門 ? 第二節:Vben Admin 最新 v5.0 (vben5) 快速入門 - Python Flask 后端開發詳解(附源碼) ? 第三節:Vben Admin 最新 v5.0 (vben5) 快速入門 - 對接后端登錄接口(上) ? 第四節:Vben Ad…

實施企業預算管理的企微CRM系統技巧:從成本控制到價值創造

一、企微CRM管理系統為何成為預算管理新引擎? 官方數據顯示&#xff0c;接入企微CRM系統的企業平均降低客戶管理成本28%&#xff0c;預算執行效率提升40%。這源于企微CRM管理軟件的三大獨特優勢&#xff1a; 原生集成能力&#xff1a;與企業微信通訊錄、會話存檔無縫對接&…

WebFuture:手機版頁面部分區域報錯:未將對象引用設置到對象的實例

問題描述&#xff1a; 手機版頁面部分區域報錯&#xff1a;未將對象引用設置到對象的實例&#xff0c;PC板訪問正常。 問題分析&#xff1a; 對比PC和手機頁面模板&#xff0c;調用代碼有以下差異&#xff0c;手機版模板沒兼容null值&#xff0c;簡介為空導致報錯。 解決方法…

【Cursor點擊登錄后一直轉圈,無反應】

Cursor點擊登錄后一直轉圈&#xff0c;無反應 一、問題描述二、解決方案 一、問題描述 1、進入Cursor官網&#xff08;國際版&#xff09;&#xff1a; Cursor國際版地址 2、填入賬號密碼&#xff0c;點擊登錄 3、一直轉圈&#xff0c;無法登錄 二、解決方案 使用梯子&…

【無標題】世界模型

為什么大語言模型&#xff0c;沒有真正推動經濟大幅增長&#xff0c;但世界模型有可能 5月份谷歌IO大會&#xff0c;DeepMind老板&#xff08;谷歌AI業務負責人&#xff0c;2024Nobel化學獎得主&#xff0c;黛密斯哈薩比斯&#xff09;提到&#xff0c;谷歌接下來目標是做世界…

Doc2X:?精度、?性價??檔解析 API,助力Arxiv論文智能解讀Agent構建

前言 在AI大模型時代&#xff0c;RAG&#xff08;Retrieval-Augmented Generation&#xff09;檢索增強生成技術已經成為構建智能知識庫和問答系統的核心架構。然而&#xff0c;在實際項目實施過程中&#xff0c;開發者們往往會遇到一個關鍵痛點&#xff1a;如何高質量地將各種…

uniapp 對接deepseek

廢話不多說直接上代碼 // 小程序專用流式服務 export const streamChatMiniProgram (messages, options {secret: "" }) > {return new Promise((resolve, reject) > {// 構建請求數據 const requestData {model: deepseek-chat,messages,stream: true,ma…