# derby.system.durability

#### Function

This property changes the default durability of Derby to improve performance at the expense of consistency and durability of the database. The only valid supported case insensitive value is `test`. If this property is set to any value other than `test`, this property setting is ignored. When `derby.system.durability` is set to `test`, the store system will not force I/O synchronization calls for:

- The log file at each commit
- The log file before a data page is forced to disk
- Page allocation when a file is grown
- Data writes during checkpoints

While performance is improved, note that under these conditions, a commit no longer guarantees that the transaction's modification will survive a system crash or JVM termination, the database may not recover successfully upon restart, a near-full disk at runtime may cause unexpected errors, and the database may be in an inconsistent state.

If you boot the database with this property set to `test`, the following warning message is logged in the `derby.log` file:

    WARNING: The database is booted with derby.system.durability=test.
    In this mode, it is possible that database may not be able
    to recover, committed transactions may be lost, and the database
    may be in an inconsistent state. Please use this mode only when
    these consequences are acceptable.

A similar message will appear in the `derby.log` file if the database was booted with `derby.system.durability=test` at any time previously.

Once the database is booted with `derby.system.durability=test`, there are no guarantees that the database is consistent.

#### Default

This property is ignored by default.

#### Supported values

The only supported value is `test`.

#### Example

    derby.system.durability=test

Since this is a system property, you can set it in the `derby.properties` file or on the command line of the JVM when starting the application.

You might enable this property when using Derby as a test database where consistency or recoverability is not an issue.

#### Dynamic or static

This property is static; if you change it while Derby is running, the change does not take effect until you reboot.

Parent topic: Derby properties
Related reference
derby.authentication.ldap.searchAuthDN
derby.authentication.ldap.searchAuthPW
derby.authentication.ldap.searchBase
derby.authentication.ldap.searchFilter
derby.authentication.provider
derby.authentication.server
derby.connection.requireAuthentication
derby.database.defaultConnectionMode
derby.database.forceDatabaseLock
derby.database.fullAccessUsers
derby.database.noAutoBoot
derby.database.propertiesOnly
derby.database.readOnlyAccessUsers
derby.database.sqlAuthorization
derby.infolog.append
derby.jdbc.xaTransactionTimeout
derby.language.logQueryPlan
derby.language.logStatementText
derby.locks.deadlockTimeout
derby.locks.deadlockTrace
derby.locks.escalationThreshold
derby.locks.monitor
derby.locks.waitTimeout
derby.replication.logBufferSize
derby.replication.maxLogShippingInterval
derby.replication.minLogShippingInterval
derby.replication.verbose
derby.storage.initialPages
derby.storage.minimumRecordSize
derby.storage.pageCacheSize
derby.storage.pageReservedSpace
derby.storage.pageSize
derby.storage.rowLocking
derby.storage.tempDirectory
derby.stream.error.field
derby.stream.error.file
derby.stream.error.method
derby.stream.error.logSeverityLevel
derby.system.bootAll
derby.system.home
derby.user.UserName