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

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

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

    如鵬網(wǎng) 大學(xué)生計(jì)算機(jī)學(xué)習(xí)社區(qū)

    CowNew開源團(tuán)隊(duì)

    http://www.cownew.com 郵件請聯(lián)系 about521 at 163.com

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

    CowNew開源團(tuán)隊(duì)網(wǎng)站 http://www.cownew.com
    論壇 http://www.cownew.com/newpeng/
    轉(zhuǎn)載請注明此版權(quán)信息

    我準(zhǔn)備給JDBMonitor增加一個(gè)性能監(jiān)測報(bào)表的功能。用戶在“報(bào)表?xiàng)l件”中填寫要統(tǒng)計(jì)的起始時(shí)間、結(jié)束時(shí)間和單位時(shí)間后,點(diǎn)擊查詢。程序從DataBaseDBListener記錄的表T_LOG_SQLLog中進(jìn)行統(tǒng)計(jì)并顯示報(bào)表。例如:用戶在起始時(shí)間中輸入”2006-5-30 18:00:00”,結(jié)束時(shí)間輸入”2006-6-1 12:00:00”,時(shí)間單位選擇“5分鐘”,點(diǎn)擊“查詢”。程序?qū)裈_LOG_SQLLog中FbeginTime大于等于”2006-5-30 18:00:00”,小于等于”2006-6-1 12:00:00”的記錄過濾出來。然后統(tǒng)計(jì)每5分鐘記錄的條數(shù)(也就是數(shù)據(jù)庫執(zhí)行的次數(shù)),以時(shí)間序列圖的形式顯示成報(bào)表。
    比如:
    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

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

    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


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

    posted on 2006-06-12 01:30 CowNew開源團(tuán)隊(duì) 閱讀(1080) 評論(0)  編輯  收藏

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


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 成人免费a级毛片无码网站入口| 亚洲免费观看视频| 亚洲人成人一区二区三区| 国产一区二区免费| 久久久久国产成人精品亚洲午夜| 国产亚洲精品美女久久久久| 国产va精品免费观看| 亚洲理论片在线中文字幕| 免费人成视频在线观看网站 | 免费人成视频x8x8入口| 亚洲一日韩欧美中文字幕在线| 免费无码肉片在线观看| 久久精品国产亚洲av麻豆图片 | 精品成人一区二区三区免费视频 | 成人在线视频免费| 国产va免费精品| 国产国拍精品亚洲AV片| 一区二区三区在线免费观看视频 | 午夜性色一区二区三区免费不卡视频 | 国产精品亚洲а∨无码播放| 中文字幕一区二区三区免费视频| 亚洲?V无码乱码国产精品| 特级毛片A级毛片免费播放| 亚洲精品456播放| 一个人免费观看www视频| 亚洲国产精品综合久久2007| 在线精品一卡乱码免费| 亚洲一区二区三区在线观看网站| 国产精品亚洲不卡一区二区三区| 国产麻豆成人传媒免费观看| 日韩国产欧美亚洲v片| 国产乱辈通伦影片在线播放亚洲| 国产精彩免费视频| 中文字幕免费在线观看动作大片| 亚洲日韩国产一区二区三区在线 | 无人在线直播免费观看| 毛片基地看看成人免费| 亚洲第一成年网站大全亚洲| 久久久久亚洲AV成人网| 国产免费观看黄AV片| 黄网站免费在线观看|