A library that provides an embeddable, persistent key-value store for fast storage.
GPL-2.0 License
Published by ltamasi over 5 years ago
Put
s covered by range tombstones to reappear. Note Put
s may exist even if the user only ever called Merge()
due to an internal conversion during compaction to the bottommost level.Published by gfosco over 5 years ago
Published by gfosco over 5 years ago
Published by gfosco over 5 years ago
cache_index_and_filter_blocks == true
, we now store dictionary data used for decompression in the block cache for better control over memory usage. For users of ZSTD v1.1.4+ who compile with -DZSTD_STATIC_LINKING_ONLY, this includes a digested dictionary, which is used to increase decompression speed.GetStatsHistory
API to retrieve these snapshots.SstFileWriter
will now use dictionary compression if it is configured in the file writer's CompressionOptions
.TableProperties::num_entries
and TableProperties::num_deletions
now also account for number of range tombstones.number.block.not_compressed
now also counts blocks not compressed due to poor compression ratio.CompactionOptionsFIFO
. The option has been deprecated and ttl in ColumnFamilyOptions
is used instead.NotFound
point lookup result when querying the endpoint of a file that has been extended by a range tombstone.Published by gfosco over 5 years ago
JemallocNodumpAllocator
memory allocator. When being use, block cache will be excluded from core dump.PerfContextByLevel
as part of PerfContext
which allows storing perf context at each level. Also replaced __thread
with thread_local
keyword for perf_context. Added per-level perf context for bloom filter and Get
query.atomic_flush
. If true, RocksDB supports flushing multiple column families and atomically committing the result to MANIFEST. Useful when WAL is disabled.num_deletions
and num_merge_operands
members to TableProperties
.MemoryAllocator
, which lets the user specify custom memory allocator for block based table.DeleteRange
to prevent read performance degradation. The feature is no longer marked as experimental.DBOptions::use_direct_reads
now affects reads issued by BackupEngine
on the database's SSTs.NO_ITERATORS
is divided into two counters NO_ITERATOR_CREATED
and NO_ITERATOR_DELETE
. Both of them are only increasing now, just as other counters.NO_FILE_CLOSES
ticker statistic, which was always zero previously.Published by gfosco almost 6 years ago
OnTableFileCreated
will now be called for empty files generated during compaction. In that case, TableFileCreationInfo::file_path
will be "(nil)" and TableFileCreationInfo::file_size
will be zero.FlushOptions::allow_write_stall
, which controls whether Flush calls start working immediately, even if it causes user writes to stall, or will wait until flush can be performed without causing write stall (similar to CompactRangeOptions::allow_write_stall
). Note that the default value is false, meaning we add delay to Flush calls until stalling can be avoided when possible. This is behavior change compared to previous RocksDB versions, where Flush calls didn't check if they might cause stall or not.Published by gfosco almost 6 years ago
CompactFiles
run with CompactionOptions::compression == CompressionType::kDisableCompressionOption
. Now that setting causes the compression type to be chosen according to the column family-wide compression options.OnTableFileCreated
will now be called for empty files generated during compaction. In that case, TableFileCreationInfo::file_path
will be "(nil)" and TableFileCreationInfo::file_size
will be zero.
Add FlushOptions::allow_write_stall
, which controls whether Flush calls start working immediately, even if it causes user writes to stall, or will wait until flush can be performed without causing write stall (similar to CompactRangeOptions::allow_write_stall
). Note that the default value is false, meaning we add delay to Flush calls until stalling can be avoided when possible. This is behavior change compared to previous RocksDB versions, where Flush calls didn't check if they might cause stall or not.
The merge operands are passed to MergeOperator::ShouldMerge
in the reversed order relative to how they were merged (passed to FullMerge or FullMergeV2) for performance reasons
GetAllKeyVersions() to take an extra argument of max_num_ikeys
.
Published by gfosco about 6 years ago
MergeOperator::ShouldMerge
in the reversed order relative to how they were merged (passed to FullMerge or FullMergeV2) for performance reasonsbottommost_compression_opts
. To keep backward compatible, a new boolean enabled
is added to CompressionOptions. For compression_opts, it will be always used no matter what value of enabled
is. For bottommost_compression_opts, it will only be used when user set enabled=true
, otherwise, compression_opts will be used for bottommost_compression as default.Statistics
objects created via CreateDBStatistics()
, the format of the string returned by its ToString()
method has changed.ColumnFamilyOptions::ttl
via SetOptions()
.bytes_max_delete_chunk
to 0 in NewSstFileManager() as it doesn't work well with checkpoints.Published by ajkr about 6 years ago
MergeOperator::ShouldMerge
in the reversed order relative to how they were merged (passed to FullMerge or FullMergeV2) for performance reasonsPublished by yiwu-arbug about 6 years ago
MergeOperator::ShouldMerge
in the reversed order relative to how they were merged (passed to FullMerge or FullMergeV2) for performance reasonsPublished by gfosco over 6 years ago
bytes_max_delete_chunk
to 0 in NewSstFileManager() as it doesn't work well with checkpoints.DBOptions::use_direct_io_for_flush_and_compaction
only applies to background writes, and DBOptions::use_direct_reads
applies to both user reads and background reads. This conforms with Linux's open(2)
manpage, which advises against simultaneously reading a file in buffered and direct modes, due to possibly undefined behavior and degraded performance.Env::LowerThreadPoolCPUPriority(Priority)
method, which lowers the CPU priority of background (esp. compaction) threads to minimize interference with foreground tasks.Env::SetBackgroundThreads()
, compactions to the bottom level will be delegated to that thread pool.BackupableDBOptions::max_valid_backups_to_open
to not delete backup files when refcount cannot be accurately determined.BlockBasedTableConfig.setBlockCache
to allow sharing a block cache across DB instances.Published by gfosco over 6 years ago
Published by gfosco over 6 years ago
Published by ajkr over 6 years ago
Published by gfosco over 6 years ago
CompressionOptions::kDefaultCompressionLevel
, which is a generic way to tell RocksDB to use the compression library's default level. It is now the default value for CompressionOptions::level
. Previously the level defaulted to -1, which gave poor compression ratios in ZSTD.Published by gfosco over 6 years ago
Env::LowerThreadPoolCPUPriority(Priority)
method, which lowers the CPU priority of background (esp. compaction) threads to minimize interference with foreground tasks.ignore_unknown_options
argument will only be effective if the option file shows it is generated using a higher version of RocksDB than the current version.CompactRange()
when the range specified by the user does not overlap unflushed memtables.ColumnFamilyOptions::max_subcompactions
is set greater than one, we now parallelize large manual level-based compactions.BlockBasedTableConfig.setBlockCache
to allow sharing a block cache across DB instances.Published by gfosco over 6 years ago
BlockBasedTableConfig.setBlockCache
to allow sharing a block cache across DB instances.ignore_unknown_options
argument will only be effective if the option file shows it is generated using a higher version of RocksDB than the current version.CompactRange()
when the range specified by the user does not overlap unflushed memtables.include_end
option to make the range end exclusive when include_end == false
in DeleteFilesInRange()
.CompactRangeOptions::allow_write_stall
, which makes CompactRange
start working immediately, even if it causes user writes to stall. The default value is false, meaning we add delay to CompactRange
calls until stalling can be avoided when possible. Note this delay is not present in previous RocksDB versions.Status::InvalidArgument
; previously, it returned Status::IOError
.DeleteFilesInRanges()
to delete files in multiple ranges at once for better performance.DisableFileDeletions()
followed by GetSortedWalFiles()
to not return obsolete WAL files that PurgeObsoleteFiles()
is going to delete.Published by gfosco over 6 years ago
BlockBasedTableConfig.setBlockCache
to allow sharing a block cache across DB instances.ignore_unknown_options
argument will only be effective if the option file shows it is generated using a higher version of RocksDB than the current version.CompactRange()
when the range specified by the user does not overlap unflushed memtables.include_end
option to make the range end exclusive when include_end == false
in DeleteFilesInRange()
.CompactRangeOptions::allow_write_stall
, which makes CompactRange
start working immediately, even if it causes user writes to stall. The default value is false, meaning we add delay to CompactRange
calls until stalling can be avoided when possible. Note this delay is not present in previous RocksDB versions.Status::InvalidArgument
; previously, it returned Status::IOError
.DeleteFilesInRanges()
to delete files in multiple ranges at once for better performance.DisableFileDeletions()
followed by GetSortedWalFiles()
to not return obsolete WAL files that PurgeObsoleteFiles()
is going to delete.Published by miasantreble over 6 years ago
autoTune
and getBytesPerSecond()
to RocksJava RateLimiterPublished by miasantreble over 6 years ago
autoTune
and getBytesPerSecond()
to RocksJava RateLimiter