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