Package org.firebirdsql.management

## Interface StatisticsManager

- All Superinterfaces:
    `AttachmentProperties`, `BaseProperties`, `ServiceConnectionProperties`, `ServiceManager`
  All Known Implementing Classes:
    `FBStatisticsManager`

      public interface StatisticsManager
      extends ServiceManager

  A `StatisticsManager` 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
    Modifier and Type | Interface | Description
    --- | --- | ---
    `static class` | `StatisticsManager.DatabaseTransactionInfo` |

  - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `static int` | `DATA_TABLE_STATISTICS` | Request statistics on data tables.
    `static int` | `INDEX_STATISTICS` | Request statistics on indexes.
    `static int` | `RECORD_VERSION_STATISTICS` | Request statistics on record versions.
    `static int` | `SYSTEM_TABLE_STATISTICS` | Request statistics on system tables.

  - ### Method Summary

    All Methods Instance Methods Abstract 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`.
    `void` | `getHeaderPage()` | Fetch the database statistics header page.
    `void` | `getTableStatistics​(java.lang.String[] tableNames)` | Get the table statistics.

    - ### 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`

- - ### Field Detail

    - #### DATA_TABLE_STATISTICS

          static final int DATA_TABLE_STATISTICS

      Request statistics on data tables.
      See Also:
        Constant Field Values

    - #### INDEX_STATISTICS

          static final int INDEX_STATISTICS

      Request statistics on indexes.
      See Also:
        Constant Field Values

    - #### SYSTEM_TABLE_STATISTICS

          static final int SYSTEM_TABLE_STATISTICS

      Request statistics on system tables.
      See Also:
        Constant Field Values

    - #### RECORD_VERSION_STATISTICS

          static final int RECORD_VERSION_STATISTICS

      Request statistics on record versions.
      See Also:
        Constant Field Values

  - ### Method Detail

    - #### getHeaderPage

          void getHeaderPage()
                      throws java.sql.SQLException

      Fetch the database statistics header page.

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

      Throws:
        `java.sql.SQLException` - if a database access error occurs

    - #### getDatabaseStatistics

          void getDatabaseStatistics()
                              throws java.sql.SQLException

      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.

      Throws:
        `java.sql.SQLException` - if a database access error occurs

    - #### getDatabaseStatistics

          void getDatabaseStatistics​(int options)
                              throws java.sql.SQLException

      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.

      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 `getDatabaseStatistics()`
      Throws:
        `java.sql.SQLException`

    - #### getTableStatistics

          void getTableStatistics​(java.lang.String[] tableNames)
                           throws java.sql.SQLException

      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.

      Parameters:
        `tableNames` - array of table names to analyze.
      Throws:
        `java.sql.SQLException` - if something went wrong.

    - #### getDatabaseTransactionInfo

          StatisticsManager.DatabaseTransactionInfo getDatabaseTransactionInfo()
                                                                        throws java.sql.SQLException

      Get transaction information of the database specified in `database`.
      Returns:
        Database transaction information
      Throws:
        `java.sql.SQLException` - If `database` is not specified, or for failures to connect or retrieve information