本节分析options.h文件。
压缩类型
//数据库内容存储在一组块中,每个块包含一个键、值对序列。
//在存储到文件中之前,可以压缩每个块。
//下面的枚举描述用于压缩块的压缩方法(如果有)。
enum CompressionType {
kNoCompression = 0x0,
kSnappyCompression = 0x1
};
options
struct LEVELDB_EXPORT Options {
//比较器用于定义表中键的顺序。
//默认值:使用字典式字节顺序的比较器
//要求:客户机必须确保这里提供的比较器具有相同的名称,并且ORDERS键*与以前在同一数据库上打开调用时提供的比较器完全相同。
const Comparator* comparator;
// If true, the database will be created if it is missing.
//为真时,当数据库丢失时创建数据库对象
// 默认为false
bool create_if_missing;
// 为真时, 如果数据库存在则会引发错误
// 默认: false
bool error_if_exists;
// 为真时,则实现对正在处理的数据进行积极的检查,如果检测到任何错误,则将提前停止
// 这可能导致一些不可预见的结果:例如,一个数据库条目的损坏可能导致大量条目无法读取或整个数据库无法打开
// 默认值:false
bool paranoid_checks;
//用一个特殊对象和环境变量进行交互.
// 默认值: Env::Default()
Env* env;
// 如果数据库生成的任何内部进度/错误信息非空,则将其写入信息日志;
// 如果信息日志为空,则将写入与数据库内容存储在同一目录中的文件。
// 默认值:空
Logger* info_log;
// 该参数会影响性能
// 写缓冲大小
// 默认值: 4MB
size_t write_buffer_size;
// 数据库可以使用的打开的文件数;
// 如果数据库有较大的工作集,则需要增加此值
// 默认值: 1000
int max_open_files;
// 控制块 (用户数据存储在一组块中,块是从磁盘读取的单位).
// 不为空, 则对块使用指定的缓存.
// 为空, leveldb 将自动创建并使用8MB的内部缓存.
// 默认值: nullptr
Cache* block_cache;
// 每个块压缩的用户数据的近似大小。特别注意的是,次数指定的块大小对应于未压缩的数据。
// 如果启用压缩,从磁盘读取的单元的实际大小可能会更小。此参数可以动态更改。
// 默认值: 4K
size_t block_size;
// 键的增量编码的重新启动点之间的键数。此参数可以动态更改。大多数客户机应该只保留此参数。
// 默认值: 16
int block_restart_interval;
// 存储的文件大小
// 默认值: 2MB
size_t max_file_size;
// 使用指定的压缩算法压缩块。此参数可以动态更改。
//默认值:ksnappycompression,它提供轻量但快速的压缩。
//在Intel(R)Core(TM)2 2.4GHz上ksnapycompression的典型速度:
//~200-500MB/s压缩
//~400-800MB/s解压
//请注意,这些速度明显快于大多数持久存储速度,因此通常不值得切换到knocompression。
//即使输入数据不可压缩,ksnappycompression实现也会有效地检测到这一点并切换到未压缩模式。
CompressionType compression;
// 为真时,则打开数据库时附加到现有清单和日志文件. 这可以显著加快打开速度.
// 默认值:目前为false,以后可能为真.
bool reuse_logs;
// 当此值部位空时,用指定的筛选策略来减少磁盘读取。
// 许多程序此处都会传递布隆过滤器
const FilterPolicy* filter_policy;
Options();
};
学习是一种慰藉,编程是一种情怀,技术提升永不可辜负!
每天进步一点点!
本文详细解析了LevelDB数据库的配置选项,包括压缩类型、比较器、写缓冲区大小等关键参数,介绍了它们如何影响数据库性能及可靠性。
1154

被折叠的 条评论
为什么被折叠?



