public class BlockBasedTableConfig extends TableFormatConfig
Constructor and Description |
---|
BlockBasedTableConfig() |
Modifier and Type | Method and Description |
---|---|
boolean |
blockAlign()
Determines whether data blocks are aligned on the lesser of page size
and block size.
|
int |
blockCacheCompressedNumShardBits()
Deprecated.
|
long |
blockCacheCompressedSize()
Deprecated.
|
long |
blockCacheSize()
Deprecated.
|
int |
blockRestartInterval()
Get the block restart interval.
|
long |
blockSize()
Get the approximate size of user data packed per block.
|
int |
blockSizeDeviation() |
boolean |
cacheIndexAndFilterBlocks()
Indicating if we'd put index/filter blocks to the block cache.
|
boolean |
cacheIndexAndFilterBlocksWithHighPriority()
Indicates if index and filter blocks will be treated as high-priority in the block cache.
|
int |
cacheNumShardBits()
Deprecated.
|
ChecksumType |
checksumType()
Get the checksum type to be used with this table.
|
double |
dataBlockHashTableUtilRatio()
Get the #entries/#buckets.
|
DataBlockIndexType |
dataBlockIndexType()
Get the data block index type.
|
boolean |
enableIndexCompression()
Determine if index compression is enabled.
|
Filter |
filterPolicy()
Get the filter policy.
|
int |
formatVersion()
Get the format version.
|
boolean |
hashIndexAllowCollision()
Deprecated.
This option is now deprecated. No matter what value it
is set to, it will behave as
if
hashIndexAllowCollision() == true. |
int |
indexBlockRestartInterval()
Get the index block restart interval.
|
IndexShorteningMode |
indexShortening()
Get the index shortening mode.
|
IndexType |
indexType()
Get the index type.
|
long |
metadataBlockSize()
Get the block size for partitioned metadata.
|
protected long |
newTableFactoryHandle()
This function should only be called by Options.setTableFormatConfig(),
which will create a c++ shared-pointer to the c++ TableFactory
that associated with the Java TableFormatConfig.
|
boolean |
noBlockCache()
Determine if the block cache is disabled.
|
boolean |
optimizeFiltersForMemory()
Option to generate Bloom filters that minimize memory
internal fragmentation.
|
boolean |
partitionFilters()
Indicates if we're using partitioned filters.
|
boolean |
pinL0FilterAndIndexBlocksInCache()
Indicating if we'd like to pin L0 index/filter blocks to the block cache.
|
boolean |
pinTopLevelIndexAndFilter()
Indicates if top-level index and filter blocks should be pinned.
|
int |
readAmpBytesPerBit()
Get the Read amplification bytes per-bit.
|
BlockBasedTableConfig |
setBlockAlign(boolean blockAlign)
Set whether data blocks should be aligned on the lesser of page size
and block size.
|
BlockBasedTableConfig |
setBlockCache(Cache blockCache)
Use the specified cache for blocks.
|
BlockBasedTableConfig |
setBlockCacheCompressed(Cache blockCacheCompressed)
Use the specified cache for compressed blocks.
|
BlockBasedTableConfig |
setBlockCacheCompressedNumShardBits(int blockCacheCompressedNumShardBits)
Deprecated.
|
BlockBasedTableConfig |
setBlockCacheCompressedSize(long blockCacheCompressedSize)
Deprecated.
|
BlockBasedTableConfig |
setBlockCacheSize(long blockCacheSize)
Deprecated.
Use
setBlockCache(Cache) . |
BlockBasedTableConfig |
setBlockRestartInterval(int restartInterval)
Set the block restart interval.
|
BlockBasedTableConfig |
setBlockSize(long blockSize)
Approximate size of user data packed per block.
|
BlockBasedTableConfig |
setBlockSizeDeviation(int blockSizeDeviation)
This is used to close a block before it reaches the configured
blockSize() . |
BlockBasedTableConfig |
setCacheIndexAndFilterBlocks(boolean cacheIndexAndFilterBlocks)
Indicating if we'd put index/filter blocks to the block cache.
|
BlockBasedTableConfig |
setCacheIndexAndFilterBlocksWithHighPriority(boolean cacheIndexAndFilterBlocksWithHighPriority)
If true, cache index and filter blocks with high priority.
|
BlockBasedTableConfig |
setCacheNumShardBits(int blockCacheNumShardBits)
Deprecated.
Use
setBlockCache(Cache) . |
BlockBasedTableConfig |
setChecksumType(ChecksumType checksumType)
Sets
|
BlockBasedTableConfig |
setDataBlockHashTableUtilRatio(double dataBlockHashTableUtilRatio)
Set the #entries/#buckets.
|
BlockBasedTableConfig |
setDataBlockIndexType(DataBlockIndexType dataBlockIndexType)
Sets the data block index type to used with this table.
|
BlockBasedTableConfig |
setEnableIndexCompression(boolean enableIndexCompression)
Store index blocks on disk in compressed format.
|
BlockBasedTableConfig |
setFilter(Filter filter)
Deprecated.
|
BlockBasedTableConfig |
setFilterPolicy(Filter filterPolicy)
Use the specified filter policy to reduce disk reads.
|
BlockBasedTableConfig |
setFormatVersion(int formatVersion)
We currently have five versions:
|
BlockBasedTableConfig |
setHashIndexAllowCollision(boolean hashIndexAllowCollision)
Deprecated.
This option is now deprecated. No matter what value it
is set to, it will behave as
if
hashIndexAllowCollision() == true. |
BlockBasedTableConfig |
setIndexBlockRestartInterval(int restartInterval)
Set the index block restart interval
|
BlockBasedTableConfig |
setIndexShortening(IndexShorteningMode indexShortening)
Set the index shortening mode.
|
BlockBasedTableConfig |
setIndexType(IndexType indexType)
Sets the index type to used with this table.
|
BlockBasedTableConfig |
setMetadataBlockSize(long metadataBlockSize)
Set block size for partitioned metadata.
|
BlockBasedTableConfig |
setNoBlockCache(boolean noBlockCache)
Disable block cache.
|
BlockBasedTableConfig |
setOptimizeFiltersForMemory(boolean optimizeFiltersForMemory)
Option to generate Bloom filters that minimize memory
internal fragmentation.
|
BlockBasedTableConfig |
setPartitionFilters(boolean partitionFilters)
Use partitioned full filters for each SST file.
|
BlockBasedTableConfig |
setPersistentCache(PersistentCache persistentCache)
Use the specified persistent cache.
|
BlockBasedTableConfig |
setPinL0FilterAndIndexBlocksInCache(boolean pinL0FilterAndIndexBlocksInCache)
Indicating if we'd like to pin L0 index/filter blocks to the block cache.
|
BlockBasedTableConfig |
setPinTopLevelIndexAndFilter(boolean pinTopLevelIndexAndFilter)
If cacheIndexAndFilterBlocks is true and the below is true, then
the top-level index of partitioned filter and index blocks are stored in
the cache, but a reference is held in the "table reader" object so the
blocks are pinned and only evicted from cache when the table reader is
freed.
|
BlockBasedTableConfig |
setReadAmpBytesPerBit(int readAmpBytesPerBit)
Set the Read amplification bytes per-bit.
|
BlockBasedTableConfig |
setUseDeltaEncoding(boolean useDeltaEncoding)
Use delta encoding to compress keys in blocks.
|
BlockBasedTableConfig |
setVerifyCompression(boolean verifyCompression)
Verify that decompressing the compressed block gives back the input.
|
BlockBasedTableConfig |
setWholeKeyFiltering(boolean wholeKeyFiltering)
If true, place whole keys in the filter (not just prefixes).
|
boolean |
useDeltaEncoding()
Determine if delta encoding is being used to compress block keys.
|
boolean |
verifyCompression()
Returns true when compression verification is enabled.
|
boolean |
wholeKeyFiltering()
Determine if whole keys as opposed to prefixes are placed in the filter.
|
public boolean cacheIndexAndFilterBlocks()
public BlockBasedTableConfig setCacheIndexAndFilterBlocks(boolean cacheIndexAndFilterBlocks)
cacheIndexAndFilterBlocks
- and filter blocks should be put in block cache.public boolean cacheIndexAndFilterBlocksWithHighPriority()
public BlockBasedTableConfig setCacheIndexAndFilterBlocksWithHighPriority(boolean cacheIndexAndFilterBlocksWithHighPriority)
cacheIndexAndFilterBlocksWithHighPriority
- if index and filter blocks
will be treated as high-priority.public boolean pinL0FilterAndIndexBlocksInCache()
public BlockBasedTableConfig setPinL0FilterAndIndexBlocksInCache(boolean pinL0FilterAndIndexBlocksInCache)
pinL0FilterAndIndexBlocksInCache
- pin blocks in block cachepublic boolean pinTopLevelIndexAndFilter()
public BlockBasedTableConfig setPinTopLevelIndexAndFilter(boolean pinTopLevelIndexAndFilter)
pinTopLevelIndexAndFilter
- if top-level index and filter blocks should be pinned.public IndexType indexType()
public BlockBasedTableConfig setIndexType(IndexType indexType)
indexType
- IndexType
valuepublic DataBlockIndexType dataBlockIndexType()
public BlockBasedTableConfig setDataBlockIndexType(DataBlockIndexType dataBlockIndexType)
dataBlockIndexType
- DataBlockIndexType
valuepublic double dataBlockHashTableUtilRatio()
dataBlockIndexType()
is
DataBlockIndexType.kDataBlockBinaryAndHash
.public BlockBasedTableConfig setDataBlockHashTableUtilRatio(double dataBlockHashTableUtilRatio)
dataBlockIndexType()
is
DataBlockIndexType.kDataBlockBinaryAndHash
.dataBlockHashTableUtilRatio
- #entries/#bucketspublic ChecksumType checksumType()
public BlockBasedTableConfig setChecksumType(ChecksumType checksumType)
checksumType
- ChecksumType
value.public boolean noBlockCache()
public BlockBasedTableConfig setNoBlockCache(boolean noBlockCache)
setBlockCache(Cache)
should point to a null
object.
Default: falsenoBlockCache
- if use block cachepublic BlockBasedTableConfig setBlockCache(Cache blockCache)
Cache
should not be disposed before options instances
using this cache is disposed.
Cache
instance can be re-used in multiple options
instances.blockCache
- Cache
Cache java instance
(e.g. LRUCache).public BlockBasedTableConfig setPersistentCache(PersistentCache persistentCache)
!null
use the specified cache for pages read from device,
otherwise no page cache is used.persistentCache
- the persistent cachepublic BlockBasedTableConfig setBlockCacheCompressed(Cache blockCacheCompressed)
null
, RocksDB will not use a compressed block cache.
Note: though it looks similar to setBlockCache(Cache)
, RocksDB
doesn't put the same type of object there.
Cache
should not be disposed before options instances
using this cache is disposed.
Cache
instance can be re-used in multiple options
instances.blockCacheCompressed
- Cache
Cache java instance
(e.g. LRUCache).public long blockSize()
public BlockBasedTableConfig setBlockSize(long blockSize)
blockSize
- block size in bytespublic int blockSizeDeviation()
public BlockBasedTableConfig setBlockSizeDeviation(int blockSizeDeviation)
blockSize()
. If the percentage of free space in the current block
is less than this specified number and adding a new record to the block
will exceed the configured block size, then this block will be closed and
the new record will be written to the next block.
Default is 10.blockSizeDeviation
- the deviation to block size allowedpublic int blockRestartInterval()
public BlockBasedTableConfig setBlockRestartInterval(int restartInterval)
restartInterval
- block restart interval.public int indexBlockRestartInterval()
public BlockBasedTableConfig setIndexBlockRestartInterval(int restartInterval)
restartInterval
- index block restart interval.public long metadataBlockSize()
public BlockBasedTableConfig setMetadataBlockSize(long metadataBlockSize)
metadataBlockSize
- Partitioned metadata block size.public boolean partitionFilters()
public BlockBasedTableConfig setPartitionFilters(boolean partitionFilters)
partitionFilters
- use partition filters.@Experimental(value="Option to generate Bloom filters that minimize memory internal fragmentation") public boolean optimizeFiltersForMemory()
setOptimizeFiltersForMemory(boolean)
.@Experimental(value="Option to generate Bloom filters that minimize memory internal fragmentation") public BlockBasedTableConfig setOptimizeFiltersForMemory(boolean optimizeFiltersForMemory)
formatVersion()
>= 5),
then Bloom filters are generated to "round up" and "round down" their
sizes to minimize internal fragmentation when loaded into memory, assuming
the reading DB has the same memory allocation characteristics as the
generating DB. This option does not break forward or backward
compatibility.
While individual filters will vary in bits/key and false positive rate
when setting is true, the implementation attempts to maintain a weighted
average FP rate for filters consistent with this option set to false.
With Jemalloc for example, this setting is expected to save about 10% of
the memory footprint and block cache charge of filters, while increasing
disk usage of filters by about 1-2% due to encoding efficiency losses
with variance in bits/key.
NOTE: Because some memory counted by block cache might be unmapped pages
within internal fragmentation, this option can increase observed RSS
memory usage. With cacheIndexAndFilterBlocks()
== true,
this option makes the block cache better at using space it is allowed.
NOTE: Do not set to true if you do not trust malloc_usable_size. With
this option, RocksDB might access an allocated memory object beyond its
original size if malloc_usable_size says it is safe to do so. While this
can be considered bad practice, it should not produce undefined behavior
unless malloc_usable_size is buggy or broken.optimizeFiltersForMemory
- true to enable Bloom filters that minimize
memory internal fragmentation, or false to disable.public boolean useDeltaEncoding()
public BlockBasedTableConfig setUseDeltaEncoding(boolean useDeltaEncoding)
ReadOptions.pinData()
requires this option to be disabled.
Default: trueuseDeltaEncoding
- true to enable delta encodingpublic Filter filterPolicy()
public BlockBasedTableConfig setFilterPolicy(Filter filterPolicy)
Filter
should not be closed before options instances
using this filter are closed.
Filter
instance can be re-used in multiple options
instances.filterPolicy
- Filter
Filter Policy java instance.@Deprecated public BlockBasedTableConfig setFilter(Filter filter)
setFilterPolicy(Filter)
filter
- the filterpublic boolean wholeKeyFiltering()
public BlockBasedTableConfig setWholeKeyFiltering(boolean wholeKeyFiltering)
wholeKeyFiltering
- if enable whole key filteringpublic boolean verifyCompression()
setVerifyCompression(boolean)
.public BlockBasedTableConfig setVerifyCompression(boolean verifyCompression)
verifyCompression
- true to enable compression verification.public int readAmpBytesPerBit()
setReadAmpBytesPerBit(int)
.public BlockBasedTableConfig setReadAmpBytesPerBit(int readAmpBytesPerBit)
readAmpBytesPerBit
- the bytes per-bitpublic int formatVersion()
setFormatVersion(int)
.public BlockBasedTableConfig setFormatVersion(int formatVersion)
We currently have five versions:
formatVersion
- integer representing the version to be used.public boolean enableIndexCompression()
setEnableIndexCompression(boolean)
.public BlockBasedTableConfig setEnableIndexCompression(boolean enableIndexCompression)
enableIndexCompression
- true to enable index compression,
false to disablepublic boolean blockAlign()
public BlockBasedTableConfig setBlockAlign(boolean blockAlign)
blockAlign
- true to align data blocks on the lesser of page size
and block size.public IndexShorteningMode indexShortening()
public BlockBasedTableConfig setIndexShortening(IndexShorteningMode indexShortening)
IndexShorteningMode
.indexShortening
- the index shortening mode.@Deprecated public long blockCacheSize()
@Deprecated public BlockBasedTableConfig setBlockCacheSize(long blockCacheSize)
setBlockCache(Cache)
.blockCacheSize
- block cache size in bytes@Deprecated public int cacheNumShardBits()
@Deprecated public BlockBasedTableConfig setCacheNumShardBits(int blockCacheNumShardBits)
setBlockCache(Cache)
.blockCacheNumShardBits
- the number of shard bits. The resulting
number of shards would be 2 ^ numShardBits. Any negative
number means use default settings."@Deprecated public long blockCacheCompressedSize()
@Deprecated public BlockBasedTableConfig setBlockCacheCompressedSize(long blockCacheCompressedSize)
setBlockCacheCompressed(Cache)
.blockCacheCompressedSize
- of compressed block cache.@Deprecated public int blockCacheCompressedNumShardBits()
@Deprecated public BlockBasedTableConfig setBlockCacheCompressedNumShardBits(int blockCacheCompressedNumShardBits)
setBlockCacheCompressed(Cache)
.blockCacheCompressedNumShardBits
- the number of shard bits. The resulting
number of shards would be 2 ^ numShardBits. Any negative
number means use default settings."@Deprecated public boolean hashIndexAllowCollision()
hashIndexAllowCollision()
== true.@Deprecated public BlockBasedTableConfig setHashIndexAllowCollision(boolean hashIndexAllowCollision)
hashIndexAllowCollision()
== true.hashIndexAllowCollision
- points out if hash collisions should be allowed.protected long newTableFactoryHandle()
TableFormatConfig
This function should only be called by Options.setTableFormatConfig(), which will create a c++ shared-pointer to the c++ TableFactory that associated with the Java TableFormatConfig.
newTableFactoryHandle
in class TableFormatConfig