org.h2.engine

## Class DbSettings

- java.lang.Object
- - org.h2.engine.SettingsBase
  - - org.h2.engine.DbSettings

-     public class DbSettings
      extends SettingsBase

  This class contains various database-level settings. To override the documented default value for a database, append the setting in the database URL: "jdbc:h2:./test;ANALYZE_SAMPLE=1000" when opening the first connection to the database. The settings can not be changed once the database is open.

  Some settings are a last resort and temporary solution to work around a problem in the application or database engine. Also, there are system properties to enable features that are not yet fully tested or that are not backward compatible.

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `int` | `analyzeAuto` Database setting `ANALYZE_AUTO` (default: 2000).
    `int` | `analyzeSample` Database setting `ANALYZE_SAMPLE` (default: 10000).
    `int` | `autoCompactFillRate` Database setting `AUTO_COMPACT_FILL_RATE` (default: 90, which means 90%, 0 disables auto-compacting).
    `boolean` | `caseInsensitiveIdentifiers` Database setting `CASE_INSENSITIVE_IDENTIFIERS` (default: false).
    `boolean` | `compressData` Database setting `COMPRESS` (default: false).
    `boolean` | `databaseToLower` Database setting `DATABASE_TO_LOWER` (default: false).
    `boolean` | `databaseToUpper` Database setting `DATABASE_TO_UPPER` (default: true).
    `boolean` | `dbCloseOnExit` Database setting `DB_CLOSE_ON_EXIT` (default: true).
    `static DbSettings` | `DEFAULT` INTERNAL.
    `boolean` | `defaultConnection` Database setting `DEFAULT_CONNECTION` (default: false).
    `java.lang.String` | `defaultEscape` Database setting `DEFAULT_ESCAPE` (default: \).
    `java.lang.String` | `defaultTableEngine` Database setting `DEFAULT_TABLE_ENGINE` (default: null).
    `boolean` | `defragAlways` Database setting `DEFRAG_ALWAYS` (default: false) Each time the database is closed normally, it is fully defragmented (the same as SHUTDOWN DEFRAG).
    `boolean` | `dropRestrict` Database setting `DROP_RESTRICT` (default: true) Whether the default action for DROP TABLE, DROP VIEW, DROP SCHEMA, DROP DOMAIN, and DROP CONSTRAINT is RESTRICT.
    `int` | `estimatedFunctionTableRows` Database setting `ESTIMATED_FUNCTION_TABLE_ROWS` (default: 1000).
    `boolean` | `ignoreCatalogs` Database setting `IGNORE_CATALOGS` (default: false).
    `int` | `lobTimeout` Database setting `LOB_TIMEOUT` (default: 300000, which means 5 minutes).
    `int` | `maxCompactTime` Database setting `MAX_COMPACT_TIME` (default: 200).
    `int` | `maxQueryTimeout` Database setting `MAX_QUERY_TIMEOUT` (default: 0).
    `boolean` | `mvStore` Database setting `MV_STORE` (default: true).
    `boolean` | `optimizeDistinct` Database setting `OPTIMIZE_DISTINCT` (default: true).
    `boolean` | `optimizeEvaluatableSubqueries` Database setting `OPTIMIZE_EVALUATABLE_SUBQUERIES` (default: true).
    `boolean` | `optimizeInList` Database setting `OPTIMIZE_IN_LIST` (default: true).
    `boolean` | `optimizeInSelect` Database setting `OPTIMIZE_IN_SELECT` (default: true).
    `boolean` | `optimizeInsertFromSelect` Database setting `OPTIMIZE_INSERT_FROM_SELECT` (default: true).
    `boolean` | `optimizeOr` Database setting `OPTIMIZE_OR` (default: true).
    `boolean` | `optimizeSimpleSingleRowSubqueries` Database setting `OPTIMIZE_SIMPLE_SINGLE_ROW_SUBQUERIES` (default: true).
    `boolean` | `optimizeTwoEquals` Database setting `OPTIMIZE_TWO_EQUALS` (default: true).
    `int` | `queryCacheSize` Database setting `QUERY_CACHE_SIZE` (default: 8).
    `boolean` | `recompileAlways` Database setting `RECOMPILE_ALWAYS` (default: false).
    `boolean` | `reuseSpace` Database setting `REUSE_SPACE` (default: true).
    `boolean` | `shareLinkedConnections` Database setting `SHARE_LINKED_CONNECTIONS` (default: true).
    `boolean` | `zeroBasedEnums` Database setting `ZERO_BASED_ENUMS` (default: false).

  - ### Method Summary

    - ### Methods inherited from class org.h2.engine.SettingsBase

      `containsKey, get, get, get, getSettings, getSortedSettings`

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

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

- - ### Field Detail

    - #### DEFAULT

          public static final DbSettings DEFAULT

      INTERNAL. The default settings. Those must not be modified.

    - #### analyzeAuto

          public final int analyzeAuto

      Database setting `ANALYZE_AUTO` (default: 2000). After changing this many rows, ANALYZE is automatically run for a table. Automatically running ANALYZE is disabled if set to 0. If set to 1000, then ANALYZE will run against each user table after about 1000 changes to that table. The time between running ANALYZE doubles each time since starting the database. It is not run on local temporary tables, and tables that have a trigger on SELECT.

    - #### analyzeSample

          public final int analyzeSample

      Database setting `ANALYZE_SAMPLE` (default: 10000). The default sample size when analyzing a table.

    - #### autoCompactFillRate

          public final int autoCompactFillRate

      Database setting `AUTO_COMPACT_FILL_RATE` (default: 90, which means 90%, 0 disables auto-compacting). Set the auto-compact target fill rate. If the average fill rate (the percentage of the storage space that contains active data) of the chunks is lower, then the chunks with a low fill rate are re-written. Also, if the percentage of empty space between chunks is higher than this value, then chunks at the end of the file are moved. Compaction stops if the target fill rate is reached. This setting only affects MVStore engine.

    - #### databaseToLower

          public final boolean databaseToLower

      Database setting `DATABASE_TO_LOWER` (default: false). When set to true unquoted identifiers and short name of database are converted to lower case. Value of this setting should not be changed after creation of database. Setting this to "true" is experimental.

    - #### databaseToUpper

          public final boolean databaseToUpper

      Database setting `DATABASE_TO_UPPER` (default: true). When set to true unquoted identifiers and short name of database are converted to upper case.

    - #### caseInsensitiveIdentifiers

          public final boolean caseInsensitiveIdentifiers

      Database setting `CASE_INSENSITIVE_IDENTIFIERS` (default: false). When set to true, all identifier names (table names, column names) are case insensitive. Setting this to "true" is experimental.

    - #### dbCloseOnExit

          public final boolean dbCloseOnExit

      Database setting `DB_CLOSE_ON_EXIT` (default: true). Close the database when the virtual machine exits normally, using a shutdown hook.

    - #### defaultConnection

          public final boolean defaultConnection

      Database setting `DEFAULT_CONNECTION` (default: false). Whether Java functions can use `DriverManager.getConnection("jdbc:default:connection")` to get a database connection. This feature is disabled by default for performance reasons. Please note the Oracle JDBC driver will try to resolve this database URL if it is loaded before the H2 driver.

    - #### defaultEscape

          public final java.lang.String defaultEscape

      Database setting `DEFAULT_ESCAPE` (default: \). The default escape character for LIKE comparisons. To select no escape character, use an empty string.

    - #### defragAlways

          public final boolean defragAlways

      Database setting `DEFRAG_ALWAYS` (default: false) Each time the database is closed normally, it is fully defragmented (the same as SHUTDOWN DEFRAG). If you execute SHUTDOWN COMPACT, then this setting is ignored.

    - #### dropRestrict

          public final boolean dropRestrict

      Database setting `DROP_RESTRICT` (default: true) Whether the default action for DROP TABLE, DROP VIEW, DROP SCHEMA, DROP DOMAIN, and DROP CONSTRAINT is RESTRICT.

    - #### estimatedFunctionTableRows

          public final int estimatedFunctionTableRows

      Database setting `ESTIMATED_FUNCTION_TABLE_ROWS` (default: 1000). The estimated number of rows in a function table (for example, CSVREAD or FTL_SEARCH). This value is used by the optimizer.

    - #### lobTimeout

          public final int lobTimeout

      Database setting `LOB_TIMEOUT` (default: 300000, which means 5 minutes). The number of milliseconds a temporary LOB reference is kept until it times out. After the timeout, the LOB is no longer accessible using this reference.

    - #### maxCompactTime

          public final int maxCompactTime

      Database setting `MAX_COMPACT_TIME` (default: 200). The maximum time in milliseconds used to compact a database when closing.

    - #### maxQueryTimeout

          public final int maxQueryTimeout

      Database setting `MAX_QUERY_TIMEOUT` (default: 0). The maximum timeout of a query in milliseconds. The default is 0, meaning no limit. Please note the actual query timeout may be set to a lower value.

    - #### optimizeDistinct

          public final boolean optimizeDistinct

      Database setting `OPTIMIZE_DISTINCT` (default: true). Improve the performance of simple DISTINCT queries if an index is available for the given column. The optimization is used if:
      - The select is a single column query without condition
      - The query contains only one table, and no group by
      - There is only one table involved
      - There is an ascending index on the column
      - The selectivity of the column is below 20

    - #### optimizeEvaluatableSubqueries

          public final boolean optimizeEvaluatableSubqueries

      Database setting `OPTIMIZE_EVALUATABLE_SUBQUERIES` (default: true). Optimize subqueries that are not dependent on the outer query.

    - #### optimizeInsertFromSelect

          public final boolean optimizeInsertFromSelect

      Database setting `OPTIMIZE_INSERT_FROM_SELECT` (default: true). Insert into table from query directly bypassing temporary disk storage. This also applies to create table as select.

    - #### optimizeInList

          public final boolean optimizeInList

      Database setting `OPTIMIZE_IN_LIST` (default: true). Optimize IN(...) and IN(SELECT ...) comparisons. This includes optimization for SELECT, DELETE, and UPDATE.

    - #### optimizeInSelect

          public final boolean optimizeInSelect

      Database setting `OPTIMIZE_IN_SELECT` (default: true). Optimize IN(SELECT ...) comparisons. This includes optimization for SELECT, DELETE, and UPDATE.

    - #### optimizeOr

          public final boolean optimizeOr

      Database setting `OPTIMIZE_OR` (default: true). Convert (C=? OR C=?) to (C IN(?, ?)).

    - #### optimizeTwoEquals

          public final boolean optimizeTwoEquals

      Database setting `OPTIMIZE_TWO_EQUALS` (default: true). Optimize expressions of the form A=B AND B=1. In this case, AND A=1 is added so an index on A can be used.

    - #### optimizeSimpleSingleRowSubqueries

          public final boolean optimizeSimpleSingleRowSubqueries

      Database setting `OPTIMIZE_SIMPLE_SINGLE_ROW_SUBQUERIES` (default: true). Optimize expressions of the form (SELECT A) to A.

    - #### queryCacheSize

          public final int queryCacheSize

      Database setting `QUERY_CACHE_SIZE` (default: 8). The size of the query cache, in number of cached statements. Each session has it's own cache with the given size. The cache is only used if the SQL statement and all parameters match. Only the last returned result per query is cached. The following statement types are cached: SELECT statements are cached (excluding UNION and FOR UPDATE statements), CALL if it returns a single value, DELETE, INSERT, MERGE, UPDATE, and transactional statements such as COMMIT. This works for both statements and prepared statement.

    - #### recompileAlways

          public final boolean recompileAlways

      Database setting `RECOMPILE_ALWAYS` (default: false). Always recompile prepared statements.

    - #### reuseSpace

          public final boolean reuseSpace

      Database setting `REUSE_SPACE` (default: true). If disabled, all changes are appended to the database file, and existing content is never overwritten. This setting has no effect if the database is already open.

    - #### shareLinkedConnections

          public final boolean shareLinkedConnections

      Database setting `SHARE_LINKED_CONNECTIONS` (default: true). Linked connections should be shared, that means connections to the same database should be used for all linked tables that connect to the same database.

    - #### defaultTableEngine

          public final java.lang.String defaultTableEngine

      Database setting `DEFAULT_TABLE_ENGINE` (default: null). The default table engine to use for new tables.

    - #### mvStore

          public final boolean mvStore

      Database setting `MV_STORE` (default: true). Use the MVStore storage engine.

    - #### compressData

          public final boolean compressData

      Database setting `COMPRESS` (default: false). Compress data when storing.

    - #### ignoreCatalogs

          public final boolean ignoreCatalogs

      Database setting `IGNORE_CATALOGS` (default: false). If set, all catalog names in identifiers are silently accepted without comparing them with the short name of the database.

    - #### zeroBasedEnums

          public final boolean zeroBasedEnums

      Database setting `ZERO_BASED_ENUMS` (default: false). If set, ENUM ordinal values are 0-based.