Summary: Options extends now two interfaces DBOptionsInterface and ColumnFamilyOptionsInterface. There are also further improvements to the Options bindings: Optimize methods were ported to Java. (OptimizeForPointLookup, OptimizeLevelCompaction, OptimizeUniversalCompaction). To align BuiltinComparator with every other Enum it was moved to a separate file. Test Plan: make rocksdbjava make jtestmain
parent
0f7f3b8605
commit
39464a990f
@ -0,0 +1,20 @@ |
|||||||
|
// Copyright (c) 2014, Facebook, Inc. All rights reserved.
|
||||||
|
// This source code is licensed under the BSD-style license found in the
|
||||||
|
// LICENSE file in the root directory of this source tree. An additional grant
|
||||||
|
// of patent rights can be found in the PATENTS file in the same directory.
|
||||||
|
|
||||||
|
package org.rocksdb; |
||||||
|
|
||||||
|
/** |
||||||
|
* Builtin RocksDB comparators |
||||||
|
* |
||||||
|
* <ol> |
||||||
|
* <li>BYTEWISE_COMPARATOR - Sorts all keys in ascending bytewise |
||||||
|
* order.</li> |
||||||
|
* <li>REVERSE_BYTEWISE_COMPARATOR - Sorts all keys in descending bytewise |
||||||
|
* order</li> |
||||||
|
* </ol> |
||||||
|
*/ |
||||||
|
public enum BuiltinComparator { |
||||||
|
BYTEWISE_COMPARATOR, REVERSE_BYTEWISE_COMPARATOR |
||||||
|
} |
@ -0,0 +1,979 @@ |
|||||||
|
// Copyright (c) 2014, Facebook, Inc. All rights reserved.
|
||||||
|
// This source code is licensed under the BSD-style license found in the
|
||||||
|
// LICENSE file in the root directory of this source tree. An additional grant
|
||||||
|
// of patent rights can be found in the PATENTS file in the same directory.
|
||||||
|
|
||||||
|
package org.rocksdb; |
||||||
|
|
||||||
|
public interface ColumnFamilyOptionsInterface { |
||||||
|
|
||||||
|
/** |
||||||
|
* Use this if you don't need to keep the data sorted, i.e. you'll never use |
||||||
|
* an iterator, only Put() and Get() API calls |
||||||
|
* |
||||||
|
* @param blockCacheSizeMb Block cache size in MB |
||||||
|
* @return the instance of the current Object. |
||||||
|
*/ |
||||||
|
Object optimizeForPointLookup(long blockCacheSizeMb); |
||||||
|
|
||||||
|
/** |
||||||
|
* <p>Default values for some parameters in ColumnFamilyOptions are not |
||||||
|
* optimized for heavy workloads and big datasets, which means you might |
||||||
|
* observe write stalls under some conditions. As a starting point for tuning |
||||||
|
* RocksDB options, use the following for level style compaction.</p> |
||||||
|
* |
||||||
|
* <p>Make sure to also call IncreaseParallelism(), which will provide the |
||||||
|
* biggest performance gains.</p> |
||||||
|
* <p>Note: we might use more memory than memtable_memory_budget during high |
||||||
|
* write rate period</p> |
||||||
|
* |
||||||
|
* @return the instance of the current Object. |
||||||
|
*/ |
||||||
|
Object optimizeLevelStyleCompaction(); |
||||||
|
|
||||||
|
/** |
||||||
|
* <p>Default values for some parameters in ColumnFamilyOptions are not |
||||||
|
* optimized for heavy workloads and big datasets, which means you might |
||||||
|
* observe write stalls under some conditions. As a starting point for tuning |
||||||
|
* RocksDB options, use the following for level style compaction.</p> |
||||||
|
* |
||||||
|
* <p>Make sure to also call IncreaseParallelism(), which will provide the |
||||||
|
* biggest performance gains.</p> |
||||||
|
* <p>Note: we might use more memory than memtable_memory_budget during high |
||||||
|
* write rate period</p> |
||||||
|
* |
||||||
|
* @param memtableMemoryBudget memory budget in bytes |
||||||
|
* @return the instance of the current Object. |
||||||
|
*/ |
||||||
|
Object optimizeLevelStyleCompaction(long memtableMemoryBudget); |
||||||
|
|
||||||
|
/** |
||||||
|
* <p>Default values for some parameters in ColumnFamilyOptions are not |
||||||
|
* optimized for heavy workloads and big datasets, which means you might |
||||||
|
* observe write stalls under some conditions. As a starting point for tuning |
||||||
|
* RocksDB options, use the following for universal style compaction.</p> |
||||||
|
* |
||||||
|
* <p>Universal style compaction is focused on reducing Write Amplification |
||||||
|
* Factor for big data sets, but increases Space Amplification.</p> |
||||||
|
* |
||||||
|
* <p>Make sure to also call IncreaseParallelism(), which will provide the |
||||||
|
* biggest performance gains.</p> |
||||||
|
* |
||||||
|
* <p>Note: we might use more memory than memtable_memory_budget during high |
||||||
|
* write rate period</p> |
||||||
|
* |
||||||
|
* @return the instance of the current Object. |
||||||
|
*/ |
||||||
|
Object optimizeUniversalStyleCompaction(); |
||||||
|
|
||||||
|
/** |
||||||
|
* <p>Default values for some parameters in ColumnFamilyOptions are not |
||||||
|
* optimized for heavy workloads and big datasets, which means you might |
||||||
|
* observe write stalls under some conditions. As a starting point for tuning |
||||||
|
* RocksDB options, use the following for universal style compaction.</p> |
||||||
|
* |
||||||
|
* <p>Universal style compaction is focused on reducing Write Amplification |
||||||
|
* Factor for big data sets, but increases Space Amplification.</p> |
||||||
|
* |
||||||
|
* <p>Make sure to also call IncreaseParallelism(), which will provide the |
||||||
|
* biggest performance gains.</p> |
||||||
|
* |
||||||
|
* <p>Note: we might use more memory than memtable_memory_budget during high |
||||||
|
* write rate period</p> |
||||||
|
* |
||||||
|
* @param memtableMemoryBudget memory budget in bytes |
||||||
|
* @return the instance of the current Object. |
||||||
|
*/ |
||||||
|
Object optimizeUniversalStyleCompaction(long memtableMemoryBudget); |
||||||
|
|
||||||
|
/** |
||||||
|
* Set {@link BuiltinComparator} to be used with RocksDB. |
||||||
|
* |
||||||
|
* Note: Comparator can be set once upon database creation. |
||||||
|
* |
||||||
|
* Default: BytewiseComparator. |
||||||
|
* @param builtinComparator a {@link BuiltinComparator} type. |
||||||
|
* @return the instance of the current Object. |
||||||
|
*/ |
||||||
|
Object setComparator(BuiltinComparator builtinComparator); |
||||||
|
|
||||||
|
/** |
||||||
|
* Use the specified comparator for key ordering. |
||||||
|
* |
||||||
|
* Comparator should not be disposed before options instances using this comparator is |
||||||
|
* disposed. If dispose() function is not called, then comparator object will be |
||||||
|
* GC'd automatically. |
||||||
|
* |
||||||
|
* Comparator instance can be re-used in multiple options instances. |
||||||
|
* |
||||||
|
* @param comparator java instance. |
||||||
|
* @return the instance of the current Object. |
||||||
|
*/ |
||||||
|
Object setComparator(AbstractComparator comparator); |
||||||
|
|
||||||
|
/** |
||||||
|
* <p>Set the merge operator to be used for merging two merge operands |
||||||
|
* of the same key. The merge function is invoked during |
||||||
|
* compaction and at lookup time, if multiple key/value pairs belonging |
||||||
|
* to the same key are found in the database.</p> |
||||||
|
* |
||||||
|
* @param name the name of the merge function, as defined by |
||||||
|
* the MergeOperators factory (see utilities/MergeOperators.h) |
||||||
|
* The merge function is specified by name and must be one of the |
||||||
|
* standard merge operators provided by RocksDB. The available |
||||||
|
* operators are "put", "uint64add", "stringappend" and "stringappendtest". |
||||||
|
* @return the instance of the current Object. |
||||||
|
*/ |
||||||
|
public Object setMergeOperatorName(String name); |
||||||
|
|
||||||
|
/** |
||||||
|
* <p>Set the merge operator to be used for merging two different key/value |
||||||
|
* pairs that share the same key. The merge function is invoked during |
||||||
|
* compaction and at lookup time, if multiple key/value pairs belonging |
||||||
|
* to the same key are found in the database.</p> |
||||||
|
* |
||||||
|
* @param mergeOperator {@link MergeOperator} instance. |
||||||
|
* @return the instance of the current Object. |
||||||
|
*/ |
||||||
|
public Object setMergeOperator(MergeOperator mergeOperator); |
||||||
|
|
||||||
|
/** |
||||||
|
* Amount of data to build up in memory (backed by an unsorted log |
||||||
|
* on disk) before converting to a sorted on-disk file. |
||||||
|
* |
||||||
|
* Larger values increase performance, especially during bulk loads. |
||||||
|
* Up to {@code max_write_buffer_number} write buffers may be held in memory |
||||||
|
* at the same time, so you may wish to adjust this parameter |
||||||
|
* to control memory usage. |
||||||
|
* |
||||||
|
* Also, a larger write buffer will result in a longer recovery time |
||||||
|
* the next time the database is opened. |
||||||
|
* |
||||||
|
* Default: 4MB |
||||||
|
* @param writeBufferSize the size of write buffer. |
||||||
|
* @return the instance of the current Object. |
||||||
|
* @throws org.rocksdb.RocksDBException |
||||||
|
*/ |
||||||
|
Object setWriteBufferSize(long writeBufferSize) |
||||||
|
throws RocksDBException; |
||||||
|
|
||||||
|
/** |
||||||
|
* Return size of write buffer size. |
||||||
|
* |
||||||
|
* @return size of write buffer. |
||||||
|
* @see #setWriteBufferSize(long) |
||||||
|
*/ |
||||||
|
long writeBufferSize(); |
||||||
|
|
||||||
|
/** |
||||||
|
* The maximum number of write buffers that are built up in memory. |
||||||
|
* The default is 2, so that when 1 write buffer is being flushed to |
||||||
|
* storage, new writes can continue to the other write buffer. |
||||||
|
* Default: 2 |
||||||
|
* |
||||||
|
* @param maxWriteBufferNumber maximum number of write buffers. |
||||||
|
* @return the instance of the current Object. |
||||||
|
*/ |
||||||
|
Object setMaxWriteBufferNumber( |
||||||
|
int maxWriteBufferNumber); |
||||||
|
|
||||||
|
/** |
||||||
|
* Returns maximum number of write buffers. |
||||||
|
* |
||||||
|
* @return maximum number of write buffers. |
||||||
|
* @see #setMaxWriteBufferNumber(int) |
||||||
|
*/ |
||||||
|
int maxWriteBufferNumber(); |
||||||
|
|
||||||
|
/** |
||||||
|
* The minimum number of write buffers that will be merged together |
||||||
|
* before writing to storage. If set to 1, then |
||||||
|
* all write buffers are flushed to L0 as individual files and this increases |
||||||
|
* read amplification because a get request has to check in all of these |
||||||
|
* files. Also, an in-memory merge may result in writing lesser |
||||||
|
* data to storage if there are duplicate records in each of these |
||||||
|
* individual write buffers. Default: 1 |
||||||
|
* |
||||||
|
* @param minWriteBufferNumberToMerge the minimum number of write buffers |
||||||
|
* that will be merged together. |
||||||
|
* @return the reference to the current option. |
||||||
|
*/ |
||||||
|
Object setMinWriteBufferNumberToMerge( |
||||||
|
int minWriteBufferNumberToMerge); |
||||||
|
|
||||||
|
/** |
||||||
|
* The minimum number of write buffers that will be merged together |
||||||
|
* before writing to storage. If set to 1, then |
||||||
|
* all write buffers are flushed to L0 as individual files and this increases |
||||||
|
* read amplification because a get request has to check in all of these |
||||||
|
* files. Also, an in-memory merge may result in writing lesser |
||||||
|
* data to storage if there are duplicate records in each of these |
||||||
|
* individual write buffers. Default: 1 |
||||||
|
* |
||||||
|
* @return the minimum number of write buffers that will be merged together. |
||||||
|
*/ |
||||||
|
int minWriteBufferNumberToMerge(); |
||||||
|
|
||||||
|
/** |
||||||
|
* This prefix-extractor uses the first n bytes of a key as its prefix. |
||||||
|
* |
||||||
|
* In some hash-based memtable representation such as HashLinkedList |
||||||
|
* and HashSkipList, prefixes are used to partition the keys into |
||||||
|
* several buckets. Prefix extractor is used to specify how to |
||||||
|
* extract the prefix given a key. |
||||||
|
* |
||||||
|
* @param n use the first n bytes of a key as its prefix. |
||||||
|
*/ |
||||||
|
Object useFixedLengthPrefixExtractor(int n); |
||||||
|
|
||||||
|
/** |
||||||
|
* Compress blocks using the specified compression algorithm. This |
||||||
|
* parameter can be changed dynamically. |
||||||
|
* |
||||||
|
* Default: SNAPPY_COMPRESSION, which gives lightweight but fast compression. |
||||||
|
* |
||||||
|
* @param compressionType Compression Type. |
||||||
|
* @return the reference to the current option. |
||||||
|
*/ |
||||||
|
Object setCompressionType(CompressionType compressionType); |
||||||
|
|
||||||
|
/** |
||||||
|
* Compress blocks using the specified compression algorithm. This |
||||||
|
* parameter can be changed dynamically. |
||||||
|
* |
||||||
|
* Default: SNAPPY_COMPRESSION, which gives lightweight but fast compression. |
||||||
|
* |
||||||
|
* @return Compression type. |
||||||
|
*/ |
||||||
|
CompressionType compressionType(); |
||||||
|
|
||||||
|
/** |
||||||
|
* Set the number of levels for this database |
||||||
|
* If level-styled compaction is used, then this number determines |
||||||
|
* the total number of levels. |
||||||
|
* |
||||||
|
* @param numLevels the number of levels. |
||||||
|
* @return the reference to the current option. |
||||||
|
*/ |
||||||
|
Object setNumLevels(int numLevels); |
||||||
|
|
||||||
|
/** |
||||||
|
* If level-styled compaction is used, then this number determines |
||||||
|
* the total number of levels. |
||||||
|
* |
||||||
|
* @return the number of levels. |
||||||
|
*/ |
||||||
|
int numLevels(); |
||||||
|
|
||||||
|
/** |
||||||
|
* Number of files to trigger level-0 compaction. A value < 0 means that |
||||||
|
* level-0 compaction will not be triggered by number of files at all. |
||||||
|
* Default: 4 |
||||||
|
* |
||||||
|
* @param numFiles the number of files in level-0 to trigger compaction. |
||||||
|
* @return the reference to the current option. |
||||||
|
*/ |
||||||
|
Object setLevelZeroFileNumCompactionTrigger( |
||||||
|
int numFiles); |
||||||
|
|
||||||
|
/** |
||||||
|
* The number of files in level 0 to trigger compaction from level-0 to |
||||||
|
* level-1. A value < 0 means that level-0 compaction will not be |
||||||
|
* triggered by number of files at all. |
||||||
|
* Default: 4 |
||||||
|
* |
||||||
|
* @return the number of files in level 0 to trigger compaction. |
||||||
|
*/ |
||||||
|
int levelZeroFileNumCompactionTrigger(); |
||||||
|
|
||||||
|
/** |
||||||
|
* Soft limit on number of level-0 files. We start slowing down writes at this |
||||||
|
* point. A value < 0 means that no writing slow down will be triggered by |
||||||
|
* number of files in level-0. |
||||||
|
* |
||||||
|
* @param numFiles soft limit on number of level-0 files. |
||||||
|
* @return the reference to the current option. |
||||||
|
*/ |
||||||
|
Object setLevelZeroSlowdownWritesTrigger( |
||||||
|
int numFiles); |
||||||
|
|
||||||
|
/** |
||||||
|
* Soft limit on the number of level-0 files. We start slowing down writes |
||||||
|
* at this point. A value < 0 means that no writing slow down will be |
||||||
|
* triggered by number of files in level-0. |
||||||
|
* |
||||||
|
* @return the soft limit on the number of level-0 files. |
||||||
|
*/ |
||||||
|
int levelZeroSlowdownWritesTrigger(); |
||||||
|
|
||||||
|
/** |
||||||
|
* Maximum number of level-0 files. We stop writes at this point. |
||||||
|
* |
||||||
|
* @param numFiles the hard limit of the number of level-0 files. |
||||||
|
* @return the reference to the current option. |
||||||
|
*/ |
||||||
|
Object setLevelZeroStopWritesTrigger(int numFiles); |
||||||
|
|
||||||
|
/** |
||||||
|
* Maximum number of level-0 files. We stop writes at this point. |
||||||
|
* |
||||||
|
* @return the hard limit of the number of level-0 file. |
||||||
|
*/ |
||||||
|
int levelZeroStopWritesTrigger(); |
||||||
|
|
||||||
|
/** |
||||||
|
* The highest level to which a new compacted memtable is pushed if it |
||||||
|
* does not create overlap. We try to push to level 2 to avoid the |
||||||
|
* relatively expensive level 0=>1 compactions and to avoid some |
||||||
|
* expensive manifest file operations. We do not push all the way to |
||||||
|
* the largest level since that can generate a lot of wasted disk |
||||||
|
* space if the same key space is being repeatedly overwritten. |
||||||
|
* |
||||||
|
* @param maxMemCompactionLevel the highest level to which a new compacted |
||||||
|
* mem-table will be pushed. |
||||||
|
* @return the reference to the current option. |
||||||
|
*/ |
||||||
|
Object setMaxMemCompactionLevel( |
||||||
|
int maxMemCompactionLevel); |
||||||
|
|
||||||
|
/** |
||||||
|
* The highest level to which a new compacted memtable is pushed if it |
||||||
|
* does not create overlap. We try to push to level 2 to avoid the |
||||||
|
* relatively expensive level 0=>1 compactions and to avoid some |
||||||
|
* expensive manifest file operations. We do not push all the way to |
||||||
|
* the largest level since that can generate a lot of wasted disk |
||||||
|
* space if the same key space is being repeatedly overwritten. |
||||||
|
* |
||||||
|
* @return the highest level where a new compacted memtable will be pushed. |
||||||
|
*/ |
||||||
|
int maxMemCompactionLevel(); |
||||||
|
|
||||||
|
/** |
||||||
|
* The target file size for compaction. |
||||||
|
* This targetFileSizeBase determines a level-1 file size. |
||||||
|
* Target file size for level L can be calculated by |
||||||
|
* targetFileSizeBase * (targetFileSizeMultiplier ^ (L-1)) |
||||||
|
* For example, if targetFileSizeBase is 2MB and |
||||||
|
* target_file_size_multiplier is 10, then each file on level-1 will |
||||||
|
* be 2MB, and each file on level 2 will be 20MB, |
||||||
|
* and each file on level-3 will be 200MB. |
||||||
|
* by default targetFileSizeBase is 2MB. |
||||||
|
* |
||||||
|
* @param targetFileSizeBase the target size of a level-0 file. |
||||||
|
* @return the reference to the current option. |
||||||
|
* |
||||||
|
* @see #setTargetFileSizeMultiplier(int) |
||||||
|
*/ |
||||||
|
Object setTargetFileSizeBase(long targetFileSizeBase); |
||||||
|
|
||||||
|
/** |
||||||
|
* The target file size for compaction. |
||||||
|
* This targetFileSizeBase determines a level-1 file size. |
||||||
|
* Target file size for level L can be calculated by |
||||||
|
* targetFileSizeBase * (targetFileSizeMultiplier ^ (L-1)) |
||||||
|
* For example, if targetFileSizeBase is 2MB and |
||||||
|
* target_file_size_multiplier is 10, then each file on level-1 will |
||||||
|
* be 2MB, and each file on level 2 will be 20MB, |
||||||
|
* and each file on level-3 will be 200MB. |
||||||
|
* by default targetFileSizeBase is 2MB. |
||||||
|
* |
||||||
|
* @return the target size of a level-0 file. |
||||||
|
* |
||||||
|
* @see #targetFileSizeMultiplier() |
||||||
|
*/ |
||||||
|
long targetFileSizeBase(); |
||||||
|
|
||||||
|
/** |
||||||
|
* targetFileSizeMultiplier defines the size ratio between a |
||||||
|
* level-L file and level-(L+1) file. |
||||||
|
* By default target_file_size_multiplier is 1, meaning |
||||||
|
* files in different levels have the same target. |
||||||
|
* |
||||||
|
* @param multiplier the size ratio between a level-(L+1) file |
||||||
|
* and level-L file. |
||||||
|
* @return the reference to the current option. |
||||||
|
*/ |
||||||
|
Object setTargetFileSizeMultiplier(int multiplier); |
||||||
|
|
||||||
|
/** |
||||||
|
* targetFileSizeMultiplier defines the size ratio between a |
||||||
|
* level-(L+1) file and level-L file. |
||||||
|
* By default targetFileSizeMultiplier is 1, meaning |
||||||
|
* files in different levels have the same target. |
||||||
|
* |
||||||
|
* @return the size ratio between a level-(L+1) file and level-L file. |
||||||
|
*/ |
||||||
|
int targetFileSizeMultiplier(); |
||||||
|
|
||||||
|
/** |
||||||
|
* The upper-bound of the total size of level-1 files in bytes. |
||||||
|
* Maximum number of bytes for level L can be calculated as |
||||||
|
* (maxBytesForLevelBase) * (maxBytesForLevelMultiplier ^ (L-1)) |
||||||
|
* For example, if maxBytesForLevelBase is 20MB, and if |
||||||
|
* max_bytes_for_level_multiplier is 10, total data size for level-1 |
||||||
|
* will be 20MB, total file size for level-2 will be 200MB, |
||||||
|
* and total file size for level-3 will be 2GB. |
||||||
|
* by default 'maxBytesForLevelBase' is 10MB. |
||||||
|
* |
||||||
|
* @return the reference to the current option. |
||||||
|
* @see #setMaxBytesForLevelMultiplier(int) |
||||||
|
*/ |
||||||
|
Object setMaxBytesForLevelBase( |
||||||
|
long maxBytesForLevelBase); |
||||||
|
|
||||||
|
/** |
||||||
|
* The upper-bound of the total size of level-1 files in bytes. |
||||||
|
* Maximum number of bytes for level L can be calculated as |
||||||
|
* (maxBytesForLevelBase) * (maxBytesForLevelMultiplier ^ (L-1)) |
||||||
|
* For example, if maxBytesForLevelBase is 20MB, and if |
||||||
|
* max_bytes_for_level_multiplier is 10, total data size for level-1 |
||||||
|
* will be 20MB, total file size for level-2 will be 200MB, |
||||||
|
* and total file size for level-3 will be 2GB. |
||||||
|
* by default 'maxBytesForLevelBase' is 10MB. |
||||||
|
* |
||||||
|
* @return the upper-bound of the total size of leve-1 files in bytes. |
||||||
|
* @see #maxBytesForLevelMultiplier() |
||||||
|
*/ |
||||||
|
long maxBytesForLevelBase(); |
||||||
|
|
||||||
|
/** |
||||||
|
* The ratio between the total size of level-(L+1) files and the total |
||||||
|
* size of level-L files for all L. |
||||||
|
* DEFAULT: 10 |
||||||
|
* |
||||||
|
* @param multiplier the ratio between the total size of level-(L+1) |
||||||
|
* files and the total size of level-L files for all L. |
||||||
|
* @return the reference to the current option. |
||||||
|
* @see #setMaxBytesForLevelBase(long) |
||||||
|
*/ |
||||||
|
Object setMaxBytesForLevelMultiplier(int multiplier); |
||||||
|
|
||||||
|
/** |
||||||
|
* The ratio between the total size of level-(L+1) files and the total |
||||||
|
* size of level-L files for all L. |
||||||
|
* DEFAULT: 10 |
||||||
|
* |
||||||
|
* @return the ratio between the total size of level-(L+1) files and |
||||||
|
* the total size of level-L files for all L. |
||||||
|
* @see #maxBytesForLevelBase() |
||||||
|
*/ |
||||||
|
int maxBytesForLevelMultiplier(); |
||||||
|
|
||||||
|
/** |
||||||
|
* Maximum number of bytes in all compacted files. We avoid expanding |
||||||
|
* the lower level file set of a compaction if it would make the |
||||||
|
* total compaction cover more than |
||||||
|
* (expanded_compaction_factor * targetFileSizeLevel()) many bytes. |
||||||
|
* |
||||||
|
* @param expandedCompactionFactor the maximum number of bytes in all |
||||||
|
* compacted files. |
||||||
|
* @return the reference to the current option. |
||||||
|
* @see #setSourceCompactionFactor(int) |
||||||
|
*/ |
||||||
|
Object setExpandedCompactionFactor(int expandedCompactionFactor); |
||||||
|
|
||||||
|
/** |
||||||
|
* Maximum number of bytes in all compacted files. We avoid expanding |
||||||
|
* the lower level file set of a compaction if it would make the |
||||||
|
* total compaction cover more than |
||||||
|
* (expanded_compaction_factor * targetFileSizeLevel()) many bytes. |
||||||
|
* |
||||||
|
* @return the maximum number of bytes in all compacted files. |
||||||
|
* @see #sourceCompactionFactor() |
||||||
|
*/ |
||||||
|
int expandedCompactionFactor(); |
||||||
|
|
||||||
|
/** |
||||||
|
* Maximum number of bytes in all source files to be compacted in a |
||||||
|
* single compaction run. We avoid picking too many files in the |
||||||
|
* source level so that we do not exceed the total source bytes |
||||||
|
* for compaction to exceed |
||||||
|
* (source_compaction_factor * targetFileSizeLevel()) many bytes. |
||||||
|
* Default:1, i.e. pick maxfilesize amount of data as the source of |
||||||
|
* a compaction. |
||||||
|
* |
||||||
|
* @param sourceCompactionFactor the maximum number of bytes in all |
||||||
|
* source files to be compacted in a single compaction run. |
||||||
|
* @return the reference to the current option. |
||||||
|
* @see #setExpandedCompactionFactor(int) |
||||||
|
*/ |
||||||
|
Object setSourceCompactionFactor(int sourceCompactionFactor); |
||||||
|
|
||||||
|
/** |
||||||
|
* Maximum number of bytes in all source files to be compacted in a |
||||||
|
* single compaction run. We avoid picking too many files in the |
||||||
|
* source level so that we do not exceed the total source bytes |
||||||
|
* for compaction to exceed |
||||||
|
* (source_compaction_factor * targetFileSizeLevel()) many bytes. |
||||||
|
* Default:1, i.e. pick maxfilesize amount of data as the source of |
||||||
|
* a compaction. |
||||||
|
* |
||||||
|
* @return the maximum number of bytes in all source files to be compactedo. |
||||||
|
* @see #expandedCompactionFactor() |
||||||
|
*/ |
||||||
|
int sourceCompactionFactor(); |
||||||
|
|
||||||
|
/** |
||||||
|
* Control maximum bytes of overlaps in grandparent (i.e., level+2) before we |
||||||
|
* stop building a single file in a level->level+1 compaction. |
||||||
|
* |
||||||
|
* @param maxGrandparentOverlapFactor maximum bytes of overlaps in |
||||||
|
* "grandparent" level. |
||||||
|
* @return the reference to the current option. |
||||||
|
*/ |
||||||
|
Object setMaxGrandparentOverlapFactor( |
||||||
|
int maxGrandparentOverlapFactor); |
||||||
|
|
||||||
|
/** |
||||||
|
* Control maximum bytes of overlaps in grandparent (i.e., level+2) before we |
||||||
|
* stop building a single file in a level->level+1 compaction. |
||||||
|
* |
||||||
|
* @return maximum bytes of overlaps in "grandparent" level. |
||||||
|
*/ |
||||||
|
int maxGrandparentOverlapFactor(); |
||||||
|
|
||||||
|
/** |
||||||
|
* Puts are delayed 0-1 ms when any level has a compaction score that exceeds |
||||||
|
* soft_rate_limit. This is ignored when == 0.0. |
||||||
|
* CONSTRAINT: soft_rate_limit <= hard_rate_limit. If this constraint does not |
||||||
|
* hold, RocksDB will set soft_rate_limit = hard_rate_limit |
||||||
|
* Default: 0 (disabled) |
||||||
|
* |
||||||
|
* @param softRateLimit the soft-rate-limit of a compaction score |
||||||
|
* for put delay. |
||||||
|
* @return the reference to the current option. |
||||||
|
*/ |
||||||
|
Object setSoftRateLimit(double softRateLimit); |
||||||
|
|
||||||
|
/** |
||||||
|
* Puts are delayed 0-1 ms when any level has a compaction score that exceeds |
||||||
|
* soft_rate_limit. This is ignored when == 0.0. |
||||||
|
* CONSTRAINT: soft_rate_limit <= hard_rate_limit. If this constraint does not |
||||||
|
* hold, RocksDB will set soft_rate_limit = hard_rate_limit |
||||||
|
* Default: 0 (disabled) |
||||||
|
* |
||||||
|
* @return soft-rate-limit for put delay. |
||||||
|
*/ |
||||||
|
double softRateLimit(); |
||||||
|
|
||||||
|
/** |
||||||
|
* Puts are delayed 1ms at a time when any level has a compaction score that |
||||||
|
* exceeds hard_rate_limit. This is ignored when <= 1.0. |
||||||
|
* Default: 0 (disabled) |
||||||
|
* |
||||||
|
* @param hardRateLimit the hard-rate-limit of a compaction score for put |
||||||
|
* delay. |
||||||
|
* @return the reference to the current option. |
||||||
|
*/ |
||||||
|
Object setHardRateLimit(double hardRateLimit); |
||||||
|
|
||||||
|
/** |
||||||
|
* Puts are delayed 1ms at a time when any level has a compaction score that |
||||||
|
* exceeds hard_rate_limit. This is ignored when <= 1.0. |
||||||
|
* Default: 0 (disabled) |
||||||
|
* |
||||||
|
* @return the hard-rate-limit of a compaction score for put delay. |
||||||
|
*/ |
||||||
|
double hardRateLimit(); |
||||||
|
|
||||||
|
/** |
||||||
|
* The maximum time interval a put will be stalled when hard_rate_limit |
||||||
|
* is enforced. If 0, then there is no limit. |
||||||
|
* Default: 1000 |
||||||
|
* |
||||||
|
* @param rateLimitDelayMaxMilliseconds the maximum time interval a put |
||||||
|
* will be stalled. |
||||||
|
* @return the reference to the current option. |
||||||
|
*/ |
||||||
|
Object setRateLimitDelayMaxMilliseconds( |
||||||
|
int rateLimitDelayMaxMilliseconds); |
||||||
|
|
||||||
|
/** |
||||||
|
* The maximum time interval a put will be stalled when hard_rate_limit |
||||||
|
* is enforced. If 0, then there is no limit. |
||||||
|
* Default: 1000 |
||||||
|
* |
||||||
|
* @return the maximum time interval a put will be stalled when |
||||||
|
* hard_rate_limit is enforced. |
||||||
|
*/ |
||||||
|
int rateLimitDelayMaxMilliseconds(); |
||||||
|
|
||||||
|
/** |
||||||
|
* The size of one block in arena memory allocation. |
||||||
|
* If <= 0, a proper value is automatically calculated (usually 1/10 of |
||||||
|
* writer_buffer_size). |
||||||
|
* |
||||||
|
* There are two additonal restriction of the The specified size: |
||||||
|
* (1) size should be in the range of [4096, 2 << 30] and |
||||||
|
* (2) be the multiple of the CPU word (which helps with the memory |
||||||
|
* alignment). |
||||||
|
* |
||||||
|
* We'll automatically check and adjust the size number to make sure it |
||||||
|
* conforms to the restrictions. |
||||||
|
* Default: 0 |
||||||
|
* |
||||||
|
* @param arenaBlockSize the size of an arena block |
||||||
|
* @return the reference to the current option. |
||||||
|
* @throws org.rocksdb.RocksDBException |
||||||
|
*/ |
||||||
|
Object setArenaBlockSize(long arenaBlockSize) |
||||||
|
throws RocksDBException; |
||||||
|
|
||||||
|
/** |
||||||
|
* The size of one block in arena memory allocation. |
||||||
|
* If <= 0, a proper value is automatically calculated (usually 1/10 of |
||||||
|
* writer_buffer_size). |
||||||
|
* |
||||||
|
* There are two additonal restriction of the The specified size: |
||||||
|
* (1) size should be in the range of [4096, 2 << 30] and |
||||||
|
* (2) be the multiple of the CPU word (which helps with the memory |
||||||
|
* alignment). |
||||||
|
* |
||||||
|
* We'll automatically check and adjust the size number to make sure it |
||||||
|
* conforms to the restrictions. |
||||||
|
* Default: 0 |
||||||
|
* |
||||||
|
* @return the size of an arena block |
||||||
|
*/ |
||||||
|
long arenaBlockSize(); |
||||||
|
|
||||||
|
/** |
||||||
|
* Disable automatic compactions. Manual compactions can still |
||||||
|
* be issued on this column family |
||||||
|
* |
||||||
|
* @param disableAutoCompactions true if auto-compactions are disabled. |
||||||
|
* @return the reference to the current option. |
||||||
|
*/ |
||||||
|
Object setDisableAutoCompactions(boolean disableAutoCompactions); |
||||||
|
|
||||||
|
/** |
||||||
|
* Disable automatic compactions. Manual compactions can still |
||||||
|
* be issued on this column family |
||||||
|
* |
||||||
|
* @return true if auto-compactions are disabled. |
||||||
|
*/ |
||||||
|
boolean disableAutoCompactions(); |
||||||
|
|
||||||
|
/** |
||||||
|
* Purge duplicate/deleted keys when a memtable is flushed to storage. |
||||||
|
* Default: true |
||||||
|
* |
||||||
|
* @param purgeRedundantKvsWhileFlush true if purging keys is disabled. |
||||||
|
* @return the reference to the current option. |
||||||
|
*/ |
||||||
|
Object setPurgeRedundantKvsWhileFlush( |
||||||
|
boolean purgeRedundantKvsWhileFlush); |
||||||
|
|
||||||
|
/** |
||||||
|
* Purge duplicate/deleted keys when a memtable is flushed to storage. |
||||||
|
* Default: true |
||||||
|
* |
||||||
|
* @return true if purging keys is disabled. |
||||||
|
*/ |
||||||
|
boolean purgeRedundantKvsWhileFlush(); |
||||||
|
|
||||||
|
/** |
||||||
|
* Set compaction style for DB. |
||||||
|
* |
||||||
|
* Default: LEVEL. |
||||||
|
* |
||||||
|
* @param compactionStyle Compaction style. |
||||||
|
* @return the reference to the current option. |
||||||
|
*/ |
||||||
|
Object setCompactionStyle(CompactionStyle compactionStyle); |
||||||
|
|
||||||
|
/** |
||||||
|
* Compaction style for DB. |
||||||
|
* |
||||||
|
* @return Compaction style. |
||||||
|
*/ |
||||||
|
CompactionStyle compactionStyle(); |
||||||
|
|
||||||
|
/** |
||||||
|
* If true, compaction will verify checksum on every read that happens |
||||||
|
* as part of compaction |
||||||
|
* Default: true |
||||||
|
* |
||||||
|
* @param verifyChecksumsInCompaction true if compaction verifies |
||||||
|
* checksum on every read. |
||||||
|
* @return the reference to the current option. |
||||||
|
*/ |
||||||
|
Object setVerifyChecksumsInCompaction( |
||||||
|
boolean verifyChecksumsInCompaction); |
||||||
|
|
||||||
|
/** |
||||||
|
* If true, compaction will verify checksum on every read that happens |
||||||
|
* as part of compaction |
||||||
|
* Default: true |
||||||
|
* |
||||||
|
* @return true if compaction verifies checksum on every read. |
||||||
|
*/ |
||||||
|
boolean verifyChecksumsInCompaction(); |
||||||
|
|
||||||
|
/** |
||||||
|
* Use KeyMayExist API to filter deletes when this is true. |
||||||
|
* If KeyMayExist returns false, i.e. the key definitely does not exist, then |
||||||
|
* the delete is a noop. KeyMayExist only incurs in-memory look up. |
||||||
|
* This optimization avoids writing the delete to storage when appropriate. |
||||||
|
* Default: false |
||||||
|
* |
||||||
|
* @param filterDeletes true if filter-deletes behavior is on. |
||||||
|
* @return the reference to the current option. |
||||||
|
*/ |
||||||
|
Object setFilterDeletes(boolean filterDeletes); |
||||||
|
|
||||||
|
/** |
||||||
|
* Use KeyMayExist API to filter deletes when this is true. |
||||||
|
* If KeyMayExist returns false, i.e. the key definitely does not exist, then |
||||||
|
* the delete is a noop. KeyMayExist only incurs in-memory look up. |
||||||
|
* This optimization avoids writing the delete to storage when appropriate. |
||||||
|
* Default: false |
||||||
|
* |
||||||
|
* @return true if filter-deletes behavior is on. |
||||||
|
*/ |
||||||
|
boolean filterDeletes(); |
||||||
|
|
||||||
|
/** |
||||||
|
* An iteration->Next() sequentially skips over keys with the same |
||||||
|
* user-key unless this option is set. This number specifies the number |
||||||
|
* of keys (with the same userkey) that will be sequentially |
||||||
|
* skipped before a reseek is issued. |
||||||
|
* Default: 8 |
||||||
|
* |
||||||
|
* @param maxSequentialSkipInIterations the number of keys could |
||||||
|
* be skipped in a iteration. |
||||||
|
* @return the reference to the current option. |
||||||
|
*/ |
||||||
|
Object setMaxSequentialSkipInIterations(long maxSequentialSkipInIterations); |
||||||
|
|
||||||
|
/** |
||||||
|
* An iteration->Next() sequentially skips over keys with the same |
||||||
|
* user-key unless this option is set. This number specifies the number |
||||||
|
* of keys (with the same userkey) that will be sequentially |
||||||
|
* skipped before a reseek is issued. |
||||||
|
* Default: 8 |
||||||
|
* |
||||||
|
* @return the number of keys could be skipped in a iteration. |
||||||
|
*/ |
||||||
|
long maxSequentialSkipInIterations(); |
||||||
|
|
||||||
|
/** |
||||||
|
* Set the config for mem-table. |
||||||
|
* |
||||||
|
* @param config the mem-table config. |
||||||
|
* @return the instance of the current Object. |
||||||
|
* @throws org.rocksdb.RocksDBException |
||||||
|
*/ |
||||||
|
Object setMemTableConfig(MemTableConfig config) |
||||||
|
throws RocksDBException; |
||||||
|
|
||||||
|
/** |
||||||
|
* Returns the name of the current mem table representation. |
||||||
|
* Memtable format can be set using setTableFormatConfig. |
||||||
|
* |
||||||
|
* @return the name of the currently-used memtable factory. |
||||||
|
* @see #setTableFormatConfig(org.rocksdb.TableFormatConfig) |
||||||
|
*/ |
||||||
|
String memTableFactoryName(); |
||||||
|
|
||||||
|
/** |
||||||
|
* Set the config for table format. |
||||||
|
* |
||||||
|
* @param config the table format config. |
||||||
|
* @return the reference of the current Options. |
||||||
|
*/ |
||||||
|
Object setTableFormatConfig(TableFormatConfig config); |
||||||
|
|
||||||
|
/** |
||||||
|
* @return the name of the currently used table factory. |
||||||
|
*/ |
||||||
|
String tableFactoryName(); |
||||||
|
|
||||||
|
/** |
||||||
|
* Allows thread-safe inplace updates. |
||||||
|
* If inplace_callback function is not set, |
||||||
|
* Put(key, new_value) will update inplace the existing_value iff |
||||||
|
* * key exists in current memtable |
||||||
|
* * new sizeof(new_value) <= sizeof(existing_value) |
||||||
|
* * existing_value for that key is a put i.e. kTypeValue |
||||||
|
* If inplace_callback function is set, check doc for inplace_callback. |
||||||
|
* Default: false. |
||||||
|
* |
||||||
|
* @param inplaceUpdateSupport true if thread-safe inplace updates |
||||||
|
* are allowed. |
||||||
|
* @return the reference to the current option. |
||||||
|
*/ |
||||||
|
Object setInplaceUpdateSupport(boolean inplaceUpdateSupport); |
||||||
|
|
||||||
|
/** |
||||||
|
* Allows thread-safe inplace updates. |
||||||
|
* If inplace_callback function is not set, |
||||||
|
* Put(key, new_value) will update inplace the existing_value iff |
||||||
|
* * key exists in current memtable |
||||||
|
* * new sizeof(new_value) <= sizeof(existing_value) |
||||||
|
* * existing_value for that key is a put i.e. kTypeValue |
||||||
|
* If inplace_callback function is set, check doc for inplace_callback. |
||||||
|
* Default: false. |
||||||
|
* |
||||||
|
* @return true if thread-safe inplace updates are allowed. |
||||||
|
*/ |
||||||
|
boolean inplaceUpdateSupport(); |
||||||
|
|
||||||
|
/** |
||||||
|
* Number of locks used for inplace update |
||||||
|
* Default: 10000, if inplace_update_support = true, else 0. |
||||||
|
* |
||||||
|
* @param inplaceUpdateNumLocks the number of locks used for |
||||||
|
* inplace updates. |
||||||
|
* @return the reference to the current option. |
||||||
|
* @throws org.rocksdb.RocksDBException |
||||||
|
*/ |
||||||
|
Object setInplaceUpdateNumLocks(long inplaceUpdateNumLocks) |
||||||
|
throws RocksDBException; |
||||||
|
|
||||||
|
/** |
||||||
|
* Number of locks used for inplace update |
||||||
|
* Default: 10000, if inplace_update_support = true, else 0. |
||||||
|
* |
||||||
|
* @return the number of locks used for inplace update. |
||||||
|
*/ |
||||||
|
long inplaceUpdateNumLocks(); |
||||||
|
|
||||||
|
/** |
||||||
|
* Sets the number of bits used in the prefix bloom filter. |
||||||
|
* |
||||||
|
* This value will be used only when a prefix-extractor is specified. |
||||||
|
* |
||||||
|
* @param memtablePrefixBloomBits the number of bits used in the |
||||||
|
* prefix bloom filter. |
||||||
|
* @return the reference to the current option. |
||||||
|
*/ |
||||||
|
Object setMemtablePrefixBloomBits(int memtablePrefixBloomBits); |
||||||
|
|
||||||
|
/** |
||||||
|
* Returns the number of bits used in the prefix bloom filter. |
||||||
|
* |
||||||
|
* This value will be used only when a prefix-extractor is specified. |
||||||
|
* |
||||||
|
* @return the number of bloom-bits. |
||||||
|
* @see #useFixedLengthPrefixExtractor(int) |
||||||
|
*/ |
||||||
|
int memtablePrefixBloomBits(); |
||||||
|
|
||||||
|
/** |
||||||
|
* The number of hash probes per key used in the mem-table. |
||||||
|
* |
||||||
|
* @param memtablePrefixBloomProbes the number of hash probes per key. |
||||||
|
* @return the reference to the current option. |
||||||
|
*/ |
||||||
|
Object setMemtablePrefixBloomProbes(int memtablePrefixBloomProbes); |
||||||
|
|
||||||
|
/** |
||||||
|
* The number of hash probes per key used in the mem-table. |
||||||
|
* |
||||||
|
* @return the number of hash probes per key. |
||||||
|
*/ |
||||||
|
int memtablePrefixBloomProbes(); |
||||||
|
|
||||||
|
/** |
||||||
|
* Control locality of bloom filter probes to improve cache miss rate. |
||||||
|
* This option only applies to memtable prefix bloom and plaintable |
||||||
|
* prefix bloom. It essentially limits the max number of cache lines each |
||||||
|
* bloom filter check can touch. |
||||||
|
* This optimization is turned off when set to 0. The number should never |
||||||
|
* be greater than number of probes. This option can boost performance |
||||||
|
* for in-memory workload but should use with care since it can cause |
||||||
|
* higher false positive rate. |
||||||
|
* Default: 0 |
||||||
|
* |
||||||
|
* @param bloomLocality the level of locality of bloom-filter probes. |
||||||
|
* @return the reference to the current option. |
||||||
|
*/ |
||||||
|
Object setBloomLocality(int bloomLocality); |
||||||
|
|
||||||
|
/** |
||||||
|
* Control locality of bloom filter probes to improve cache miss rate. |
||||||
|
* This option only applies to memtable prefix bloom and plaintable |
||||||
|
* prefix bloom. It essentially limits the max number of cache lines each |
||||||
|
* bloom filter check can touch. |
||||||
|
* This optimization is turned off when set to 0. The number should never |
||||||
|
* be greater than number of probes. This option can boost performance |
||||||
|
* for in-memory workload but should use with care since it can cause |
||||||
|
* higher false positive rate. |
||||||
|
* Default: 0 |
||||||
|
* |
||||||
|
* @return the level of locality of bloom-filter probes. |
||||||
|
* @see #setMemtablePrefixBloomProbes(int) |
||||||
|
*/ |
||||||
|
int bloomLocality(); |
||||||
|
|
||||||
|
/** |
||||||
|
* Maximum number of successive merge operations on a key in the memtable. |
||||||
|
* |
||||||
|
* When a merge operation is added to the memtable and the maximum number of |
||||||
|
* successive merges is reached, the value of the key will be calculated and |
||||||
|
* inserted into the memtable instead of the merge operation. This will |
||||||
|
* ensure that there are never more than max_successive_merges merge |
||||||
|
* operations in the memtable. |
||||||
|
* |
||||||
|
* Default: 0 (disabled) |
||||||
|
* |
||||||
|
* @param maxSuccessiveMerges the maximum number of successive merges. |
||||||
|
* @return the reference to the current option. |
||||||
|
* @throws org.rocksdb.RocksDBException |
||||||
|
*/ |
||||||
|
Object setMaxSuccessiveMerges(long maxSuccessiveMerges) |
||||||
|
throws RocksDBException; |
||||||
|
|
||||||
|
/** |
||||||
|
* Maximum number of successive merge operations on a key in the memtable. |
||||||
|
* |
||||||
|
* When a merge operation is added to the memtable and the maximum number of |
||||||
|
* successive merges is reached, the value of the key will be calculated and |
||||||
|
* inserted into the memtable instead of the merge operation. This will |
||||||
|
* ensure that there are never more than max_successive_merges merge |
||||||
|
* operations in the memtable. |
||||||
|
* |
||||||
|
* Default: 0 (disabled) |
||||||
|
* |
||||||
|
* @return the maximum number of successive merges. |
||||||
|
*/ |
||||||
|
long maxSuccessiveMerges(); |
||||||
|
|
||||||
|
/** |
||||||
|
* The number of partial merge operands to accumulate before partial |
||||||
|
* merge will be performed. Partial merge will not be called |
||||||
|
* if the list of values to merge is less than min_partial_merge_operands. |
||||||
|
* |
||||||
|
* If min_partial_merge_operands < 2, then it will be treated as 2. |
||||||
|
* |
||||||
|
* Default: 2 |
||||||
|
* |
||||||
|
* @param minPartialMergeOperands min partial merge operands |
||||||
|
* @return the reference to the current option. |
||||||
|
*/ |
||||||
|
Object setMinPartialMergeOperands(int minPartialMergeOperands); |
||||||
|
|
||||||
|
/** |
||||||
|
* The number of partial merge operands to accumulate before partial |
||||||
|
* merge will be performed. Partial merge will not be called |
||||||
|
* if the list of values to merge is less than min_partial_merge_operands. |
||||||
|
* |
||||||
|
* If min_partial_merge_operands < 2, then it will be treated as 2. |
||||||
|
* |
||||||
|
* Default: 2 |
||||||
|
* |
||||||
|
* @return min partial merge operands |
||||||
|
*/ |
||||||
|
int minPartialMergeOperands(); |
||||||
|
|
||||||
|
/** |
||||||
|
* Default memtable memory budget used with the following methods: |
||||||
|
* |
||||||
|
* <ol> |
||||||
|
* <li>{@link #optimizeLevelStyleCompaction()}</li> |
||||||
|
* <li>{@link #optimizeUniversalStyleCompaction()}</li> |
||||||
|
* </ol> |
||||||
|
*/ |
||||||
|
long DEFAULT_COMPACTION_MEMTABLE_MEMORY_BUDGET = 512 * 1024 * 1024; |
||||||
|
} |
@ -0,0 +1,763 @@ |
|||||||
|
// Copyright (c) 2014, Facebook, Inc. All rights reserved.
|
||||||
|
// This source code is licensed under the BSD-style license found in the
|
||||||
|
// LICENSE file in the root directory of this source tree. An additional grant
|
||||||
|
// of patent rights can be found in the PATENTS file in the same directory.
|
||||||
|
|
||||||
|
package org.rocksdb; |
||||||
|
|
||||||
|
public interface DBOptionsInterface { |
||||||
|
|
||||||
|
/** |
||||||
|
* If this value is set to true, then the database will be created |
||||||
|
* if it is missing during {@code RocksDB.open()}. |
||||||
|
* Default: false |
||||||
|
* |
||||||
|
* @param flag a flag indicating whether to create a database the |
||||||
|
* specified database in {@link RocksDB#open(org.rocksdb.Options, String)} operation |
||||||
|
* is missing. |
||||||
|
* @return the instance of the current Options |
||||||
|
* @see RocksDB#open(org.rocksdb.Options, String) |
||||||
|
*/ |
||||||
|
Object setCreateIfMissing(boolean flag); |
||||||
|
|
||||||
|
/** |
||||||
|
* Return true if the create_if_missing flag is set to true. |
||||||
|
* If true, the database will be created if it is missing. |
||||||
|
* |
||||||
|
* @return true if the createIfMissing option is set to true. |
||||||
|
* @see #setCreateIfMissing(boolean) |
||||||
|
*/ |
||||||
|
boolean createIfMissing(); |
||||||
|
|
||||||
|
/** |
||||||
|
* <p>If true, missing column families will be automatically created</p> |
||||||
|
* |
||||||
|
* <p>Default: false</p> |
||||||
|
* |
||||||
|
* @param flag a flag indicating if missing column families shall be |
||||||
|
* created automatically. |
||||||
|
* @return true if missing column families shall be created automatically |
||||||
|
* on open. |
||||||
|
*/ |
||||||
|
Object setCreateMissingColumnFamilies(boolean flag); |
||||||
|
|
||||||
|
/** |
||||||
|
* Return true if the create_missing_column_families flag is set |
||||||
|
* to true. If true column families be created if missing. |
||||||
|
* |
||||||
|
* @return true if the createMissingColumnFamilies is set to |
||||||
|
* true. |
||||||
|
* @see #setCreateMissingColumnFamilies(boolean) |
||||||
|
*/ |
||||||
|
boolean createMissingColumnFamilies(); |
||||||
|
|
||||||
|
/** |
||||||
|
* If true, an error will be thrown during RocksDB.open() if the |
||||||
|
* database already exists. |
||||||
|
* Default: false |
||||||
|
* |
||||||
|
* @param errorIfExists if true, an exception will be thrown |
||||||
|
* during {@code RocksDB.open()} if the database already exists. |
||||||
|
* @return the reference to the current option. |
||||||
|
* @see RocksDB#open(org.rocksdb.Options, String) |
||||||
|
*/ |
||||||
|
Object setErrorIfExists(boolean errorIfExists); |
||||||
|
|
||||||
|
/** |
||||||
|
* If true, an error will be thrown during RocksDB.open() if the |
||||||
|
* database already exists. |
||||||
|
* |
||||||
|
* @return if true, an error is raised when the specified database |
||||||
|
* already exists before open. |
||||||
|
*/ |
||||||
|
boolean errorIfExists(); |
||||||
|
|
||||||
|
/** |
||||||
|
* If true, the implementation will do aggressive checking of the |
||||||
|
* data it is processing and will stop early if it detects any |
||||||
|
* errors. This may have unforeseen ramifications: for example, a |
||||||
|
* corruption of one DB entry may cause a large number of entries to |
||||||
|
* become unreadable or for the entire DB to become unopenable. |
||||||
|
* If any of the writes to the database fails (Put, Delete, Merge, Write), |
||||||
|
* the database will switch to read-only mode and fail all other |
||||||
|
* Write operations. |
||||||
|
* Default: true |
||||||
|
* |
||||||
|
* @param paranoidChecks a flag to indicate whether paranoid-check |
||||||
|
* is on. |
||||||
|
* @return the reference to the current option. |
||||||
|
*/ |
||||||
|
Object setParanoidChecks(boolean paranoidChecks); |
||||||
|
|
||||||
|
/** |
||||||
|
* If true, the implementation will do aggressive checking of the |
||||||
|
* data it is processing and will stop early if it detects any |
||||||
|
* errors. This may have unforeseen ramifications: for example, a |
||||||
|
* corruption of one DB entry may cause a large number of entries to |
||||||
|
* become unreadable or for the entire DB to become unopenable. |
||||||
|
* If any of the writes to the database fails (Put, Delete, Merge, Write), |
||||||
|
* the database will switch to read-only mode and fail all other |
||||||
|
* Write operations. |
||||||
|
* |
||||||
|
* @return a boolean indicating whether paranoid-check is on. |
||||||
|
*/ |
||||||
|
boolean paranoidChecks(); |
||||||
|
|
||||||
|
/** |
||||||
|
* Use to control write rate of flush and compaction. Flush has higher |
||||||
|
* priority than compaction. Rate limiting is disabled if nullptr. |
||||||
|
* Default: nullptr |
||||||
|
* |
||||||
|
* @param config rate limiter config. |
||||||
|
* @return the instance of the current Object. |
||||||
|
*/ |
||||||
|
Object setRateLimiterConfig(RateLimiterConfig config); |
||||||
|
|
||||||
|
/** |
||||||
|
* Number of open files that can be used by the DB. You may need to |
||||||
|
* increase this if your database has a large working set. Value -1 means |
||||||
|
* files opened are always kept open. You can estimate number of files based |
||||||
|
* on {@code target_file_size_base} and {@code target_file_size_multiplier} |
||||||
|
* for level-based compaction. For universal-style compaction, you can usually |
||||||
|
* set it to -1. |
||||||
|
* Default: 5000 |
||||||
|
* |
||||||
|
* @param maxOpenFiles the maximum number of open files. |
||||||
|
* @return the reference to the current DBOptions. |
||||||
|
*/ |
||||||
|
Object setMaxOpenFiles(int maxOpenFiles); |
||||||
|
|
||||||
|
/** |
||||||
|
* Number of open files that can be used by the DB. You may need to |
||||||
|
* increase this if your database has a large working set. Value -1 means |
||||||
|
* files opened are always kept open. You can estimate number of files based |
||||||
|
* on {@code target_file_size_base} and {@code target_file_size_multiplier} |
||||||
|
* for level-based compaction. For universal-style compaction, you can usually |
||||||
|
* set it to -1. |
||||||
|
* |
||||||
|
* @return the maximum number of open files. |
||||||
|
*/ |
||||||
|
int maxOpenFiles(); |
||||||
|
|
||||||
|
/** |
||||||
|
* <p>Once write-ahead logs exceed this size, we will start forcing the |
||||||
|
* flush of column families whose memtables are backed by the oldest live |
||||||
|
* WAL file (i.e. the ones that are causing all the space amplification). |
||||||
|
* </p> |
||||||
|
* <p>If set to 0 (default), we will dynamically choose the WAL size limit to |
||||||
|
* be [sum of all write_buffer_size * max_write_buffer_number] * 2</p> |
||||||
|
* <p>Default: 0</p> |
||||||
|
*/ |
||||||
|
Object setMaxTotalWalSize(long maxTotalWalSize); |
||||||
|
|
||||||
|
/** |
||||||
|
* <p>Returns the max total wal size. Once write-ahead logs exceed this size, |
||||||
|
* we will start forcing the flush of column families whose memtables are |
||||||
|
* backed by the oldest live WAL file (i.e. the ones that are causing all |
||||||
|
* the space amplification).</p> |
||||||
|
* |
||||||
|
* <p>If set to 0 (default), we will dynamically choose the WAL size limit |
||||||
|
* to be [sum of all write_buffer_size * max_write_buffer_number] * 2 |
||||||
|
* </p> |
||||||
|
* |
||||||
|
* @return max total wal size |
||||||
|
*/ |
||||||
|
long maxTotalWalSize(); |
||||||
|
|
||||||
|
/** |
||||||
|
* <p>Creates statistics object which collects metrics about database operations. |
||||||
|
* Statistics objects should not be shared between DB instances as |
||||||
|
* it does not use any locks to prevent concurrent updates.</p> |
||||||
|
* |
||||||
|
* @return the instance of the current Object. |
||||||
|
* @see RocksDB#open(org.rocksdb.Options, String) |
||||||
|
*/ |
||||||
|
Object createStatistics(); |
||||||
|
|
||||||
|
/** |
||||||
|
* <p>Returns statistics object. Calls {@link #createStatistics()} if |
||||||
|
* C++ returns {@code nullptr} for statistics.</p> |
||||||
|
* |
||||||
|
* @return the instance of the statistics object. |
||||||
|
* @see #createStatistics() |
||||||
|
*/ |
||||||
|
Statistics statisticsPtr(); |
||||||
|
|
||||||
|
/** |
||||||
|
* <p>If true, then the contents of manifest and data files are |
||||||
|
* not synced to stable storage. Their contents remain in the |
||||||
|
* OS buffers till theOS decides to flush them.</p> |
||||||
|
* |
||||||
|
* <p>This option is good for bulk-loading of data.</p> |
||||||
|
* |
||||||
|
* <p>Once the bulk-loading is complete, please issue a sync to |
||||||
|
* the OS to flush all dirty buffers to stable storage.</p> |
||||||
|
* |
||||||
|
* <p>Default: false</p> |
||||||
|
* |
||||||
|
* @param disableDataSync a boolean flag to specify whether to |
||||||
|
* disable data sync. |
||||||
|
* @return the reference to the current DBOptions. |
||||||
|
*/ |
||||||
|
Object setDisableDataSync(boolean disableDataSync); |
||||||
|
|
||||||
|
/** |
||||||
|
* If true, then the contents of data files are not synced |
||||||
|
* to stable storage. Their contents remain in the OS buffers till the |
||||||
|
* OS decides to flush them. This option is good for bulk-loading |
||||||
|
* of data. Once the bulk-loading is complete, please issue a |
||||||
|
* sync to the OS to flush all dirty buffers to stable storage. |
||||||
|
* |
||||||
|
* @return if true, then data-sync is disabled. |
||||||
|
*/ |
||||||
|
boolean disableDataSync(); |
||||||
|
|
||||||
|
/** |
||||||
|
* <p>If true, then every store to stable storage will issue a fsync.</p> |
||||||
|
* <p>If false, then every store to stable storage will issue a fdatasync. |
||||||
|
* This parameter should be set to true while storing data to |
||||||
|
* filesystem like ext3 that can lose files after a reboot.</p> |
||||||
|
* <p>Default: false</p> |
||||||
|
* |
||||||
|
* @param useFsync a boolean flag to specify whether to use fsync |
||||||
|
* @return the instance of the current Object. |
||||||
|
*/ |
||||||
|
Object setUseFsync(boolean useFsync); |
||||||
|
|
||||||
|
/** |
||||||
|
* <p>If true, then every store to stable storage will issue a fsync.</p> |
||||||
|
* <p>If false, then every store to stable storage will issue a fdatasync. |
||||||
|
* This parameter should be set to true while storing data to |
||||||
|
* filesystem like ext3 that can lose files after a reboot.</p> |
||||||
|
* |
||||||
|
* @return boolean value indicating if fsync is used. |
||||||
|
*/ |
||||||
|
boolean useFsync(); |
||||||
|
|
||||||
|
/** |
||||||
|
* This specifies the info LOG dir. |
||||||
|
* If it is empty, the log files will be in the same dir as data. |
||||||
|
* If it is non empty, the log files will be in the specified dir, |
||||||
|
* and the db data dir's absolute path will be used as the log file |
||||||
|
* name's prefix. |
||||||
|
* |
||||||
|
* @param dbLogDir the path to the info log directory |
||||||
|
* @return the instance of the current Object. |
||||||
|
*/ |
||||||
|
Object setDbLogDir(String dbLogDir); |
||||||
|
|
||||||
|
/** |
||||||
|
* Returns the directory of info log. |
||||||
|
* |
||||||
|
* If it is empty, the log files will be in the same dir as data. |
||||||
|
* If it is non empty, the log files will be in the specified dir, |
||||||
|
* and the db data dir's absolute path will be used as the log file |
||||||
|
* name's prefix. |
||||||
|
* |
||||||
|
* @return the path to the info log directory |
||||||
|
*/ |
||||||
|
String dbLogDir(); |
||||||
|
|
||||||
|
/** |
||||||
|
* This specifies the absolute dir path for write-ahead logs (WAL). |
||||||
|
* If it is empty, the log files will be in the same dir as data, |
||||||
|
* dbname is used as the data dir by default |
||||||
|
* If it is non empty, the log files will be in kept the specified dir. |
||||||
|
* When destroying the db, |
||||||
|
* all log files in wal_dir and the dir itself is deleted |
||||||
|
* |
||||||
|
* @param walDir the path to the write-ahead-log directory. |
||||||
|
* @return the instance of the current Object. |
||||||
|
*/ |
||||||
|
Object setWalDir(String walDir); |
||||||
|
|
||||||
|
/** |
||||||
|
* Returns the path to the write-ahead-logs (WAL) directory. |
||||||
|
* |
||||||
|
* If it is empty, the log files will be in the same dir as data, |
||||||
|
* dbname is used as the data dir by default |
||||||
|
* If it is non empty, the log files will be in kept the specified dir. |
||||||
|
* When destroying the db, |
||||||
|
* all log files in wal_dir and the dir itself is deleted |
||||||
|
* |
||||||
|
* @return the path to the write-ahead-logs (WAL) directory. |
||||||
|
*/ |
||||||
|
String walDir(); |
||||||
|
|
||||||
|
/** |
||||||
|
* The periodicity when obsolete files get deleted. The default |
||||||
|
* value is 6 hours. The files that get out of scope by compaction |
||||||
|
* process will still get automatically delete on every compaction, |
||||||
|
* regardless of this setting |
||||||
|
* |
||||||
|
* @param micros the time interval in micros |
||||||
|
* @return the instance of the current Object. |
||||||
|
*/ |
||||||
|
Object setDeleteObsoleteFilesPeriodMicros(long micros); |
||||||
|
|
||||||
|
/** |
||||||
|
* The periodicity when obsolete files get deleted. The default |
||||||
|
* value is 6 hours. The files that get out of scope by compaction |
||||||
|
* process will still get automatically delete on every compaction, |
||||||
|
* regardless of this setting |
||||||
|
* |
||||||
|
* @return the time interval in micros when obsolete files will be deleted. |
||||||
|
*/ |
||||||
|
long deleteObsoleteFilesPeriodMicros(); |
||||||
|
|
||||||
|
/** |
||||||
|
* Specifies the maximum number of concurrent background compaction jobs, |
||||||
|
* submitted to the default LOW priority thread pool. |
||||||
|
* If you're increasing this, also consider increasing number of threads in |
||||||
|
* LOW priority thread pool. For more information, see |
||||||
|
* Default: 1 |
||||||
|
* |
||||||
|
* @param maxBackgroundCompactions the maximum number of background |
||||||
|
* compaction jobs. |
||||||
|
* @return the instance of the current Object. |
||||||
|
* |
||||||
|
* @see RocksEnv#setBackgroundThreads(int) |
||||||
|
* @see RocksEnv#setBackgroundThreads(int, int) |
||||||
|
* @see #maxBackgroundFlushes() |
||||||
|
*/ |
||||||
|
Object setMaxBackgroundCompactions(int maxBackgroundCompactions); |
||||||
|
|
||||||
|
/** |
||||||
|
* Returns the maximum number of concurrent background compaction jobs, |
||||||
|
* submitted to the default LOW priority thread pool. |
||||||
|
* When increasing this number, we may also want to consider increasing |
||||||
|
* number of threads in LOW priority thread pool. |
||||||
|
* Default: 1 |
||||||
|
* |
||||||
|
* @return the maximum number of concurrent background compaction jobs. |
||||||
|
* @see RocksEnv#setBackgroundThreads(int) |
||||||
|
* @see RocksEnv#setBackgroundThreads(int, int) |
||||||
|
*/ |
||||||
|
int maxBackgroundCompactions(); |
||||||
|
|
||||||
|
/** |
||||||
|
* Specifies the maximum number of concurrent background flush jobs. |
||||||
|
* If you're increasing this, also consider increasing number of threads in |
||||||
|
* HIGH priority thread pool. For more information, see |
||||||
|
* Default: 1 |
||||||
|
* |
||||||
|
* @param maxBackgroundFlushes number of max concurrent flush jobs |
||||||
|
* @return the instance of the current Object. |
||||||
|
* |
||||||
|
* @see RocksEnv#setBackgroundThreads(int) |
||||||
|
* @see RocksEnv#setBackgroundThreads(int, int) |
||||||
|
* @see #maxBackgroundCompactions() |
||||||
|
*/ |
||||||
|
Object setMaxBackgroundFlushes(int maxBackgroundFlushes); |
||||||
|
|
||||||
|
/** |
||||||
|
* Returns the maximum number of concurrent background flush jobs. |
||||||
|
* If you're increasing this, also consider increasing number of threads in |
||||||
|
* HIGH priority thread pool. For more information, see |
||||||
|
* Default: 1 |
||||||
|
* |
||||||
|
* @return the maximum number of concurrent background flush jobs. |
||||||
|
* @see RocksEnv#setBackgroundThreads(int) |
||||||
|
* @see RocksEnv#setBackgroundThreads(int, int) |
||||||
|
*/ |
||||||
|
int maxBackgroundFlushes(); |
||||||
|
|
||||||
|
/** |
||||||
|
* Specifies the maximum size of a info log file. If the current log file |
||||||
|
* is larger than `max_log_file_size`, a new info log file will |
||||||
|
* be created. |
||||||
|
* If 0, all logs will be written to one log file. |
||||||
|
* |
||||||
|
* @param maxLogFileSize the maximum size of a info log file. |
||||||
|
* @return the instance of the current Object. |
||||||
|
* @throws org.rocksdb.RocksDBException |
||||||
|
*/ |
||||||
|
Object setMaxLogFileSize(long maxLogFileSize) |
||||||
|
throws RocksDBException; |
||||||
|
|
||||||
|
/** |
||||||
|
* Returns the maximum size of a info log file. If the current log file |
||||||
|
* is larger than this size, a new info log file will be created. |
||||||
|
* If 0, all logs will be written to one log file. |
||||||
|
* |
||||||
|
* @return the maximum size of the info log file. |
||||||
|
*/ |
||||||
|
long maxLogFileSize(); |
||||||
|
|
||||||
|
/** |
||||||
|
* Specifies the time interval for the info log file to roll (in seconds). |
||||||
|
* If specified with non-zero value, log file will be rolled |
||||||
|
* if it has been active longer than `log_file_time_to_roll`. |
||||||
|
* Default: 0 (disabled) |
||||||
|
* |
||||||
|
* @param logFileTimeToRoll the time interval in seconds. |
||||||
|
* @return the instance of the current Object. |
||||||
|
* @throws org.rocksdb.RocksDBException |
||||||
|
*/ |
||||||
|
Object setLogFileTimeToRoll(long logFileTimeToRoll) |
||||||
|
throws RocksDBException; |
||||||
|
|
||||||
|
/** |
||||||
|
* Returns the time interval for the info log file to roll (in seconds). |
||||||
|
* If specified with non-zero value, log file will be rolled |
||||||
|
* if it has been active longer than `log_file_time_to_roll`. |
||||||
|
* Default: 0 (disabled) |
||||||
|
* |
||||||
|
* @return the time interval in seconds. |
||||||
|
*/ |
||||||
|
long logFileTimeToRoll(); |
||||||
|
|
||||||
|
/** |
||||||
|
* Specifies the maximum number of info log files to be kept. |
||||||
|
* Default: 1000 |
||||||
|
* |
||||||
|
* @param keepLogFileNum the maximum number of info log files to be kept. |
||||||
|
* @return the instance of the current Object. |
||||||
|
* @throws org.rocksdb.RocksDBException |
||||||
|
*/ |
||||||
|
Object setKeepLogFileNum(long keepLogFileNum) |
||||||
|
throws RocksDBException; |
||||||
|
|
||||||
|
/** |
||||||
|
* Returns the maximum number of info log files to be kept. |
||||||
|
* Default: 1000 |
||||||
|
* |
||||||
|
* @return the maximum number of info log files to be kept. |
||||||
|
*/ |
||||||
|
long keepLogFileNum(); |
||||||
|
|
||||||
|
/** |
||||||
|
* Manifest file is rolled over on reaching this limit. |
||||||
|
* The older manifest file be deleted. |
||||||
|
* The default value is MAX_INT so that roll-over does not take place. |
||||||
|
* |
||||||
|
* @param maxManifestFileSize the size limit of a manifest file. |
||||||
|
* @return the instance of the current Object. |
||||||
|
*/ |
||||||
|
Object setMaxManifestFileSize(long maxManifestFileSize); |
||||||
|
|
||||||
|
/** |
||||||
|
* Manifest file is rolled over on reaching this limit. |
||||||
|
* The older manifest file be deleted. |
||||||
|
* The default value is MAX_INT so that roll-over does not take place. |
||||||
|
* |
||||||
|
* @return the size limit of a manifest file. |
||||||
|
*/ |
||||||
|
long maxManifestFileSize(); |
||||||
|
|
||||||
|
/** |
||||||
|
* Number of shards used for table cache. |
||||||
|
* |
||||||
|
* @param tableCacheNumshardbits the number of chards |
||||||
|
* @return the instance of the current Object. |
||||||
|
*/ |
||||||
|
Object setTableCacheNumshardbits(int tableCacheNumshardbits); |
||||||
|
|
||||||
|
/** |
||||||
|
* Number of shards used for table cache. |
||||||
|
* |
||||||
|
* @return the number of shards used for table cache. |
||||||
|
*/ |
||||||
|
int tableCacheNumshardbits(); |
||||||
|
|
||||||
|
/** |
||||||
|
* During data eviction of table's LRU cache, it would be inefficient |
||||||
|
* to strictly follow LRU because this piece of memory will not really |
||||||
|
* be released unless its refcount falls to zero. Instead, make two |
||||||
|
* passes: the first pass will release items with refcount = 1, |
||||||
|
* and if not enough space releases after scanning the number of |
||||||
|
* elements specified by this parameter, we will remove items in LRU |
||||||
|
* order. |
||||||
|
* |
||||||
|
* @param limit scan count limit |
||||||
|
* @return the instance of the current Object. |
||||||
|
*/ |
||||||
|
Object setTableCacheRemoveScanCountLimit(int limit); |
||||||
|
|
||||||
|
/** |
||||||
|
* During data eviction of table's LRU cache, it would be inefficient |
||||||
|
* to strictly follow LRU because this piece of memory will not really |
||||||
|
* be released unless its refcount falls to zero. Instead, make two |
||||||
|
* passes: the first pass will release items with refcount = 1, |
||||||
|
* and if not enough space releases after scanning the number of |
||||||
|
* elements specified by this parameter, we will remove items in LRU |
||||||
|
* order. |
||||||
|
* |
||||||
|
* @return scan count limit |
||||||
|
*/ |
||||||
|
int tableCacheRemoveScanCountLimit(); |
||||||
|
|
||||||
|
/** |
||||||
|
* {@link #walTtlSeconds()} and {@link #walSizeLimitMB()} affect how archived logs |
||||||
|
* will be deleted. |
||||||
|
* <ol> |
||||||
|
* <li>If both set to 0, logs will be deleted asap and will not get into |
||||||
|
* the archive.</li> |
||||||
|
* <li>If WAL_ttl_seconds is 0 and WAL_size_limit_MB is not 0, |
||||||
|
* WAL files will be checked every 10 min and if total size is greater |
||||||
|
* then WAL_size_limit_MB, they will be deleted starting with the |
||||||
|
* earliest until size_limit is met. All empty files will be deleted.</li> |
||||||
|
* <li>If WAL_ttl_seconds is not 0 and WAL_size_limit_MB is 0, then |
||||||
|
* WAL files will be checked every WAL_ttl_secondsi / 2 and those that |
||||||
|
* are older than WAL_ttl_seconds will be deleted.</li> |
||||||
|
* <li>If both are not 0, WAL files will be checked every 10 min and both |
||||||
|
* checks will be performed with ttl being first.</li> |
||||||
|
* |
||||||
|
* @param walTtlSeconds the ttl seconds |
||||||
|
* @return the instance of the current Object. |
||||||
|
* @see #setWalSizeLimitMB(long) |
||||||
|
*/ |
||||||
|
Object setWalTtlSeconds(long walTtlSeconds); |
||||||
|
|
||||||
|
/** |
||||||
|
* WalTtlSeconds() and walSizeLimitMB() affect how archived logs |
||||||
|
* will be deleted. |
||||||
|
* <ol> |
||||||
|
* <li>If both set to 0, logs will be deleted asap and will not get into |
||||||
|
* the archive.</li> |
||||||
|
* <li>If WAL_ttl_seconds is 0 and WAL_size_limit_MB is not 0, |
||||||
|
* WAL files will be checked every 10 min and if total size is greater |
||||||
|
* then WAL_size_limit_MB, they will be deleted starting with the |
||||||
|
* earliest until size_limit is met. All empty files will be deleted.</li> |
||||||
|
* <li>If WAL_ttl_seconds is not 0 and WAL_size_limit_MB is 0, then |
||||||
|
* WAL files will be checked every WAL_ttl_secondsi / 2 and those that |
||||||
|
* are older than WAL_ttl_seconds will be deleted.</li> |
||||||
|
* <li>If both are not 0, WAL files will be checked every 10 min and both |
||||||
|
* checks will be performed with ttl being first.</li> |
||||||
|
* </ol> |
||||||
|
* |
||||||
|
* @return the wal-ttl seconds |
||||||
|
* @see #walSizeLimitMB() |
||||||
|
*/ |
||||||
|
long walTtlSeconds(); |
||||||
|
|
||||||
|
/** |
||||||
|
* WalTtlSeconds() and walSizeLimitMB() affect how archived logs |
||||||
|
* will be deleted. |
||||||
|
* <ol> |
||||||
|
* <li>If both set to 0, logs will be deleted asap and will not get into |
||||||
|
* the archive.</li> |
||||||
|
* <li>If WAL_ttl_seconds is 0 and WAL_size_limit_MB is not 0, |
||||||
|
* WAL files will be checked every 10 min and if total size is greater |
||||||
|
* then WAL_size_limit_MB, they will be deleted starting with the |
||||||
|
* earliest until size_limit is met. All empty files will be deleted.</li> |
||||||
|
* <li>If WAL_ttl_seconds is not 0 and WAL_size_limit_MB is 0, then |
||||||
|
* WAL files will be checked every WAL_ttl_secondsi / 2 and those that |
||||||
|
* are older than WAL_ttl_seconds will be deleted.</li> |
||||||
|
* <li>If both are not 0, WAL files will be checked every 10 min and both |
||||||
|
* checks will be performed with ttl being first.</li> |
||||||
|
* |
||||||
|
* @param sizeLimitMB size limit in mega-bytes. |
||||||
|
* @return the instance of the current Object. |
||||||
|
* @see #setWalSizeLimitMB(long) |
||||||
|
*/ |
||||||
|
Object setWalSizeLimitMB(long sizeLimitMB); |
||||||
|
|
||||||
|
/** |
||||||
|
* {@link #walTtlSeconds()} and {@code #walSizeLimitMB()} affect how archived logs |
||||||
|
* will be deleted. |
||||||
|
* <ol> |
||||||
|
* <li>If both set to 0, logs will be deleted asap and will not get into |
||||||
|
* the archive.</li> |
||||||
|
* <li>If WAL_ttl_seconds is 0 and WAL_size_limit_MB is not 0, |
||||||
|
* WAL files will be checked every 10 min and if total size is greater |
||||||
|
* then WAL_size_limit_MB, they will be deleted starting with the |
||||||
|
* earliest until size_limit is met. All empty files will be deleted.</li> |
||||||
|
* <li>If WAL_ttl_seconds is not 0 and WAL_size_limit_MB is 0, then |
||||||
|
* WAL files will be checked every WAL_ttl_seconds i / 2 and those that |
||||||
|
* are older than WAL_ttl_seconds will be deleted.</li> |
||||||
|
* <li>If both are not 0, WAL files will be checked every 10 min and both |
||||||
|
* checks will be performed with ttl being first.</li> |
||||||
|
* </ol> |
||||||
|
* @return size limit in mega-bytes. |
||||||
|
* @see #walSizeLimitMB() |
||||||
|
*/ |
||||||
|
long walSizeLimitMB(); |
||||||
|
|
||||||
|
/** |
||||||
|
* Number of bytes to preallocate (via fallocate) the manifest |
||||||
|
* files. Default is 4mb, which is reasonable to reduce random IO |
||||||
|
* as well as prevent overallocation for mounts that preallocate |
||||||
|
* large amounts of data (such as xfs's allocsize option). |
||||||
|
* |
||||||
|
* @param size the size in byte |
||||||
|
* @return the instance of the current Object. |
||||||
|
* @throws org.rocksdb.RocksDBException |
||||||
|
*/ |
||||||
|
Object setManifestPreallocationSize(long size) |
||||||
|
throws RocksDBException; |
||||||
|
|
||||||
|
/** |
||||||
|
* Number of bytes to preallocate (via fallocate) the manifest |
||||||
|
* files. Default is 4mb, which is reasonable to reduce random IO |
||||||
|
* as well as prevent overallocation for mounts that preallocate |
||||||
|
* large amounts of data (such as xfs's allocsize option). |
||||||
|
* |
||||||
|
* @return size in bytes. |
||||||
|
*/ |
||||||
|
long manifestPreallocationSize(); |
||||||
|
|
||||||
|
/** |
||||||
|
* Data being read from file storage may be buffered in the OS |
||||||
|
* Default: true |
||||||
|
* |
||||||
|
* @param allowOsBuffer if true, then OS buffering is allowed. |
||||||
|
* @return the instance of the current Object. |
||||||
|
*/ |
||||||
|
Object setAllowOsBuffer(boolean allowOsBuffer); |
||||||
|
|
||||||
|
/** |
||||||
|
* Data being read from file storage may be buffered in the OS |
||||||
|
* Default: true |
||||||
|
* |
||||||
|
* @return if true, then OS buffering is allowed. |
||||||
|
*/ |
||||||
|
boolean allowOsBuffer(); |
||||||
|
|
||||||
|
/** |
||||||
|
* Allow the OS to mmap file for reading sst tables. |
||||||
|
* Default: false |
||||||
|
* |
||||||
|
* @param allowMmapReads true if mmap reads are allowed. |
||||||
|
* @return the instance of the current Object. |
||||||
|
*/ |
||||||
|
Object setAllowMmapReads(boolean allowMmapReads); |
||||||
|
|
||||||
|
/** |
||||||
|
* Allow the OS to mmap file for reading sst tables. |
||||||
|
* Default: false |
||||||
|
* |
||||||
|
* @return true if mmap reads are allowed. |
||||||
|
*/ |
||||||
|
boolean allowMmapReads(); |
||||||
|
|
||||||
|
/** |
||||||
|
* Allow the OS to mmap file for writing. Default: false |
||||||
|
* |
||||||
|
* @param allowMmapWrites true if mmap writes are allowd. |
||||||
|
* @return the instance of the current Object. |
||||||
|
*/ |
||||||
|
Object setAllowMmapWrites(boolean allowMmapWrites); |
||||||
|
|
||||||
|
/** |
||||||
|
* Allow the OS to mmap file for writing. Default: false |
||||||
|
* |
||||||
|
* @return true if mmap writes are allowed. |
||||||
|
*/ |
||||||
|
boolean allowMmapWrites(); |
||||||
|
|
||||||
|
/** |
||||||
|
* Disable child process inherit open files. Default: true |
||||||
|
* |
||||||
|
* @param isFdCloseOnExec true if child process inheriting open |
||||||
|
* files is disabled. |
||||||
|
* @return the instance of the current Object. |
||||||
|
*/ |
||||||
|
Object setIsFdCloseOnExec(boolean isFdCloseOnExec); |
||||||
|
|
||||||
|
/** |
||||||
|
* Disable child process inherit open files. Default: true |
||||||
|
* |
||||||
|
* @return true if child process inheriting open files is disabled. |
||||||
|
*/ |
||||||
|
boolean isFdCloseOnExec(); |
||||||
|
|
||||||
|
/** |
||||||
|
* Skip log corruption error on recovery (If client is ok with |
||||||
|
* losing most recent changes) |
||||||
|
* Default: false |
||||||
|
* |
||||||
|
* @param skip true if log corruption errors are skipped during recovery. |
||||||
|
* @return the instance of the current Object. |
||||||
|
*/ |
||||||
|
Object setSkipLogErrorOnRecovery(boolean skip); |
||||||
|
|
||||||
|
/** |
||||||
|
* Skip log corruption error on recovery (If client is ok with |
||||||
|
* losing most recent changes) |
||||||
|
* Default: false |
||||||
|
* |
||||||
|
* @return true if log corruption errors are skipped during recovery. |
||||||
|
*/ |
||||||
|
boolean skipLogErrorOnRecovery(); |
||||||
|
|
||||||
|
/** |
||||||
|
* if not zero, dump rocksdb.stats to LOG every stats_dump_period_sec |
||||||
|
* Default: 3600 (1 hour) |
||||||
|
* |
||||||
|
* @param statsDumpPeriodSec time interval in seconds. |
||||||
|
* @return the instance of the current Object. |
||||||
|
*/ |
||||||
|
Object setStatsDumpPeriodSec(int statsDumpPeriodSec); |
||||||
|
|
||||||
|
/** |
||||||
|
* If not zero, dump rocksdb.stats to LOG every stats_dump_period_sec |
||||||
|
* Default: 3600 (1 hour) |
||||||
|
* |
||||||
|
* @return time interval in seconds. |
||||||
|
*/ |
||||||
|
int statsDumpPeriodSec(); |
||||||
|
|
||||||
|
/** |
||||||
|
* If set true, will hint the underlying file system that the file |
||||||
|
* access pattern is random, when a sst file is opened. |
||||||
|
* Default: true |
||||||
|
* |
||||||
|
* @param adviseRandomOnOpen true if hinting random access is on. |
||||||
|
* @return the instance of the current Object. |
||||||
|
*/ |
||||||
|
Object setAdviseRandomOnOpen(boolean adviseRandomOnOpen); |
||||||
|
|
||||||
|
/** |
||||||
|
* If set true, will hint the underlying file system that the file |
||||||
|
* access pattern is random, when a sst file is opened. |
||||||
|
* Default: true |
||||||
|
* |
||||||
|
* @return true if hinting random access is on. |
||||||
|
*/ |
||||||
|
boolean adviseRandomOnOpen(); |
||||||
|
|
||||||
|
/** |
||||||
|
* Use adaptive mutex, which spins in the user space before resorting |
||||||
|
* to kernel. This could reduce context switch when the mutex is not |
||||||
|
* heavily contended. However, if the mutex is hot, we could end up |
||||||
|
* wasting spin time. |
||||||
|
* Default: false |
||||||
|
* |
||||||
|
* @param useAdaptiveMutex true if adaptive mutex is used. |
||||||
|
* @return the instance of the current Object. |
||||||
|
*/ |
||||||
|
Object setUseAdaptiveMutex(boolean useAdaptiveMutex); |
||||||
|
|
||||||
|
/** |
||||||
|
* Use adaptive mutex, which spins in the user space before resorting |
||||||
|
* to kernel. This could reduce context switch when the mutex is not |
||||||
|
* heavily contended. However, if the mutex is hot, we could end up |
||||||
|
* wasting spin time. |
||||||
|
* Default: false |
||||||
|
* |
||||||
|
* @return true if adaptive mutex is used. |
||||||
|
*/ |
||||||
|
boolean useAdaptiveMutex(); |
||||||
|
|
||||||
|
/** |
||||||
|
* Allows OS to incrementally sync files to disk while they are being |
||||||
|
* written, asynchronously, in the background. |
||||||
|
* Issue one request for every bytes_per_sync written. 0 turns it off. |
||||||
|
* Default: 0 |
||||||
|
* |
||||||
|
* @param bytesPerSync size in bytes |
||||||
|
* @return the instance of the current Object. |
||||||
|
*/ |
||||||
|
Object setBytesPerSync(long bytesPerSync); |
||||||
|
|
||||||
|
/** |
||||||
|
* Allows OS to incrementally sync files to disk while they are being |
||||||
|
* written, asynchronously, in the background. |
||||||
|
* Issue one request for every bytes_per_sync written. 0 turns it off. |
||||||
|
* Default: 0 |
||||||
|
* |
||||||
|
* @return size in bytes |
||||||
|
*/ |
||||||
|
long bytesPerSync(); |
||||||
|
} |
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Loading…
Reference in new issue