mirror of
https://github.com/alibaba/druid.git
synced 2023-03-04 19:17:16 +00:00
refactor clob stat
This commit is contained in:
@@ -54,12 +54,13 @@ import com.alibaba.druid.support.logging.LogFactory;
|
||||
* @author wenshao<szujobs@hotmail.com>
|
||||
*/
|
||||
public class StatFilter extends FilterEventAdapter implements StatFilterMBean {
|
||||
|
||||
private final static Log LOG = LogFactory.getLog(StatFilter.class);
|
||||
|
||||
|
||||
private static final String SYS_PROP_LOG_SLOW_SQL = "druid.stat.logSlowSql";
|
||||
private static final String SYS_PROP_SLOW_SQL_MILLIS = "druid.stat.slowSqlMillis";
|
||||
private static final String SYS_PROP_MERGE_SQL = "druid.stat.mergeSql";
|
||||
|
||||
|
||||
public final static String ATTR_NAME_CONNECTION_STAT = "stat.conn";
|
||||
public final static String ATTR_NAME_STATEMENT_STAT = "stat.stmt";
|
||||
public final static String ATTR_UPDATE_COUNT = "stat.updteCount";
|
||||
@@ -688,7 +689,7 @@ public class StatFilter extends FilterEventAdapter implements StatFilterMBean {
|
||||
Clob clob = chain.resultSet_getClob(resultSet, columnIndex);
|
||||
|
||||
if (clob != null) {
|
||||
clobOpenAfter(chain.getDataSource().getDataSourceStat(), (ClobProxy) clob);
|
||||
clobOpenAfter(chain.getDataSource().getDataSourceStat(), resultSet, (ClobProxy) clob);
|
||||
}
|
||||
|
||||
return clob;
|
||||
@@ -699,7 +700,7 @@ public class StatFilter extends FilterEventAdapter implements StatFilterMBean {
|
||||
Clob clob = chain.resultSet_getClob(resultSet, columnLabel);
|
||||
|
||||
if (clob != null) {
|
||||
clobOpenAfter(chain.getDataSource().getDataSourceStat(), (ClobProxy) clob);
|
||||
clobOpenAfter(chain.getDataSource().getDataSourceStat(), resultSet, (ClobProxy) clob);
|
||||
}
|
||||
|
||||
return clob;
|
||||
@@ -711,7 +712,7 @@ public class StatFilter extends FilterEventAdapter implements StatFilterMBean {
|
||||
Clob clob = chain.callableStatement_getClob(statement, parameterIndex);
|
||||
|
||||
if (clob != null) {
|
||||
clobOpenAfter(chain.getDataSource().getDataSourceStat(), (ClobProxy) clob);
|
||||
clobOpenAfter(chain.getDataSource().getDataSourceStat(), statement, (ClobProxy) clob);
|
||||
}
|
||||
|
||||
return clob;
|
||||
@@ -723,7 +724,7 @@ public class StatFilter extends FilterEventAdapter implements StatFilterMBean {
|
||||
Clob clob = chain.callableStatement_getClob(statement, parameterName);
|
||||
|
||||
if (clob != null) {
|
||||
clobOpenAfter(chain.getDataSource().getDataSourceStat(), (ClobProxy) clob);
|
||||
clobOpenAfter(chain.getDataSource().getDataSourceStat(), statement, (ClobProxy) clob);
|
||||
}
|
||||
|
||||
return clob;
|
||||
@@ -734,7 +735,7 @@ public class StatFilter extends FilterEventAdapter implements StatFilterMBean {
|
||||
Object obj = chain.resultSet_getObject(result, columnIndex);
|
||||
|
||||
if (obj instanceof Clob) {
|
||||
clobOpenAfter(chain.getDataSource().getDataSourceStat(), (ClobProxy) obj);
|
||||
clobOpenAfter(chain.getDataSource().getDataSourceStat(), result, (ClobProxy) obj);
|
||||
}
|
||||
|
||||
return obj;
|
||||
@@ -746,7 +747,7 @@ public class StatFilter extends FilterEventAdapter implements StatFilterMBean {
|
||||
Object obj = chain.resultSet_getObject(result, columnIndex, map);
|
||||
|
||||
if (obj instanceof Clob) {
|
||||
clobOpenAfter(chain.getDataSource().getDataSourceStat(), (ClobProxy) obj);
|
||||
clobOpenAfter(chain.getDataSource().getDataSourceStat(), result, (ClobProxy) obj);
|
||||
}
|
||||
|
||||
return obj;
|
||||
@@ -757,7 +758,7 @@ public class StatFilter extends FilterEventAdapter implements StatFilterMBean {
|
||||
Object obj = chain.resultSet_getObject(result, columnLabel);
|
||||
|
||||
if (obj instanceof Clob) {
|
||||
clobOpenAfter(chain.getDataSource().getDataSourceStat(), (ClobProxy) obj);
|
||||
clobOpenAfter(chain.getDataSource().getDataSourceStat(), result, (ClobProxy) obj);
|
||||
}
|
||||
|
||||
return obj;
|
||||
@@ -769,7 +770,7 @@ public class StatFilter extends FilterEventAdapter implements StatFilterMBean {
|
||||
Object obj = chain.resultSet_getObject(result, columnLabel, map);
|
||||
|
||||
if (obj instanceof Clob) {
|
||||
clobOpenAfter(chain.getDataSource().getDataSourceStat(), (ClobProxy) obj);
|
||||
clobOpenAfter(chain.getDataSource().getDataSourceStat(), result, (ClobProxy) obj);
|
||||
}
|
||||
|
||||
return obj;
|
||||
@@ -781,7 +782,7 @@ public class StatFilter extends FilterEventAdapter implements StatFilterMBean {
|
||||
Object obj = chain.callableStatement_getObject(statement, parameterIndex);
|
||||
|
||||
if (obj instanceof Clob) {
|
||||
clobOpenAfter(chain.getDataSource().getDataSourceStat(), (ClobProxy) obj);
|
||||
clobOpenAfter(chain.getDataSource().getDataSourceStat(), statement, (ClobProxy) obj);
|
||||
}
|
||||
|
||||
return obj;
|
||||
@@ -793,7 +794,7 @@ public class StatFilter extends FilterEventAdapter implements StatFilterMBean {
|
||||
Object obj = chain.callableStatement_getObject(statement, parameterIndex, map);
|
||||
|
||||
if (obj instanceof Clob) {
|
||||
clobOpenAfter(chain.getDataSource().getDataSourceStat(), (ClobProxy) obj);
|
||||
clobOpenAfter(chain.getDataSource().getDataSourceStat(), statement, (ClobProxy) obj);
|
||||
}
|
||||
|
||||
return obj;
|
||||
@@ -805,7 +806,7 @@ public class StatFilter extends FilterEventAdapter implements StatFilterMBean {
|
||||
Object obj = chain.callableStatement_getObject(statement, parameterName);
|
||||
|
||||
if (obj instanceof Clob) {
|
||||
clobOpenAfter(chain.getDataSource().getDataSourceStat(), (ClobProxy) obj);
|
||||
clobOpenAfter(chain.getDataSource().getDataSourceStat(), statement, (ClobProxy) obj);
|
||||
}
|
||||
|
||||
return obj;
|
||||
@@ -818,26 +819,26 @@ public class StatFilter extends FilterEventAdapter implements StatFilterMBean {
|
||||
Object obj = chain.callableStatement_getObject(statement, parameterName, map);
|
||||
|
||||
if (obj instanceof Clob) {
|
||||
clobOpenAfter(chain.getDataSource().getDataSourceStat(), (ClobProxy) obj);
|
||||
clobOpenAfter(chain.getDataSource().getDataSourceStat(), statement, (ClobProxy) obj);
|
||||
}
|
||||
|
||||
return obj;
|
||||
}
|
||||
|
||||
private void clobOpenAfter(JdbcDataSourceStat dataSourceStat, ClobProxy clob) {
|
||||
private void clobOpenAfter(JdbcDataSourceStat dataSourceStat, ResultSetProxy rs, ClobProxy clob) {
|
||||
clobOpenAfter(dataSourceStat, rs.getStatementProxy(), clob);
|
||||
}
|
||||
|
||||
private void clobOpenAfter(JdbcDataSourceStat dataSourceStat, StatementProxy stmt, ClobProxy clob) {
|
||||
dataSourceStat.incrementClobOpenCount();
|
||||
|
||||
if (stmt != null) {
|
||||
JdbcSqlStat sqlStat = stmt.getSqlStat();
|
||||
if (sqlStat != null) {
|
||||
sqlStat.incrementClobOpenCount();
|
||||
}
|
||||
}
|
||||
|
||||
StatFilterContext.getInstance().clob_open();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void clob_free(FilterChain chain, ClobProxy wrapper) throws SQLException {
|
||||
chain.clob_free(wrapper);
|
||||
|
||||
JdbcDataSourceStat dataSourceStat = chain.getDataSource().getDataSourceStat();
|
||||
dataSourceStat.incrementClobFreeCount();
|
||||
|
||||
StatFilterContext.getInstance().clob_free();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -67,7 +67,6 @@ public class JdbcDataSourceStat implements JdbcDataSourceStatMBean {
|
||||
private final ConcurrentMap<Long, JdbcConnectionStat.Entry> connections = new ConcurrentHashMap<Long, JdbcConnectionStat.Entry>();
|
||||
|
||||
private final AtomicLong clobOpenCount = new AtomicLong();
|
||||
private final AtomicLong clobFreeCount = new AtomicLong();
|
||||
|
||||
public JdbcDataSourceStat(String name, String url){
|
||||
this(name, url, null);
|
||||
@@ -103,7 +102,6 @@ public class JdbcDataSourceStat implements JdbcDataSourceStatMBean {
|
||||
|
||||
public void reset() {
|
||||
clobOpenCount.set(0);
|
||||
clobFreeCount.set(0);
|
||||
|
||||
connectionStat.reset();
|
||||
statementStat.reset();
|
||||
@@ -315,17 +313,9 @@ public class JdbcDataSourceStat implements JdbcDataSourceStatMBean {
|
||||
public long getClobOpenCount() {
|
||||
return clobOpenCount.get();
|
||||
}
|
||||
|
||||
|
||||
public void incrementClobOpenCount() {
|
||||
clobOpenCount.incrementAndGet();
|
||||
}
|
||||
|
||||
public long getClobFreeCount() {
|
||||
return clobFreeCount.get();
|
||||
}
|
||||
|
||||
public void incrementClobFreeCount() {
|
||||
clobFreeCount.incrementAndGet();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -215,7 +215,7 @@ public final class JdbcSqlStat implements JdbcSqlStatMBean {
|
||||
fetchRowCountHistogram.reset();
|
||||
updateCountHistogram.reset();
|
||||
executeAndResultHoldTimeHistogram.reset();
|
||||
|
||||
|
||||
clobOpenCount.set(0);
|
||||
}
|
||||
|
||||
@@ -257,11 +257,11 @@ public final class JdbcSqlStat implements JdbcSqlStatMBean {
|
||||
public long getFetchRowCountMax() {
|
||||
return fetchRowCountMax.get();
|
||||
}
|
||||
|
||||
|
||||
public long getClobOpenCount() {
|
||||
return clobOpenCount.get();
|
||||
}
|
||||
|
||||
|
||||
public void incrementClobOpenCount() {
|
||||
clobOpenCount.incrementAndGet();
|
||||
}
|
||||
@@ -488,6 +488,7 @@ public final class JdbcSqlStat implements JdbcSqlStatMBean {
|
||||
new ArrayType<Long>(SimpleType.LONG, true), //
|
||||
SimpleType.LONG, //
|
||||
SimpleType.LONG, //
|
||||
SimpleType.LONG, //
|
||||
|
||||
};
|
||||
|
||||
@@ -534,11 +535,12 @@ public final class JdbcSqlStat implements JdbcSqlStatMBean {
|
||||
"ExecuteAndResultSetHoldTime", //
|
||||
"FetchRowCountHistogram", //
|
||||
|
||||
// 30
|
||||
// 30 - 34
|
||||
"EffectedRowCountHistogram", //
|
||||
"ExecuteAndResultHoldTimeHistogram", //
|
||||
"EffectedRowCountMax", //
|
||||
"FetchRowCountMax"
|
||||
"FetchRowCountMax", //
|
||||
"ClobOpenCount",
|
||||
|
||||
//
|
||||
};
|
||||
@@ -606,9 +608,10 @@ public final class JdbcSqlStat implements JdbcSqlStatMBean {
|
||||
map.put("FetchRowCountHistogram", this.getFetchRowCountHistogram().toArray()); // 29
|
||||
|
||||
map.put("EffectedRowCountHistogram", this.getUpdateCountHistogram().toArray()); // 30
|
||||
map.put("ExecuteAndResultHoldTimeHistogram", this.getExecuteAndResultHoldTimeHistogram().toArray()); // 30
|
||||
map.put("EffectedRowCountMax", getUpdateCountMax());
|
||||
map.put("FetchRowCountMax", getFetchRowCountMax());
|
||||
map.put("ExecuteAndResultHoldTimeHistogram", this.getExecuteAndResultHoldTimeHistogram().toArray()); // 31
|
||||
map.put("EffectedRowCountMax", getUpdateCountMax()); // 32
|
||||
map.put("FetchRowCountMax", getFetchRowCountMax()); // 33
|
||||
map.put("ClobOpenCount", getClobOpenCount()); // 34
|
||||
|
||||
return map;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user