选项字符串 和 选项映射

用户通过选项类将选项传递给rocksdb。除了在选项类中设置选项外,还有两种其他设置方法。

  1. 1.从选项文件中获取选项类。
  2. 2.通过调用从选项字符串获取它。
  3. 3.从字符串映射中获取它。

Option String 选项字符串

要从字符串中获取选项,请使用包含信息的字符串调用helper函数getColumnFamilyOptionsFromString() 或 getDBOptionsFromString() 。 还有一个特殊的getBlockBasedTableOptionsFromString() 和 getPlainTableOptionsFromString() 来获取表特定的选项。

选项字符串的示例如下:

  1. table_factory=PlainTable;prefix_extractor=rocksdb.CappedPrefix.13;comparator=leveldb.BytewiseComparator;compression_per_level=kBZip2Compression:kBZip2Compression:kBZip2Compression:kNoCompression:kZlibCompression:kBZip2Compression:kSnappyCompression;max_bytes_for_level_base=986;bloom_locality=8016;target_file_size_base=4294976376;memtable_huge_page_size=2557;max_successive_merges=5497;max_sequential_skip_in_iterations=4294971408;arena_block_size=1893;target_file_size_multiplier=35;min_write_buffer_number_to_merge=9;max_write_buffer_number=84;write_buffer_size=1653;max_compaction_bytes=64;max_bytes_for_level_multiplier=60;memtable_factory=SkipListFactory;compression=kNoCompression;bottommost_compression=kDisableCompressionOption;min_partial_merge_operands=7576;level0_stop_writes_trigger=33;num_levels=99;level0_slowdown_writes_trigger=22;level0_file_num_compaction_trigger=14;compaction_filter=urxcqstuwnCompactionFilter;soft_rate_limit=530.615385;soft_pending_compaction_bytes_limit=0;max_write_buffer_number_to_maintain=84;verify_checksums_in_compaction=false;merge_operator=aabcxehazrMergeOperator;memtable_prefix_bloom_size_ratio=0.4642;memtable_insert_with_hint_prefix_extractor=rocksdb.CappedPrefix.13;paranoid_file_checks=true;force_consistency_checks=true;inplace_update_num_locks=7429;optimize_filters_for_hits=false;level_compaction_dynamic_level_bytes=false;inplace_update_support=false;compaction_style=kCompactionStyleFIFO;purge_redundant_kvs_while_flush=true;hard_pending_compaction_bytes_limit=0;disable_auto_compactions=false;report_bg_io_stats=true;compaction_filter_factory=mpudlojcujCompactionFilterFactory;

每个选项将作为:分离。查找支持选项列表,检查下一节 ( https://github.com/facebook/rocksdb/wiki/Option-String-and-Option-Map#find-the-supported-options-in-option-string-and-option-map )

Options map 选项映射

同样,用户可以通过调用helper函数getColumnFamilyOptionsFromMap()、getDBOptionsFromMap()、getBlockBasedTableOptionsFromMap() 或 getPlainTableOptionsFromMap() 从字符串映射中获取选项类。 传入字符串到字符串的映射,该映射从选项名称和选项值映射为纯文本字符串。选项的字符串映射示例如下:

  1. std::unordered_map<std::string, std::string> cf_options_map = {
  2. {"write_buffer_size", "1"},
  3. {"max_write_buffer_number", "2"},
  4. {"min_write_buffer_number_to_merge", "3"},
  5. {"max_write_buffer_number_to_maintain", "99"},
  6. {"compression", "kSnappyCompression"},
  7. {"compression_per_level",
  8. "kNoCompression:"
  9. "kSnappyCompression:"
  10. "kZlibCompression:"
  11. "kBZip2Compression:"
  12. "kLZ4Compression:"
  13. "kLZ4HCCompression:"
  14. "kXpressCompression:"
  15. "kZSTD:"
  16. "kZSTDNotFinalCompression"},
  17. {"bottommost_compression", "kLZ4Compression"},
  18. {"compression_opts", "4:5:6:7"},
  19. {"num_levels", "8"},
  20. {"level0_file_num_compaction_trigger", "8"},
  21. {"level0_slowdown_writes_trigger", "9"},
  22. {"level0_stop_writes_trigger", "10"},
  23. {"target_file_size_base", "12"},
  24. {"target_file_size_multiplier", "13"},
  25. {"max_bytes_for_level_base", "14"},
  26. {"level_compaction_dynamic_level_bytes", "true"},
  27. {"max_bytes_for_level_multiplier", "15.0"},
  28. {"max_bytes_for_level_multiplier_additional", "16:17:18"},
  29. {"max_compaction_bytes", "21"},
  30. {"soft_rate_limit", "1.1"},
  31. {"hard_rate_limit", "2.1"},
  32. {"hard_pending_compaction_bytes_limit", "211"},
  33. {"arena_block_size", "22"},
  34. {"disable_auto_compactions", "true"},
  35. {"compaction_style", "kCompactionStyleLevel"},
  36. {"verify_checksums_in_compaction", "false"},
  37. {"compaction_options_fifo", "23"},
  38. {"max_sequential_skip_in_iterations", "24"},
  39. {"inplace_update_support", "true"},
  40. {"report_bg_io_stats", "true"},
  41. {"compaction_measure_io_stats", "false"},
  42. {"inplace_update_num_locks", "25"},
  43. {"memtable_prefix_bloom_size_ratio", "0.26"},
  44. {"memtable_huge_page_size", "28"},
  45. {"bloom_locality", "29"},
  46. {"max_successive_merges", "30"},
  47. {"min_partial_merge_operands", "31"},
  48. {"prefix_extractor", "fixed:31"},
  49. {"optimize_filters_for_hits", "true"},
  50. };

要查找支持的选项列表,请检查下面的部分 ( https://github.com/facebook/rocksdb/wiki/Option-String-and-Option-Map#find-the-supported-options-in-option-string-and-option-map )

在选项字符串和选项映射中查找支持的选项

在选项字符串和选项映射中,选项名映射目标类、DBOptions、ColumnFamilyOptions、BlockBasedTableOptions或PlainTableOptions中的变量名。 对于DBOptions和ColumnFamilyOptions,您可以在源代码options.h的源文件options.h中找到它们的列表以及它们在两个类中的描述。 对于其他两个选项,可以在文件 table.h中找到它们

注意,虽然option类中的大多数选项都在option字符串中受支持,但也有例外。 您可以在发行版源代码的util/options_helper.h源文件中找到变量db_options_type_info、cf_options_type_info和block_based_table_type_info中支持的选项列表。

如果该选项是一个回调类,例如比较器、压缩过滤器和合并操作符,通常需要将回调类的指针作为值传递给对象。

有例外。一些特殊的回调类由选项字符串或map支持:

  • Prefix extractor (option name prefix_extractor), whose value can be passed as rocksdb.FixedPrefix. or rocksdb.CappedPrefix..
  • Filter policy (option name filter_policy), whose value can be passed as bloomfilter::
  • Table factory (option name table_factory). The values will be either BlockBasedTable or PlainTable. Other than that, two special option string name is used to provide the options, block_based_table_factory or plain_table_factory. The value of the options will be the option string of BlockBasedTableOptions or PlainTableOptions.
  • Memtable Factory (option name memtable_factory). It can take value of skip_list, prefix_hash, hash_linkedlist, vector or cuckoo.