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​(java.lang.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

    All Methods Static Methods Instance Methods Concrete Methods
    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​(java.sql.Connection connection)` | Get transaction information for an existing database connection.
    `void` | `getHeaderPage()` | Fetch the database statistics header page.
    `void` | `getTableStatistics​(java.lang.String[] tableNames)` | Get the table statistics.

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

      `attachDatabase, attachServiceManager, connectionPropertyValues, createRequestBuffer, executeServicesOperation, 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, getEncoding, getPassword, getPortNumber, getProcessId, getProcessName, getRoleName, getServerName, getSocketBufferSize, getSoTimeout, getType, getUser, getWireCrypt, isWireCompression, setAuthPlugins, setCharSet, setConnectTimeout, setDbCryptConfig, setEncoding, setPassword, setPortNumber, setProcessId, setProcessName, setRoleName, setServerName, setSocketBufferSize, 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 Detail

    - #### FBStatisticsManager

          public FBStatisticsManager()

      Create a new instance of `FBMaintenanceManager` based on the default GDSType.

    - #### FBStatisticsManager

          public FBStatisticsManager​(java.lang.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 Detail

    - #### getHeaderPage

          public void getHeaderPage()
                             throws java.sql.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:
        `java.sql.SQLException` - if a database access error occurs

    - #### getDatabaseStatistics

          public void getDatabaseStatistics()
                                     throws java.sql.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:
        `java.sql.SQLException` - if a database access error occurs

    - #### getDatabaseStatistics

          public void getDatabaseStatistics​(int options)
                                     throws java.sql.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:
        `java.sql.SQLException`

    - #### getTableStatistics

          public void getTableStatistics​(java.lang.String[] tableNames)
                                  throws java.sql.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:
        `java.sql.SQLException` - if something went wrong.

    - #### getDatabaseTransactionInfo

          public StatisticsManager.DatabaseTransactionInfo getDatabaseTransactionInfo()
                                                                               throws java.sql.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:
        `java.sql.SQLException` - If `database` is not specified, or for failures to connect or retrieve information

    - #### getDatabaseTransactionInfo

          public static StatisticsManager.DatabaseTransactionInfo getDatabaseTransactionInfo​(java.sql.Connection connection)
                                                                                      throws java.sql.SQLException

      Get transaction information for an existing database connection.
      Parameters:
        `connection` - Database connection; must unwrap to `FirebirdConnection`.
      Returns:
        Database transaction information
      Throws:
        `java.sql.SQLException` - If `connection` does not unwrap to `FirebirdConnection`, or for failures to retrieve information