Module org.firebirdsql.jaybird
Package org.firebirdsql.management

# Class FBStatisticsManager

java.lang.Object
org.firebirdsql.management.FBServiceManager
org.firebirdsql.management.FBStatisticsManager

All Implemented Interfaces:
  `AttachmentProperties`, `BaseProperties`, `ServiceConnectionProperties`, `ServiceManager`, `StatisticsManager`

public class FBStatisticsManager extends FBServiceManager implements StatisticsManager
The `FBStatisticsManager` class is responsible for replicating the functionality of the `gstat` command-line tool.

This functionality includes:

- Retrieving data table statistics
- Retrieving the database header page
- Retrieving index statistics
- Retrieving database logging information
- Retrieving statistics for the data dictionary

Author:
  Gabriel Reid

## Nested Class Summary

## Nested classes/interfaces inherited from interface org.firebirdsql.management.StatisticsManager

`StatisticsManager.DatabaseTransactionInfo`

## Field Summary

### Fields inherited from class org.firebirdsql.management.FBServiceManager

`BUFFER_SIZE`

### Fields inherited from interface org.firebirdsql.management.StatisticsManager

`DATA_TABLE_STATISTICS, INDEX_STATISTICS, RECORD_VERSION_STATISTICS, SYSTEM_TABLE_STATISTICS`

## Constructor Summary

Constructors
Constructor
Description
`FBStatisticsManager()`
Create a new instance of `FBMaintenanceManager` based on the default GDSType.
`FBStatisticsManager(String gdsType)`
Create a new instance of `FBMaintenanceManager` based on a given GDSType.
`FBStatisticsManager(GDSType gdsType)`
Create a new instance of `FBMaintenanceManager` based on a given GDSType.

## Method Summary

Modifier and Type
Method
Description
`void`
`getDatabaseStatistics()`
Get the full database statistics information, excluding system table information.
`void`
`getDatabaseStatistics(int options)`
Get specific database statistics.
`StatisticsManager.DatabaseTransactionInfo`
`getDatabaseTransactionInfo()`
Get transaction information of the database specified in `database`.
`static StatisticsManager.DatabaseTransactionInfo`
`getDatabaseTransactionInfo(Connection connection)`
Get transaction information for an existing database connection.
`void`
`getHeaderPage()`
Fetch the database statistics header page.
`void`
`getTableStatistics(String[] tableNames)`
Get the table statistics.

### Methods inherited from class org.firebirdsql.management.FBServiceManager

`attachDatabase, attachServiceManager, connectionPropertyValues, createRequestBuffer, executeServicesOperation, getAuthPlugins, getBooleanProperty, getCharSet, getDatabase, getDbCryptConfig, getExpectedDb, getHost, getIntProperty, getLogger, getPassword, getPort, getPortNumber, getProperty, getServerName, getServerVersion, getServiceName, getUser, getWireCrypt, getWireCryptAsEnum, isWireCompression, queueService, setAuthPlugins, setBooleanProperty, setCharSet, setDatabase, setDbCryptConfig, setExpectedDb, setHost, setIntProperty, setLogger, setPassword, setPort, setPortNumber, setProperty, setServerName, setServiceName, setType, setUser, setWireCompression, setWireCryptAsEnum`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Methods inherited from interface org.firebirdsql.jaybird.props.AttachmentProperties

`getAuthPlugins, getCharSet, getConnectTimeout, getDbCryptConfig, getEnableProtocol, getEncoding, getParallelWorkers, getPassword, getPortNumber, getProcessId, getProcessName, getRoleName, getServerName, getSocketBufferSize, getSocketFactory, getSoTimeout, getType, getUser, getWireCrypt, isWireCompression, setAuthPlugins, setCharSet, setConnectTimeout, setDbCryptConfig, setEnableProtocol, setEncoding, setParallelWorkers, setPassword, setPortNumber, setProcessId, setProcessName, setRoleName, setServerName, setSocketBufferSize, setSocketFactory, setSoTimeout, setType, setUser, setWireCompression, setWireCrypt`

### Methods inherited from interface org.firebirdsql.jaybird.props.BaseProperties

`connectionPropertyValues, getBooleanProperty, getBooleanProperty, getIntProperty, getIntProperty, getProperty, getProperty, setBooleanProperty, setIntProperty, setProperty`

### Methods inherited from interface org.firebirdsql.jaybird.props.ServiceConnectionProperties

`getExpectedDb, getServiceName, setExpectedDb, setServiceName`

### Methods inherited from interface org.firebirdsql.management.ServiceManager

`getDatabase, getHost, getLogger, getPort, getServerVersion, getWireCryptAsEnum, setDatabase, setHost, setLogger, setPort, setWireCryptAsEnum`

## Constructor Details

### FBStatisticsManager

public FBStatisticsManager()
Create a new instance of `FBMaintenanceManager` based on the default GDSType.

### FBStatisticsManager

public FBStatisticsManager(String gdsType)
Create a new instance of `FBMaintenanceManager` based on a given GDSType.

Parameters:
  `gdsType` - type must be PURE_JAVA, EMBEDDED, or NATIVE

### FBStatisticsManager

public FBStatisticsManager(GDSType gdsType)
Create a new instance of `FBMaintenanceManager` based on a given GDSType.

Parameters:
  `gdsType` - The GDS implementation type to use

## Method Details

### getHeaderPage

public void getHeaderPage() throws SQLException
Description copied from interface: `StatisticsManager`
Fetch the database statistics header page.

The header information is written to this `StatisticsManager`'s logger.

Specified by:
  `getHeaderPage` in interface `StatisticsManager`
Throws:
  `SQLException` - if a database access error occurs

### getDatabaseStatistics

public void getDatabaseStatistics() throws SQLException
Description copied from interface: `StatisticsManager`
Get the full database statistics information, excluding system table information.

The statistics information is written to this `StatisticsManager`'s logger.

The listed data includes:

- statistics header page
- log statistics
- index statistics
- data table statistics

Invoking this method is equivalent to the default behaviour of `gstat` on the command-line.

Specified by:
  `getDatabaseStatistics` in interface `StatisticsManager`
Throws:
  `SQLException` - if a database access error occurs

### getDatabaseStatistics

public void getDatabaseStatistics(int options) throws SQLException
Description copied from interface: `StatisticsManager`
Get specific database statistics.

The statistics information is written to this `StatisticsManager`'s logger. All invocations of this method will result in the header page and log data being output.

The following options can be supplied as a bitmask:

- `DATA_TABLE_STATISTICS`
- `SYSTEM_TABLE_STATISTICS`
- `INDEX_STATISTICS`
- `RECORD_VERSION_STATISTICS`

If this method is invoked with `0` as the `options` value, only the header and log statistics will be output.

Specified by:
  `getDatabaseStatistics` in interface `StatisticsManager`
Parameters:
  `options` - A bitmask combination of `DATA_TABLE_STATISTICS`, `SYSTEM_TABLE_STATISTICS`, `INDEX_STATISTICS`, or `RECORD_VERSION_STATISTICS`. Can also be `0`, which is equivalent to calling method `StatisticsManager.getDatabaseStatistics()`
Throws:
  `SQLException`

### getTableStatistics

public void getTableStatistics(String[] tableNames) throws SQLException
Description copied from interface: `StatisticsManager`
Get the table statistics.

The statistics information is written to this `StatisticsManager`'s logger.

The listed data includes:

- the primary pointer and index root page numbers
- number of data pages and their average fill
- fill distribution

Invoking this method is equivalent to the behaviour of `gstat -t <table name>` on the command-line.

Specified by:
  `getTableStatistics` in interface `StatisticsManager`
Parameters:
  `tableNames` - array of table names to analyze.
Throws:
  `SQLException` - if something went wrong.

### getDatabaseTransactionInfo

public StatisticsManager.DatabaseTransactionInfo getDatabaseTransactionInfo() throws SQLException
Description copied from interface: `StatisticsManager`
Get transaction information of the database specified in `database`.

Specified by:
  `getDatabaseTransactionInfo` in interface `StatisticsManager`
Returns:
  Database transaction information
Throws:
  `SQLException` - If `database` is not specified, or for failures to connect or retrieve information

### getDatabaseTransactionInfo

public static StatisticsManager.DatabaseTransactionInfo getDatabaseTransactionInfo(Connection connection) throws SQLException
Get transaction information for an existing database connection.

Parameters:
  `connection` - Database connection; must unwrap to `FirebirdConnection`.
Returns:
  Database transaction information
Throws:
  `SQLException` - If `connection` does not unwrap to `FirebirdConnection`, or for failures to retrieve information
Since:
  3