?
?
一、主要用途:
? ? ?采用對(duì)應(yīng)用系統(tǒng)無侵入的方式,截獲并記錄應(yīng)用系統(tǒng)訪問數(shù)據(jù)庫(kù)的所有記錄,并進(jìn)行初步分析后,得出對(duì)數(shù)據(jù)庫(kù)索引的建立建議。
?
二、配置和使用步驟:
1、配置待測(cè)試應(yīng)用系統(tǒng)
? ? ? ? ? ? 添加 P6Spy.jar ,并修改應(yīng)用的數(shù)據(jù)庫(kù)驅(qū)動(dòng)為“ com.p6spy.engine.spy.P6SpyDriver ” 。
2、配置P6Spy
? ? ? ? ? ? 將 spy.properties 放在應(yīng)用的classes目錄下,然后將原來的JDBC驅(qū)動(dòng)類配置到P6spy的配置文件spy.properties中的realdriver項(xiàng)就可以了。注意盡量不要修改其他配置,尤其是其中的logger配置。
3、啟動(dòng)SQLProfiler
? ? ?SQLProfile是一個(gè)獨(dú)立的應(yīng)用程序,啟動(dòng)方式為在
sqlprofiler.jar
所在
目錄中執(zhí)行命令行:java –jar sqlprofiler.jar命令。
4、執(zhí)行測(cè)試:
? ? ?然后啟動(dòng)應(yīng)用,或者在執(zhí)行應(yīng)用需要監(jiān)控的操作之前啟動(dòng)SQLProfiler也可。可以根據(jù)實(shí)際情況靈活使用。
至此,直接操作應(yīng)用和SQLProfiler界面進(jìn)行監(jiān)控、分析即可得到。
?
三、附錄: P6Spy + SQLProfiler項(xiàng)目紹
1、P6spy
? ? P6spy 是一個(gè)基于 Java 的開源的項(xiàng)目,它所能實(shí)現(xiàn)的功能就是將應(yīng)用系統(tǒng)訪問數(shù)據(jù)庫(kù)的情況記錄下來,它所記錄的數(shù)據(jù)包括發(fā)送的實(shí)際語(yǔ)句、預(yù)編譯語(yǔ)句、語(yǔ)句執(zhí)行的時(shí)間、執(zhí)行語(yǔ)句消耗時(shí)間、執(zhí)行語(yǔ)句的數(shù)據(jù)庫(kù)連接編號(hào)等。
其格式為:
1124430077712|266|1|statement||select count(*) as nodeTotalNum from wr_Activity where procinstid= ?| select count(*) as nodeTotalNum from wr_Activity where procinstid= 1
表示在 2005.08.19 01:41:17.712 時(shí)編號(hào)為 1 的 statement 向數(shù)據(jù)庫(kù)發(fā)送了“ select count(*) as nodeTotalNum from wr_Activity where procinstid= 1 ” 的 SQL 請(qǐng)求,它的與編譯語(yǔ)句為“ select count(*) as nodeTotalNum from wr_Activity where procinstid= ?”,該語(yǔ)句在數(shù)據(jù)庫(kù)中的執(zhí)行時(shí)間為 266 毫秒。
? ? P6spy的優(yōu)點(diǎn)就是 不侵入應(yīng)用系統(tǒng),而且非常容易配置。 ? P6spy 官方網(wǎng)站 http://www.p6spy.com/documentation/index.htm 。
?
2、 SQLProfiler
?
從上面的 P6spy 的介紹中我們可以看到, P6spy 生成的記錄是一個(gè)被格式化后的字符串,閱讀起來比較困難,更不利于分析。 SQLProfiler 是一個(gè)基于 Java 的開源項(xiàng)目(已經(jīng)中止),它能夠?qū)? P6spy 記錄的日志通過一個(gè)界面來顯示出來。
??
? ? SQLProfiler 是一個(gè)單獨(dú)運(yùn)行的 Java 應(yīng)用程序,它和 P6spy 是通過 Java socket 來進(jìn)行通訊的。 SQLProfiler 運(yùn)行后啟動(dòng)一個(gè)服務(wù)并不斷的監(jiān)聽指定端口,當(dāng) P6spy 需要記錄日志時(shí)就會(huì)通過 socket 連接到 SQLProfiler 發(fā)送日志信息。
??
? ? SQLProfiler 不僅僅使 P6spy 記錄文件易于閱讀,它還對(duì)數(shù)據(jù)庫(kù)執(zhí)行過的語(yǔ)句進(jìn)行分類和統(tǒng)計(jì),統(tǒng)計(jì)出這些 SQL 語(yǔ)句的執(zhí)行次數(shù)、總執(zhí)行時(shí)間以及這類語(yǔ)句在所有的數(shù)據(jù)庫(kù)語(yǔ)句執(zhí)行時(shí)間中所占用的比例。另外對(duì)一些條件查詢和更新語(yǔ)句還分析出該語(yǔ)句涉及到數(shù)據(jù)庫(kù)表的那些字段(便于建立索引)并能自動(dòng)生成創(chuàng)建數(shù)據(jù)庫(kù)索引語(yǔ)句。
?
?
? ? 另外: Sqlprofiler 還提供了簡(jiǎn)單的分析功能,它能夠通過折線圖的形式直觀的表示發(fā)生的語(yǔ)句數(shù)量與時(shí)間的關(guān)系、向數(shù)據(jù)發(fā)送數(shù)據(jù)量于時(shí)間關(guān)系以及數(shù)據(jù)庫(kù)輸出數(shù)據(jù)量與實(shí)踐的關(guān)系。
?
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
