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

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