Package org.h2.engine

Class 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 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).
      (package private) static int TABLE_SIZE
      The initial size of the hash table.
      boolean zeroBasedEnums
      Database setting ZERO_BASED_ENUMS (default: false).
    • Constructor Summary

      Constructors 
      Modifier Constructor Description
      private DbSettings​(java.util.HashMap<java.lang.String,​java.lang.String> s)  
    • Field Detail

      • TABLE_SIZE

        static final int TABLE_SIZE
        The initial size of the hash table.
        See Also:
        Constant Field Values
      • 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.
    • Constructor Detail

      • DbSettings

        private DbSettings​(java.util.HashMap<java.lang.String,​java.lang.String> s)
    • Method Detail

      • getInstance

        static DbSettings getInstance​(java.util.HashMap<java.lang.String,​java.lang.String> s)
        INTERNAL. Get the settings for the given properties (may not be null).
        Parameters:
        s - the settings
        Returns:
        the settings