From 1abbb2a48db88e2c7dbd20864caaac0d46397bb8 Mon Sep 17 00:00:00 2001 From: "shrek.wang" Date: Fri, 17 Aug 2012 15:54:07 +0800 Subject: [PATCH 1/2] add fetchRowCountMax in JdbcSqlStat --- .../com/alibaba/druid/stat/JdbcSqlStat.java | 29 ++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/alibaba/druid/stat/JdbcSqlStat.java b/src/main/java/com/alibaba/druid/stat/JdbcSqlStat.java index c0c26bcdaa..42fe1aa40d 100644 --- a/src/main/java/com/alibaba/druid/stat/JdbcSqlStat.java +++ b/src/main/java/com/alibaba/druid/stat/JdbcSqlStat.java @@ -58,7 +58,9 @@ public final class JdbcSqlStat implements JdbcSqlStatMBean { private long executeErrorLastTime; private final AtomicLong updateCount = new AtomicLong(); + private final AtomicLong updateCountMax = new AtomicLong(); private final AtomicLong fetchRowCount = new AtomicLong(); + private final AtomicLong fetchRowCountMax = new AtomicLong(); private final AtomicLong inTransactionCount = new AtomicLong(); @@ -199,7 +201,9 @@ public final class JdbcSqlStat implements JdbcSqlStatMBean { executeErrorLastTime = 0; updateCount.set(0); + updateCountMax.set(0); fetchRowCount.set(0); + fetchRowCountMax.set(0); histogram.reset(); this.lastSlowParameters = null; @@ -222,6 +226,13 @@ public final class JdbcSqlStat implements JdbcSqlStatMBean { public void addUpdateCount(int delta) { if (delta > 0) { this.updateCount.addAndGet(delta); + } + for (;;) { + long max = updateCountMax.get(); + if (delta <= max) break; + if (updateCountMax.compareAndSet(max, delta)) { + break; + } } this.updateCountHistogram.record(delta); @@ -230,11 +241,18 @@ public final class JdbcSqlStat implements JdbcSqlStatMBean { public long getUpdateCount() { return updateCount.get(); } + public long getUpdateCountMax() { + return updateCountMax.get(); + } public long getFetchRowCount() { return fetchRowCount.get(); } + public long getFetchRowCountMax() { + return fetchRowCountMax.get(); + + } public long getId() { return id; } @@ -274,7 +292,14 @@ public final class JdbcSqlStat implements JdbcSqlStatMBean { } public void addFetchRowCount(long delta) { - this.fetchRowCount.addAndGet(delta); + this.fetchRowCount.addAndGet(delta); + for (;;) { + long max = fetchRowCountMax.get(); + if (delta <= max) break; + if (fetchRowCountMax.compareAndSet(max, delta)) { + break; + } + } this.fetchRowCountHistogram.record(delta); } @@ -525,9 +550,11 @@ public final class JdbcSqlStat implements JdbcSqlStatMBean { map.put("MaxTimespan", getExecuteMillisMax()); map.put("LastError", JMXUtils.getErrorCompositeData(this.getExecuteErrorLast())); map.put("EffectedRowCount", getUpdateCount()); + map.put("EffectedRowCountMax", getUpdateCountMax()); // 10 - 14 map.put("FetchRowCount", getFetchRowCount()); + map.put("FetchRowCountMax", getFetchRowCountMax()); map.put("MaxTimespanOccurTime", getExecuteNanoSpanMaxOccurTime()); map.put("BatchSizeMax", getExecuteBatchSizeMax()); map.put("BatchSizeTotal", getExecuteBatchSizeTotal()); From 9cd1263fcd758242ed1e5bbd9c788730d9a4ed82 Mon Sep 17 00:00:00 2001 From: "shrek.wang" Date: Fri, 17 Aug 2012 16:13:43 +0800 Subject: [PATCH 2/2] update getCompositeType() for two stat field --- .../java/com/alibaba/druid/stat/JdbcSqlStat.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/alibaba/druid/stat/JdbcSqlStat.java b/src/main/java/com/alibaba/druid/stat/JdbcSqlStat.java index 41913aa546..b92f150f0d 100644 --- a/src/main/java/com/alibaba/druid/stat/JdbcSqlStat.java +++ b/src/main/java/com/alibaba/druid/stat/JdbcSqlStat.java @@ -473,6 +473,8 @@ public final class JdbcSqlStat implements JdbcSqlStatMBean { new ArrayType(SimpleType.LONG, true), // new ArrayType(SimpleType.LONG, true), // + SimpleType.LONG, // + SimpleType.LONG, // }; @@ -521,7 +523,9 @@ public final class JdbcSqlStat implements JdbcSqlStatMBean { // 30 "EffectedRowCountHistogram", // - "ExecuteAndResultHoldTimeHistogram" + "ExecuteAndResultHoldTimeHistogram", // + "EffectedRowCountMax", // + "FetchRowCountMax" // }; @@ -551,11 +555,9 @@ public final class JdbcSqlStat implements JdbcSqlStatMBean { map.put("MaxTimespan", getExecuteMillisMax()); map.put("LastError", JMXUtils.getErrorCompositeData(this.getExecuteErrorLast())); map.put("EffectedRowCount", getUpdateCount()); - map.put("EffectedRowCountMax", getUpdateCountMax()); - + // 10 - 14 map.put("FetchRowCount", getFetchRowCount()); - map.put("FetchRowCountMax", getFetchRowCountMax()); map.put("MaxTimespanOccurTime", getExecuteNanoSpanMaxOccurTime()); map.put("BatchSizeMax", getExecuteBatchSizeMax()); map.put("BatchSizeTotal", getExecuteBatchSizeTotal()); @@ -592,6 +594,8 @@ public final class JdbcSqlStat implements JdbcSqlStatMBean { map.put("EffectedRowCountHistogram", this.getUpdateCountHistogram().toArray()); // 30 map.put("ExecuteAndResultHoldTimeHistogram", this.getExecuteAndResultHoldTimeHistogram().toArray()); // 30 + map.put("EffectedRowCountMax", getUpdateCountMax()); + map.put("FetchRowCountMax", getFetchRowCountMax()); return map; }