org.apache.derby.diag
Class StatementDuration
java.lang.Object
org.apache.derby.vti.VTITemplateBase
org.apache.derby.vti.VTITemplate
org.apache.derby.diag.StatementDuration
- All Implemented Interfaces:
- java.sql.ResultSet, java.sql.Wrapper
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.
| Fields inherited from interface java.sql.ResultSet |
CLOSE_CURSORS_AT_COMMIT, CONCUR_READ_ONLY, CONCUR_UPDATABLE, FETCH_FORWARD, FETCH_REVERSE, FETCH_UNKNOWN, HOLD_CURSORS_OVER_COMMIT, TYPE_FORWARD_ONLY, TYPE_SCROLL_INSENSITIVE, TYPE_SCROLL_SENSITIVE |
|
Constructor Summary |
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 |
void |
close()
|
java.sql.ResultSetMetaData |
getMetaData()
|
java.lang.String |
getString(int columnNumber)
All columns in StatementDuration VTI have String data types. |
boolean |
next()
|
private java.lang.String |
setupColumn(int columnNumber)
|
private java.sql.Timestamp |
stringToTimestamp(java.lang.String raw)
|
boolean |
wasNull()
|
| Methods inherited from class org.apache.derby.vti.VTITemplate |
getBigDecimal, getBigDecimal, getBoolean, getByte, getBytes, getDate, getDouble, getFloat, getInt, getLong, getObject, getShort, getString, getTime, getTimestamp |
| Methods inherited from class org.apache.derby.vti.VTITemplateBase |
absolute, afterLast, beforeFirst, cancelRowUpdates, clearWarnings, deleteRow, findColumn, first, getArray, getArray, getAsciiStream, getAsciiStream, getBigDecimal, getBigDecimal, getBinaryStream, getBinaryStream, getBlob, getBlob, getBoolean, getByte, getBytes, getCharacterStream, getCharacterStream, getClob, getClob, getConcurrency, getCursorName, getDate, getDate, getDate, getDouble, getFetchDirection, getFetchSize, getFloat, getInt, getLong, getObject, getObject, getObject, getRef, getRef, getRow, getShort, getStatement, getTime, getTime, getTime, getTimestamp, getTimestamp, getTimestamp, getType, getUnicodeStream, getUnicodeStream, getURL, getURL, getWarnings, insertRow, isAfterLast, isBeforeFirst, isFirst, isLast, last, moveToCurrentRow, moveToInsertRow, notImplemented, previous, refreshRow, relative, rowDeleted, rowInserted, rowUpdated, setFetchDirection, setFetchSize, updateArray, updateArray, updateAsciiStream, updateAsciiStream, updateBigDecimal, updateBigDecimal, updateBinaryStream, updateBinaryStream, updateBlob, updateBlob, updateBoolean, updateBoolean, updateByte, updateByte, updateBytes, updateBytes, updateCharacterStream, updateCharacterStream, updateClob, updateClob, updateDate, updateDate, updateDouble, updateDouble, updateFloat, updateFloat, updateInt, updateInt, updateLong, updateLong, updateNull, updateNull, updateObject, updateObject, updateObject, updateObject, updateRef, updateRef, updateRow, updateShort, updateShort, updateString, updateString, updateTime, updateTime, updateTimestamp, updateTimestamp |
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Methods inherited from interface java.sql.ResultSet |
getHoldability, getNCharacterStream, getNCharacterStream, getNClob, getNClob, getNString, getNString, getRowId, getRowId, getSQLXML, getSQLXML, isClosed, updateAsciiStream, updateAsciiStream, updateAsciiStream, updateAsciiStream, updateBinaryStream, updateBinaryStream, updateBinaryStream, updateBinaryStream, updateBlob, updateBlob, updateBlob, updateBlob, updateCharacterStream, updateCharacterStream, updateCharacterStream, updateCharacterStream, updateClob, updateClob, updateClob, updateClob, updateNCharacterStream, updateNCharacterStream, updateNCharacterStream, updateNCharacterStream, updateNClob, updateNClob, updateNClob, updateNClob, updateNClob, updateNClob, updateNString, updateNString, updateRowId, updateRowId, updateSQLXML, updateSQLXML |
| Methods inherited from interface java.sql.Wrapper |
isWrapperFor, unwrap |
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 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
StatementDuration
public StatementDuration()
throws StandardException
- StatementDuration() 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
getMetaData
public java.sql.ResultSetMetaData getMetaData()
- Specified by:
getMetaData in interface java.sql.ResultSet- Overrides:
getMetaData in class VTITemplateBase
- See Also:
ResultSet.getMetaData()
next
public boolean next()
throws java.sql.SQLException
- Specified by:
next in interface java.sql.ResultSet- Specified by:
next in class VTITemplate
- 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()
- Specified by:
close in interface java.sql.ResultSet- Specified by:
close in class VTITemplate
- See Also:
ResultSet.close()
getString
public java.lang.String getString(int columnNumber)
throws java.sql.SQLException
- All columns in StatementDuration VTI have String data types.
- Specified by:
getString in interface java.sql.ResultSet- Overrides:
getString in class VTITemplateBase
- 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:
wasNull in interface java.sql.ResultSet- Overrides:
wasNull in class VTITemplateBase
- See Also:
ResultSet.wasNull()
Apache Derby V10.10 Internals - Copyright © 2004,2013 The Apache Software Foundation. All Rights Reserved.