<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    如鵬網 大學生計算機學習社區(qū)

    CowNew開源團隊

    http://www.cownew.com 郵件請聯系 about521 at 163.com

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      363 隨筆 :: 2 文章 :: 808 評論 :: 0 Trackbacks

    CowNew開源團隊網站 http://www.cownew.com
    論壇 http://www.cownew.com/newpeng/
    轉載請注明此版權信息

    我準備給JDBMonitor增加一個性能監(jiān)測報表的功能。用戶在“報表條件”中填寫要統(tǒng)計的起始時間、結束時間和單位時間后,點擊查詢。程序從DataBaseDBListener記錄的表T_LOG_SQLLog中進行統(tǒng)計并顯示報表。例如:用戶在起始時間中輸入”2006-5-30 18:00:00”,結束時間輸入”2006-6-1 12:00:00”,時間單位選擇“5分鐘”,點擊“查詢”。程序將把T_LOG_SQLLog中FbeginTime大于等于”2006-5-30 18:00:00”,小于等于”2006-6-1 12:00:00”的記錄過濾出來。然后統(tǒng)計每5分鐘記錄的條數(也就是數據庫執(zhí)行的次數),以時間序列圖的形式顯示成報表。
    比如:
    fid?????? ftime
    1?2006-05-05 10:00:00.000
    2?2006-05-05 10:00:01.000
    3?2006-05-05 10:00:10.000
    4?2006-05-05 10:01:10.000
    5?2006-05-05 10:01:20.000

    這樣的數據屬于離散的數據,因為數據庫的執(zhí)行時間是不確定的,要把它們按統(tǒng)計它們的出現次數常常需要使用數據挖掘的東西。數據挖掘通常都是不同的數據庫有不同的實現的,JDBMonitor是跨數據庫的,因此肯定不能使用這些數據庫特有的東西。現在也有一些開源的跨數據庫的數據挖掘引擎,但是其尺寸巨大無比,都要50M以上。JDBMonitor是一個小的工具,為了方便部署和使用,JDBMontior的一個基本原則就是盡量避免使用JDK之外的類,所以肯定不能使用它們。我經過仔細思考,發(fā)現可以通過如下技巧來解決:

    select count(sub.f) as exeCount,min(sub.FBeginTime) as FTime from(
    select cast(DateDiff(ss,?,FBeginTime)/? as int) as f,FBeginTime from T_LOG_SQLLog
    )as sub
    where 1=1
    and FBeginTime>=?
    and FBeginTime<=?
    group by sub.f
    order by sub.f ASC


    其中第一、三個參數傳遞用戶選擇的時間段的起始時間,第二個參數是用戶選擇的計時間隔(以秒為單位),參數四是用戶選擇的時間段的結束時間。
    我采用的是整除的技巧來實現的這個效果。
    其中FBeginTime是SQL語句執(zhí)行的開始時間(在這里我們就把它看作SQL語句的執(zhí)行時間),cast(DateDiff(ss,?,FBeginTime)/? as int) as f的意思就是計算SQL語句的執(zhí)行時間到選擇的時間段的起始時間之間的秒間隔數,然后再整除用戶選擇的計時間隔(以秒為單位)。經過整除以后同一個時間段內的數據就相同了,然后我們一個groupby,然后一個count(sub.f),這樣各個時間段sql的執(zhí)行次數就出來了。
    以上邊的數據為例,假如我輸入的起始時間是2006-05-05 10:00:00.000,結束時間是2006-05-05 10:02:00.000。
    那么select cast(DateDiff(ss,?,FBeginTime)/? as int) as f,FBeginTime from T_LOG_SQLLog的結果集就是:
    f? FBeginTime
    0 2006-05-05 10:00:00.000?
    0 2006-05-05 10:00:01.000?
    0 2006-05-05 10:00:10.000
    1 2006-05-05 10:01:00.000
    1 2006-05-05 10:01:00.000?
    然后,以f為分組條件進行匯總,并統(tǒng)計f的count,這樣各個時間段sql的執(zhí)行次數就出來了:
    3 2006-05-05 10:00:00.000?
    2 2006-05-05 10:01:00.000?
    當然不同的數據庫的計算日期時間差和截取整數的方式是略有差異的,我這里用的是mssqlserver的語法。

    posted on 2006-06-12 01:30 CowNew開源團隊 閱讀(1086) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發(fā)表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲2022国产成人精品无码区 | 亚洲成a人片在线观看日本| 另类小说亚洲色图| 国产公开免费人成视频| 国产精品免费看久久久| 久久亚洲2019中文字幕| 国产精品综合专区中文字幕免费播放 | 亚洲国产精品综合久久2007| 日本高清免费观看| 99久久精品国产亚洲| 国产91免费在线观看| 免费在线黄色网址| 日本永久免费a∨在线视频| 亚洲区日韩区无码区| 国产免费牲交视频免费播放| 国产亚洲欧洲Aⅴ综合一区| 女人隐私秘视频黄www免费| 亚洲v高清理论电影| 美女被cao免费看在线看网站| 亚洲精品无码高潮喷水A片软| 最好免费观看韩国+日本| 免费无码国产在线观国内自拍中文字幕| 亚洲精品国产精品乱码不卡| 中文字幕在线视频免费观看| 亚洲网址在线观看你懂的| 国产大片线上免费观看| 免费一级毛片在线播放视频免费观看永久 | xxxxx做受大片视频免费| 日本亚洲欧洲免费天堂午夜看片女人员 | 亚洲成a人片在线观看老师| 91视频免费观看高清观看完整| 亚洲人成网站影音先锋播放| 日本一区二区三区免费高清| 美国毛片亚洲社区在线观看| 国产v亚洲v天堂无码网站| 日韩一区二区a片免费观看| 一级特黄录像免费播放中文版| 亚洲综合日韩中文字幕v在线| 在线成人a毛片免费播放| 人妻在线日韩免费视频| 亚洲 日韩 色 图网站|