System Properties

Datomic's Java system properties are all named via the convention datomic.somePropertyName.

Memory settings can be specified in plain bytes, or use k / m / g suffixes for kilobytes / megabytes / gigabytes, e.g. 256m.

Peer properties

Datomic Peer properties should be set using command line arguments, for example:

-Ddatomic.txTimeoutMsec=60000

propertyuseunitsdefault
datomic.memcachedPasswordmemcached passwordstring{none}
datomic.memcachedServersmemcached server listhost:port(,host:port)*{none}
datomic.memcachedUsernamememcached usernamestring{none}
datomic.objectCacheMaxsize of object cachebytes50% of VM RAM
datomic.readConcurrencysoft limit on concurrent storage readsinteger2x write concurrency
datomic.txTimeoutMsectimeout for Connection.transactinteger milliseconds10000
datomic.metricsCallbackcallback for reporting peer metricsstring{none}

Transactor properties

The equivalent names in the transactor properties file have no namespace, and are hyphen delimited lower case, e.g. some-property-name. The exception to this rule is the transactor property corresponding to `datomic.memcachedServers`, which is called `memcached`.

Please note that JVM args other than `-Xmx` and `-Xms` passed to `bin/transactor` (including Java system properties passed via `-D`) override Datomic's default Java options, including the GC settings.

system propertyuseunitsdefaultwhere to set
datomic.cassandraClusterCallbackname of a callback method/fn returning a Clusterstring{none}transactor properties file
datomic.heartbeatIntervalMsecinterval between heartbeat write to storageinteger milliseconds5000, also the minimumtransactor properties file
datomic.licenseKeytransactor license keystring{none}transactor properties file
datomic.memcachedPasswordmemcached passwordstring{none}transactor properties file
datomic.memcachedServersmemcached server listhost:port (,host:port)*{none}transactor properties file
datomic.memcachedUsernamememcached usernamestring{none}transactor properties file
datomic.memoryIndexThresholdsize that kicks off indexing jobbytes{see recommendations}transactor properties file
datomic.memoryIndexMaxtransactions throttle to let index job catch upbytes{see recommendations}transactor properties file
datomic.gcStoragePaceMsecpaces gc-storage delete operationsinteger (msec)0command line arg
datomic.metricsCallbackthe name of a static Java method or Clojure fnstringRAMtransactor properties file
datomic.objectCacheMaxsize of object cachebytes50% of VM RAMtransactor properties file
datomic.pidFilewrite pid to this file on startupfilename{none}transactor properties file
datomic.printConnectionInfoprint connection info at startupbooleantruecommand line arg
datomic.sqlUserusername for SQL storagestring{none}command line arg or transactor properties file
datomic.sqlPasswordpassword for SQL storagestring{none}command line arg or transactor properties file
datomic.sqlValidationQueryquery used to validate JDBC connectionsstring{see storage docs}transactor properties file
datomic.readConcurrencysoft limit on concurrent storage readsinteger2x write concurrencytransactor properties file
datomic.writeConcurrencysoft limit on concurrent storage writesinteger4transactor properties file

Backup properties

propertyuseunitsdefault
datomic.backupPaceMsecinterval to pause between backup writesinteger milliseconds{none}
datomic.fileBackupConcurrencynumber of threads used for file backup/restoreinteger5
datomic.s3BackupConcurrencynumber of threads used for s3 backup/restoreinteger25

Properties Changes

  • In 0.8.3814, datomic.objectCacheBytes was deprecated, and renamed to datomic.objectCacheMax.
  • In 0.8.4110, the defaults for datomic.objectCacheMax, datomic.memoryIndexThreshold, and datomic.memoryIndexMax were removed on the transactor, so that the transactor properties file must now specify values for these properties. Peer defaults remain as described above.