mirror of
https://github.com/alibaba/druid.git
synced 2023-03-04 19:17:16 +00:00
add stat service
This commit is contained in:
@@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user