/* * Copyright 1999-2017 Alibaba Group Holding Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.alibaba.druid.pool; import java.util.Date; import java.util.List; import com.alibaba.druid.stat.JdbcSqlStatValue; import com.alibaba.druid.support.monitor.annotation.AggregateType; import com.alibaba.druid.support.monitor.annotation.MField; import com.alibaba.druid.support.monitor.annotation.MTable; @MTable(name = "druid_datasource") public class DruidDataSourceStatValue { @MField(groupBy = true, aggregate = AggregateType.None) protected String name; @MField(aggregate = AggregateType.None) protected String dbType; @MField(aggregate = AggregateType.None) protected String driverClassName; protected String url; protected String userName; protected List<String> filterClassNames; protected boolean removeAbandoned; protected int initialSize; protected int minIdle; protected int maxActive; protected int queryTimeout; protected int transactionQueryTimeout; protected int loginTimeout; protected String validConnectionCheckerClassName; protected String exceptionSorterClassName; protected boolean testOnBorrow; protected boolean testOnReturn; protected boolean testWhileIdle; protected boolean defaultAutoCommit; protected boolean defaultReadOnly; protected Integer defaultTransactionIsolation; @MField(aggregate = AggregateType.Last) protected int activeCount; @MField(aggregate = AggregateType.Max) protected int activePeak; @MField(aggregate = AggregateType.Max) protected long activePeakTime; @MField(aggregate = AggregateType.Last) protected int poolingCount; @MField(aggregate = AggregateType.Max) protected int poolingPeak; @MField(aggregate = AggregateType.Max) protected long poolingPeakTime; @MField(aggregate = AggregateType.Sum) protected long connectCount; @MField(aggregate = AggregateType.Sum) protected long closeCount; @MField(aggregate = AggregateType.Sum) protected long waitThreadCount; @MField(aggregate = AggregateType.Sum) protected long notEmptyWaitCount; @MField(aggregate = AggregateType.Sum) protected long notEmptyWaitNanos; @MField(aggregate = AggregateType.Sum) protected long logicConnectErrorCount; @MField(aggregate = AggregateType.Sum) protected long physicalConnectCount; @MField(aggregate = AggregateType.Sum) protected long physicalCloseCount; @MField(aggregate = AggregateType.Sum) protected long physicalConnectErrorCount; @MField(aggregate = AggregateType.Sum) protected long executeCount; @MField(aggregate = AggregateType.Sum) protected long errorCount; @MField(aggregate = AggregateType.Sum) protected long commitCount; @MField(aggregate = AggregateType.Sum) protected long rollbackCount; @MField(aggregate = AggregateType.Sum) protected long pstmtCacheHitCount; @MField(aggregate = AggregateType.Sum) protected long pstmtCacheMissCount; @MField(aggregate = AggregateType.Sum) protected long startTransactionCount; @MField(aggregate = AggregateType.Sum) protected long keepAliveCheckCount; // protected long[] transactionHistogram; protected long[] connectionHoldTimeHistogram; @MField(aggregate = AggregateType.Sum) protected long txn_0_1; @MField(aggregate = AggregateType.Sum) protected long txn_1_10; @MField(aggregate = AggregateType.Sum) protected long txn_10_100; @MField(aggregate = AggregateType.Sum) protected long txn_100_1000; @MField(aggregate = AggregateType.Sum) protected long txn_1000_10000; @MField(aggregate = AggregateType.Sum) protected long txn_10000_100000; @MField(aggregate = AggregateType.Sum) protected long txn_more; @MField(aggregate = AggregateType.Sum) protected long clobOpenCount; @MField(aggregate = AggregateType.Sum) protected long blobOpenCount; @MField(aggregate = AggregateType.Sum) protected long sqlSkipCount; protected List<JdbcSqlStatValue> sqlList; public Date getPoolingPeakTime() { if (poolingPeakTime <= 0) { return null; } return new Date(poolingPeakTime); } public long getSqlSkipCount() { return sqlSkipCount; } public void setSqlSkipCount(long sqlSkipCount) { this.sqlSkipCount = sqlSkipCount; } public Date getActivePeakTime() { if (activePeakTime <= 0) { return null; } return new Date(activePeakTime); } public long getNotEmptyWaitMillis() { return notEmptyWaitNanos / (1000 * 1000); } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getDbType() { return dbType; } public void setDbType(String dbType) { this.dbType = dbType; } public String getDriverClassName() { return driverClassName; } public void setDriverClassName(String driverClassName) { this.driverClassName = driverClassName; } public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public List<String> getFilterClassNames() { return filterClassNames; } public void setFilterClassNames(List<String> filterClassNames) { this.filterClassNames = filterClassNames; } public boolean isRemoveAbandoned() { return removeAbandoned; } public void setRemoveAbandoned(boolean removeAbandoned) { this.removeAbandoned = removeAbandoned; } public int getInitialSize() { return initialSize; } public void setInitialSize(int initialSize) { this.initialSize = initialSize; } public int getMinIdle() { return minIdle; } public void setMinIdle(int minIdle) { this.minIdle = minIdle; } public int getMaxActive() { return maxActive; } public void setMaxActive(int maxActive) { this.maxActive = maxActive; } public int getQueryTimeout() { return queryTimeout; } public void setQueryTimeout(int queryTimeout) { this.queryTimeout = queryTimeout; } public int getTransactionQueryTimeout() { return transactionQueryTimeout; } public void setTransactionQueryTimeout(int transactionQueryTimeout) { this.transactionQueryTimeout = transactionQueryTimeout; } public int getLoginTimeout() { return loginTimeout; } public void setLoginTimeout(int loginTimeout) { this.loginTimeout = loginTimeout; } public String getValidConnectionCheckerClassName() { return validConnectionCheckerClassName; } public void setValidConnectionCheckerClassName(String validConnectionCheckerClassName) { this.validConnectionCheckerClassName = validConnectionCheckerClassName; } public String getExceptionSorterClassName() { return exceptionSorterClassName; } public void setExceptionSorterClassName(String exceptionSorterClassName) { this.exceptionSorterClassName = exceptionSorterClassName; } public boolean isTestOnBorrow() { return testOnBorrow; } public void setTestOnBorrow(boolean testOnBorrow) { this.testOnBorrow = testOnBorrow; } public boolean isTestOnReturn() { return testOnReturn; } public void setTestOnReturn(boolean testOnReturn) { this.testOnReturn = testOnReturn; } public boolean isTestWhileIdle() { return testWhileIdle; } public void setTestWhileIdle(boolean testWhileIdle) { this.testWhileIdle = testWhileIdle; } public boolean isDefaultAutoCommit() { return defaultAutoCommit; } public void setDefaultAutoCommit(boolean defaultAutoCommit) { this.defaultAutoCommit = defaultAutoCommit; } public boolean isDefaultReadOnly() { return defaultReadOnly; } public void setDefaultReadOnly(boolean defaultReadOnly) { this.defaultReadOnly = defaultReadOnly; } public Integer getDefaultTransactionIsolation() { return defaultTransactionIsolation; } public void setDefaultTransactionIsolation(Integer defaultTransactionIsolation) { this.defaultTransactionIsolation = defaultTransactionIsolation; } public int getActiveCount() { return activeCount; } public void setActiveCount(int activeCount) { this.activeCount = activeCount; } public int getActivePeak() { return activePeak; } public void setActivePeak(int activePeak) { this.activePeak = activePeak; } public int getPoolingCount() { return poolingCount; } public void setPoolingCount(int poolingCount) { this.poolingCount = poolingCount; } public int getPoolingPeak() { return poolingPeak; } public void setPoolingPeak(int poolingPeak) { this.poolingPeak = poolingPeak; } public long getConnectCount() { return connectCount; } public void setConnectCount(long connectCount) { this.connectCount = connectCount; } public long getCloseCount() { return closeCount; } public void setCloseCount(long closeCount) { this.closeCount = closeCount; } public long getWaitThreadCount() { return waitThreadCount; } public void setWaitThreadCount(long waitThreadCount) { this.waitThreadCount = waitThreadCount; } public long getNotEmptyWaitCount() { return notEmptyWaitCount; } public void setNotEmptyWaitCount(long notEmptyWaitCount) { this.notEmptyWaitCount = notEmptyWaitCount; } public long getNotEmptyWaitNanos() { return notEmptyWaitNanos; } public void setNotEmptyWaitNanos(long notEmptyWaitNanos) { this.notEmptyWaitNanos = notEmptyWaitNanos; } public long getLogicConnectErrorCount() { return logicConnectErrorCount; } public void setLogicConnectErrorCount(long logicConnectErrorCount) { this.logicConnectErrorCount = logicConnectErrorCount; } public long getPhysicalConnectCount() { return physicalConnectCount; } public void setPhysicalConnectCount(long physicalConnectCount) { this.physicalConnectCount = physicalConnectCount; } public long getPhysicalCloseCount() { return physicalCloseCount; } public void setPhysicalCloseCount(long physicalCloseCount) { this.physicalCloseCount = physicalCloseCount; } public long getPhysicalConnectErrorCount() { return physicalConnectErrorCount; } public void setPhysicalConnectErrorCount(long physicalConnectErrorCount) { this.physicalConnectErrorCount = physicalConnectErrorCount; } public long getExecuteCount() { return executeCount; } public void setExecuteCount(long executeCount) { this.executeCount = executeCount; } public long getErrorCount() { return errorCount; } public void setErrorCount(long errorCount) { this.errorCount = errorCount; } public long getCommitCount() { return commitCount; } public void setCommitCount(long commitCount) { this.commitCount = commitCount; } public long getRollbackCount() { return rollbackCount; } public void setRollbackCount(long rollbackCount) { this.rollbackCount = rollbackCount; } public long getPstmtCacheHitCount() { return pstmtCacheHitCount; } public void setPstmtCacheHitCount(long pstmtCacheHitCount) { this.pstmtCacheHitCount = pstmtCacheHitCount; } public long getPstmtCacheMissCount() { return pstmtCacheMissCount; } public void setPstmtCacheMissCount(long pstmtCacheMissCount) { this.pstmtCacheMissCount = pstmtCacheMissCount; } public long getStartTransactionCount() { return startTransactionCount; } public void setStartTransactionCount(long startTransactionCount) { this.startTransactionCount = startTransactionCount; } public long[] getTransactionHistogram() { return new long[] { txn_0_1,// txn_0_1 txn_1_10, txn_10_100, // txn_100_1000, // txn_1000_10000, // txn_10000_100000, // txn_more, // }; } public void setTransactionHistogram(long[] values) { txn_0_1 = values[0]; txn_1_10 = values[1]; txn_10_100 = values[2]; txn_100_1000 = values[3]; txn_1000_10000 = values[4]; txn_10000_100000 = values[5]; txn_more = values[6]; } public long[] getConnectionHoldTimeHistogram() { return connectionHoldTimeHistogram; } public void setConnectionHoldTimeHistogram(long[] connectionHoldTimeHistogram) { this.connectionHoldTimeHistogram = connectionHoldTimeHistogram; } public long getClobOpenCount() { return clobOpenCount; } public void setClobOpenCount(long clobOpenCount) { this.clobOpenCount = clobOpenCount; } public long getBlobOpenCount() { return blobOpenCount; } public void setBlobOpenCount(long blobOpenCount) { this.blobOpenCount = blobOpenCount; } public List<JdbcSqlStatValue> getSqlList() { return sqlList; } public void setSqlList(List<JdbcSqlStatValue> sqlList) { this.sqlList = sqlList; } public void setActivePeakTime(long activePeakTime) { this.activePeakTime = activePeakTime; } public void setPoolingPeakTime(long poolingPeakTime) { this.poolingPeakTime = poolingPeakTime; } public long getKeepAliveCheckCount() { return keepAliveCheckCount; } public void setKeepAliveCheckCount(long keepAliveCheckCount) { this.keepAliveCheckCount = keepAliveCheckCount; } }