Class StatementDuration
- java.lang.Object
-
- org.apache.derby.vti.VTITemplate
-
- org.apache.derby.diag.StatementDuration
-
- All Implemented Interfaces:
java.lang.AutoCloseable,java.sql.ResultSet,java.sql.Wrapper,AwareVTI
public class StatementDuration extends VTITemplate
StatementDuration is a virtual table which can be used to analyze the execution duration of the statements of "interest" in db2j.log or a specified file when db2j.language.logStatementText=true.A limitation is that, for each transaction ID, a row will not be returned for the last statement with that transaction id. (Transaction IDs change within a connection after a commit or rollback, if the transaction that just ended modified data.)
The execution duration is the time between the beginning of execution of two successive statements. There are a number of reasons why this time may not be accurate. The duration could include time spent in the application waiting for user input, doing other work, etc. It may also only include a portion of the actual execution time, if the application executes a new statement before draining the previous open ResultSet. StatementDuration can be used to get a rough sense of where the bottlenecks in an application's JDBC code are.
The StatementDuration virtual table has the following columns:
- TS varchar(26) - not nullable. The timestamp of the statement.
- THREADID varchar(80) - not nullable. The thread name.
- XID varchar(15) - not nullable. The transaction ID.
- LOGTEXT long varchar - nullable. Text of the statement or commit or rollback.
- DURATION varchar(10) - not nullable. Duration, in milliseconds, of the statement.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.apache.derby.vti.VTITemplate
VTITemplate.ColumnDescriptor
-
-
Field Summary
Fields Modifier and Type Field Description private static java.lang.StringBEGIN_EXECUTING_STRINGprivate static java.lang.StringBEGIN_THREAD_STRINGprivate static java.lang.StringBEGIN_XID_STRINGprivate java.io.BufferedReaderbufferedReaderprivate static ResultColumnDescriptor[]columnInfoprivate java.lang.String[]currentRowprivate static java.lang.StringEND_EXECUTING_STRINGprivate static java.lang.StringEND_THREAD_STRINGprivate static java.lang.StringEND_TIMESTAMPprivate static java.lang.StringEND_XID_STRINGprivate intendTimestampIndexprivate booleangotFileprivate java.util.Hashtable<java.lang.String,java.lang.String[]>hashTableprivate java.lang.StringinputFileNameprivate java.io.InputStreamReaderinputFileStreamReaderprivate java.io.InputStreaminputStreamprivate intlccidIndexprivate java.lang.Stringlineprivate static java.sql.ResultSetMetaDatametadataprivate intthreadIndexprivate intxidIndex
-
Constructor Summary
Constructors Constructor Description StatementDuration()StatementDuration() accesses the error log in derby.system.home, if set, otherwise it looks in the current directory.StatementDuration(java.lang.String inputFileName)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidclose()java.sql.ResultSetMetaDatagetMetaData()java.lang.StringgetString(int columnNumber)All columns in StatementDuration VTI have String data types.booleannext()private java.lang.StringsetupColumn(int columnNumber)private java.sql.TimestampstringToTimestamp(java.lang.String raw)booleanwasNull()-
Methods inherited from class org.apache.derby.vti.VTITemplate
absolute, afterLast, beforeFirst, cancelRowUpdates, clearWarnings, deleteRow, findColumn, first, getArray, getArray, getAsciiStream, getAsciiStream, getBigDecimal, getBigDecimal, getBigDecimal, getBigDecimal, getBinaryStream, getBinaryStream, getBlob, getBlob, getBoolean, getBoolean, getByte, getByte, getBytes, getBytes, getCharacterStream, getCharacterStream, getClob, getClob, getConcurrency, getContext, getCursorName, getDate, getDate, getDate, getDate, getDouble, getDouble, getFetchDirection, getFetchSize, getFloat, getFloat, getHoldability, getInt, getInt, getLong, getLong, getNCharacterStream, getNCharacterStream, getNClob, getNClob, getNString, getNString, getObject, getObject, getObject, getObject, getObject, getObject, getRef, getRef, getReturnTableSignature, getRow, getRowId, getRowId, getShort, getShort, getSQLXML, getSQLXML, getStatement, getString, getTime, getTime, getTime, getTime, getTimestamp, getTimestamp, getTimestamp, getTimestamp, getType, getUnicodeStream, getUnicodeStream, getURL, getURL, getWarnings, insertRow, isAfterLast, isBeforeFirst, isClosed, isFirst, isLast, isWrapperFor, last, moveToCurrentRow, moveToInsertRow, notImplemented, previous, refreshRow, relative, rowDeleted, rowInserted, rowUpdated, setContext, setFetchDirection, setFetchSize, unwrap, updateArray, updateArray, updateAsciiStream, updateAsciiStream, updateAsciiStream, updateAsciiStream, updateAsciiStream, updateAsciiStream, updateBigDecimal, updateBigDecimal, updateBinaryStream, updateBinaryStream, updateBinaryStream, updateBinaryStream, updateBinaryStream, updateBinaryStream, updateBlob, updateBlob, updateBlob, updateBlob, updateBlob, updateBlob, updateBoolean, updateBoolean, updateByte, updateByte, updateBytes, updateBytes, updateCharacterStream, updateCharacterStream, updateCharacterStream, updateCharacterStream, updateCharacterStream, updateCharacterStream, updateClob, updateClob, updateClob, updateClob, updateClob, updateClob, updateDate, updateDate, updateDouble, updateDouble, updateFloat, updateFloat, updateInt, updateInt, updateLong, updateLong, updateNCharacterStream, updateNCharacterStream, updateNCharacterStream, updateNCharacterStream, updateNClob, updateNClob, updateNClob, updateNClob, updateNClob, updateNClob, updateNString, updateNString, updateNull, updateNull, updateObject, updateObject, updateObject, updateObject, updateRef, updateRef, updateRow, updateRowId, updateRowId, updateShort, updateShort, updateSQLXML, updateSQLXML, updateString, updateString, updateTime, updateTime, updateTimestamp, updateTimestamp
-
-
-
-
Field Detail
-
gotFile
private boolean gotFile
-
inputFileStreamReader
private java.io.InputStreamReader inputFileStreamReader
-
inputStream
private java.io.InputStream inputStream
-
bufferedReader
private java.io.BufferedReader bufferedReader
-
inputFileName
private java.lang.String inputFileName
-
hashTable
private java.util.Hashtable<java.lang.String,java.lang.String[]> hashTable
-
line
private java.lang.String line
-
endTimestampIndex
private int endTimestampIndex
-
threadIndex
private int threadIndex
-
xidIndex
private int xidIndex
-
lccidIndex
private int lccidIndex
-
currentRow
private java.lang.String[] currentRow
-
END_TIMESTAMP
private static final java.lang.String END_TIMESTAMP
- See Also:
- Constant Field Values
-
BEGIN_THREAD_STRING
private static final java.lang.String BEGIN_THREAD_STRING
- See Also:
- Constant Field Values
-
END_THREAD_STRING
private static final java.lang.String END_THREAD_STRING
- See Also:
- Constant Field Values
-
BEGIN_XID_STRING
private static final java.lang.String BEGIN_XID_STRING
- See Also:
- Constant Field Values
-
END_XID_STRING
private static final java.lang.String END_XID_STRING
- See Also:
- Constant Field Values
-
BEGIN_EXECUTING_STRING
private static final java.lang.String BEGIN_EXECUTING_STRING
- See Also:
- Constant Field Values
-
END_EXECUTING_STRING
private static final java.lang.String END_EXECUTING_STRING
- See Also:
- Constant Field Values
-
columnInfo
private static final ResultColumnDescriptor[] columnInfo
-
metadata
private static final java.sql.ResultSetMetaData metadata
-
-
Constructor Detail
-
StatementDuration
public StatementDuration() throws StandardExceptionStatementDuration() accesses the error log in derby.system.home, if set, otherwise it looks in the current directory. StatementDuration('filename') will access the specified file name.- Throws:
StandardException
-
StatementDuration
public StatementDuration(java.lang.String inputFileName) throws StandardException- Throws:
StandardException
-
-
Method Detail
-
getMetaData
public java.sql.ResultSetMetaData getMetaData()
- Specified by:
getMetaDatain interfacejava.sql.ResultSet- Overrides:
getMetaDatain classVTITemplate- See Also:
ResultSet.getMetaData()
-
next
public boolean next() throws java.sql.SQLException- Throws:
java.sql.SQLException- If database access error occurs.- See Also:
ResultSet.next()
-
stringToTimestamp
private java.sql.Timestamp stringToTimestamp(java.lang.String raw) throws java.sql.SQLException- Throws:
java.sql.SQLException
-
close
public void close()
- See Also:
ResultSet.close()
-
getString
public java.lang.String getString(int columnNumber) throws java.sql.SQLExceptionAll columns in StatementDuration VTI have String data types.- Specified by:
getStringin interfacejava.sql.ResultSet- Overrides:
getStringin classVTITemplate- Throws:
java.sql.SQLException- If database access error occurs.- See Also:
ResultSet.getString(int)
-
setupColumn
private java.lang.String setupColumn(int columnNumber) throws java.sql.SQLException- Throws:
java.sql.SQLException
-
wasNull
public boolean wasNull()
- Specified by:
wasNullin interfacejava.sql.ResultSet- Overrides:
wasNullin classVTITemplate- See Also:
ResultSet.wasNull()
-
-