add stat service

This commit is contained in:
wenshao
2012-08-04 07:44:06 +08:00
parent 60f7f2fc4b
commit 2b2eb9ee82
2 changed files with 75 additions and 94 deletions
@@ -14,125 +14,60 @@ public class SqlInfo {
private long resultSetHoldTimeMilis;
// 使用字段而不是数组为了节省内存空间
private int histogram_0;
private int histogram_1;
private int histogram_2;
private int histogram_3;
private int histogram_4;
private int histogram_5;
private int histogram_6;
private int histogram_7;
private int[] histogram;
private int executeAndResultHoldTimeHistogram_0;
private int executeAndResultHoldTimeHistogram_1;
private int executeAndResultHoldTimeHistogram_2;
private int executeAndResultHoldTimeHistogram_3;
private int executeAndResultHoldTimeHistogram_4;
private int executeAndResultHoldTimeHistogram_5;
private int executeAndResultHoldTimeHistogram_6;
private int executeAndResultHoldTimeHistogram_7;
private int[] executeAndResultHoldTimeHistogram;
private int updateCountHistogram_0;
private int updateCountHistogram_1;
private int updateCountHistogram_2;
private int updateCountHistogram_3;
private int updateCountHistogram_4;
private int updateCountHistogram_5;
private int[] updateCountHistogram;
private int fetchRowCountHistogram_0;
private int fetchRowCountHistogram_1;
private int fetchRowCountHistogram_2;
private int fetchRowCountHistogram_3;
private int fetchRowCountHistogram_4;
private int fetchRowCountHistogram_5;
private int[] fetchRowCountHistogram;
public SqlInfo(){
}
public void setExecuteAndResultHoldTimeHistogram(long[] values) {
executeAndResultHoldTimeHistogram_0 = (int) values[0];
executeAndResultHoldTimeHistogram_1 = (int) values[1];
executeAndResultHoldTimeHistogram_2 = (int) values[2];
executeAndResultHoldTimeHistogram_3 = (int) values[3];
executeAndResultHoldTimeHistogram_4 = (int) values[4];
executeAndResultHoldTimeHistogram_5 = (int) values[5];
executeAndResultHoldTimeHistogram_6 = (int) values[6];
executeAndResultHoldTimeHistogram_7 = (int) values[7];
executeAndResultHoldTimeHistogram = new int[values.length];
for (int i = 0; i < values.length; ++i) {
executeAndResultHoldTimeHistogram[i] = (int) values[i];
}
}
public int[] getExecuteAndResultHoldTimeHistogram() {
return new int[] { executeAndResultHoldTimeHistogram_0, //
executeAndResultHoldTimeHistogram_1, //
executeAndResultHoldTimeHistogram_2, //
executeAndResultHoldTimeHistogram_3, //
executeAndResultHoldTimeHistogram_4, //
executeAndResultHoldTimeHistogram_5, //
executeAndResultHoldTimeHistogram_6, //
executeAndResultHoldTimeHistogram_7, //
};
return executeAndResultHoldTimeHistogram;
}
public void setFetchRowCountHistogram(long[] values) {
fetchRowCountHistogram_0 = (int) values[0];
fetchRowCountHistogram_1 = (int) values[1];
fetchRowCountHistogram_2 = (int) values[2];
fetchRowCountHistogram_3 = (int) values[3];
fetchRowCountHistogram_4 = (int) values[4];
fetchRowCountHistogram_5 = (int) values[5];
fetchRowCountHistogram = new int[values.length];
for (int i = 0; i < values.length; ++i) {
fetchRowCountHistogram[i] = (int) values[i];
}
}
public int[] getFetchRowCountHistogram() {
return new int[] { fetchRowCountHistogram_0, //
fetchRowCountHistogram_1, //
fetchRowCountHistogram_2, //
fetchRowCountHistogram_3, //
fetchRowCountHistogram_4, //
fetchRowCountHistogram_5, //
};
return fetchRowCountHistogram;
}
public void setUpdateCountHistogram(long[] values) {
updateCountHistogram_0 = (int) values[0];
updateCountHistogram_1 = (int) values[1];
updateCountHistogram_2 = (int) values[2];
updateCountHistogram_3 = (int) values[3];
updateCountHistogram_4 = (int) values[4];
updateCountHistogram_5 = (int) values[5];
updateCountHistogram = new int[values.length];
for (int i = 0; i < values.length; ++i) {
updateCountHistogram[i] = (int) values[i];
}
}
public int[] getUpdateCountHistogram() {
return new int[] { updateCountHistogram_0, //
updateCountHistogram_1, //
updateCountHistogram_2, //
updateCountHistogram_3, //
updateCountHistogram_4, //
updateCountHistogram_5, //
};
return updateCountHistogram;
}
public void setHisogram(long[] values) {
histogram_0 = (int) values[0];
histogram_1 = (int) values[1];
histogram_2 = (int) values[2];
histogram_3 = (int) values[3];
histogram_4 = (int) values[4];
histogram_5 = (int) values[5];
histogram_6 = (int) values[6];
histogram_7 = (int) values[7];
histogram = new int[values.length];
for (int i = 0; i < values.length; ++i) {
histogram[i] = (int) values[i];
}
}
public int[] getHistogram() {
return new int[] { histogram_0, //
histogram_1, //
histogram_2, //
histogram_3, //
histogram_4, //
histogram_5, //
histogram_6, //
histogram_7, //
};
return histogram;
}
public String getSql() {
@@ -206,8 +141,35 @@ public class SqlInfo {
public void setResultSetHoldTimeMilis(long resultSetHoldTimeMilis) {
this.resultSetHoldTimeMilis = resultSetHoldTimeMilis;
}
public void merge(SqlInfo sqlInfo) {
public void merge(SqlInfo o) {
executeCount += o.executeCount;
runningCount += o.runningCount;
if (o.concurrentMax > concurrentMax) {
concurrentMax = o.concurrentMax;
}
errorCount += o.errorCount;
inTransactionCount += o.inTransactionCount;
fetchRowCount += o.fetchRowCount;
updateCount += o.updateCount;
resultSetHoldTimeMilis += o.resultSetHoldTimeMilis;
for (int i = 0; i < histogram.length; ++i) {
this.histogram[i] += o.histogram[i];
}
for (int i = 0; i < executeAndResultHoldTimeHistogram.length; ++i) {
this.executeAndResultHoldTimeHistogram[i] += o.executeAndResultHoldTimeHistogram[i];
}
for (int i = 0; i < updateCountHistogram.length; ++i) {
this.updateCountHistogram[i] += o.updateCountHistogram[i];
}
for (int i = 0; i < fetchRowCountHistogram.length; ++i) {
this.fetchRowCountHistogram[i] += o.fetchRowCountHistogram[i];
}
}
}
@@ -1,14 +1,33 @@
package com.alibaba.druid.bvt.statService;
import junit.framework.Assert;
import junit.framework.TestCase;
import com.alibaba.druid.stat.JdbcSqlStat;
import com.alibaba.druid.stat.service.DruidStatServiceUtils;
import com.alibaba.druid.stat.service.dto.SqlInfo;
public class SqlInfoTest extends TestCase {
public void test_0 () throws Exception {
public void test_0() throws Exception {
JdbcSqlStat sqlStat = new JdbcSqlStat("select 1");
sqlStat.incrementRunningCount();
sqlStat.incrementExecuteSuccessCount();
SqlInfo info = DruidStatServiceUtils.createSqlInfo(sqlStat);
Assert.assertEquals(1, info.getRunningCount());
Assert.assertEquals(1, info.getExecuteCount());
JdbcSqlStat sqlStat1 = new JdbcSqlStat("select 2");
sqlStat1.incrementRunningCount();
sqlStat1.incrementExecuteSuccessCount();
DruidStatServiceUtils.createSqlInfo(sqlStat);
SqlInfo info1 = DruidStatServiceUtils.createSqlInfo(sqlStat);
info.merge(info1);
Assert.assertEquals(2, info.getRunningCount());
Assert.assertEquals(2, info.getExecuteCount());
}
}