mirror of
https://github.com/matrix-construct/construct
synced 2024-11-25 16:22:35 +01:00
ircd::db: Add granular compaction size related to column descriptor. (#13)
This commit is contained in:
parent
30b2f8bfee
commit
f073657b5a
2 changed files with 53 additions and 7 deletions
|
@ -89,4 +89,30 @@ struct ircd::db::descriptor
|
|||
|
||||
/// User given compaction callback surface.
|
||||
db::compactor compactor {};
|
||||
|
||||
/// Compaction related parameters. see: rocksdb/advanced_options.h
|
||||
struct
|
||||
{
|
||||
size_t base {64_MiB}; // rocksdb default
|
||||
size_t multiplier {1}; // rocksdb default
|
||||
}
|
||||
target_file_size;
|
||||
|
||||
/// Compaction related parameters. see: rocksdb/advanced_options.h
|
||||
struct max_bytes_for_level
|
||||
{
|
||||
size_t base {0};
|
||||
size_t multiplier {1};
|
||||
}
|
||||
max_bytes_for_level[8]
|
||||
{
|
||||
{ 256_MiB, 10L }, // max_bytes_for_level_base
|
||||
{ 0L, 1L }, // max_bytes_for_level[0]
|
||||
{ 0L, 1L }, // max_bytes_for_level[1]
|
||||
{ 0L, 1L }, // max_bytes_for_level[2]
|
||||
{ 0L, 1L }, // max_bytes_for_level[3]
|
||||
{ 0L, 1L }, // max_bytes_for_level[4]
|
||||
{ 0L, 1L }, // max_bytes_for_level[5]
|
||||
{ 0L, 1L }, // max_bytes_for_level[6]
|
||||
};
|
||||
};
|
||||
|
|
34
ircd/db.cc
34
ircd/db.cc
|
@ -1839,19 +1839,39 @@ ircd::db::database::column::column(database &d,
|
|||
//this->options.bottommost_compression_opts = this->options.compression_opts;
|
||||
|
||||
//TODO: descriptor / conf
|
||||
this->options.disable_auto_compactions = false;
|
||||
this->options.level_compaction_dynamic_level_bytes = false;
|
||||
|
||||
this->options.num_levels = 7;
|
||||
this->options.write_buffer_size = 4_MiB;
|
||||
this->options.max_write_buffer_number = 8;
|
||||
this->options.min_write_buffer_number_to_merge = 4;
|
||||
this->options.max_write_buffer_number_to_maintain = 0;
|
||||
|
||||
this->options.num_levels = 7;
|
||||
this->options.level0_file_num_compaction_trigger = 2;
|
||||
this->options.target_file_size_base = 48_MiB;
|
||||
this->options.target_file_size_multiplier = 16;
|
||||
this->options.max_bytes_for_level_base = 1_MiB;
|
||||
this->options.max_bytes_for_level_multiplier = 2;
|
||||
this->options.disable_auto_compactions = false;
|
||||
this->options.level_compaction_dynamic_level_bytes = false;
|
||||
|
||||
this->options.target_file_size_base = this->descriptor->target_file_size.base;
|
||||
this->options.target_file_size_multiplier = this->descriptor->target_file_size.multiplier;
|
||||
|
||||
this->options.max_bytes_for_level_base = this->descriptor->max_bytes_for_level[0].base;
|
||||
this->options.max_bytes_for_level_multiplier = this->descriptor->max_bytes_for_level[0].multiplier;
|
||||
this->options.max_bytes_for_level_multiplier_additional = std::vector<int>(this->options.num_levels, 1);
|
||||
{
|
||||
auto &dst(this->options.max_bytes_for_level_multiplier_additional);
|
||||
const auto &src(this->descriptor->max_bytes_for_level);
|
||||
const size_t src_size(std::distance(begin(src) + 1, std::end(src)));
|
||||
assert(src_size >= 1);
|
||||
const auto end
|
||||
{
|
||||
begin(src) + 1 + std::min(dst.size(), src_size)
|
||||
};
|
||||
|
||||
std::transform(begin(src) + 1, end, begin(dst), []
|
||||
(const auto &mbfl)
|
||||
{
|
||||
return mbfl.multiplier;
|
||||
});
|
||||
}
|
||||
|
||||
//
|
||||
// Table options
|
||||
|
|
Loading…
Reference in a new issue