中山网站建设文化策划书,建设通小程序,wordpress模板_,域名解析到本地服务器SSDB 的配置非常简单, 附带的 ssdb.conf 你不用修改便可以使用. 如果你要高度定制, 还是需要修改一些配置的. 下面做介绍.
SSDB 的配置文件是一种层级 key-value 的静态配置文件, 通过一个 TAB 缩进来表示层级关系. 以 # 号开始的行是注释. 标准的配置文件如下:
# ssdb-serve…SSDB 的配置非常简单, 附带的 ssdb.conf 你不用修改便可以使用. 如果你要高度定制, 还是需要修改一些配置的. 下面做介绍.
SSDB 的配置文件是一种层级 key-value 的静态配置文件, 通过一个 TAB 缩进来表示层级关系. 以 # 号开始的行是注释. 标准的配置文件如下:
# ssdb-server config# relative to path of this file, must exist
work_dir ./var
pidfile ./var/ssdb.pidserver:ip: 127.0.0.1port: 8888replication:slaveof:# sync|mirror, default is sync#type: sync#ip: 127.0.0.1#port: 8889logger:level: infooutput: log.txtrotate:size: 1000000000leveldb:# in MBcache_size: 500# in KBblock_size: 32# in MBwrite_buffer_size: 64# in MBcompaction_speed: 100# yes|nocompression: yes
work_dir: ssdb-server 的工作目录, 启动后, 会在这个目录下生成 data 和 meta 两个目录, 用来保存 LevelDB 的数据库文件. 这个目录是相对于 ssdb.conf 的相对路径, 也可以指定绝对路径.
server: ip 和 port 指定了服务器要监听的 IP 和端口号. 如果 ip 是 0.0.0.0, 则表示绑定所有的 IP. 基于安全考虑, 可以将 ip 设置为 127.0.0.1, 这样, 只有本机可以访问了. 如果要做更严格的更多的网络安全限制, 就需要依赖操作系统的 iptables.
replication: 用于指定主从同步复制. slaveof.ip, slaveof.port 表示, 本台 SSDB 服务器将从这个目标机上同步数据(也即这个配置文件对应的服务器是 slave). 你可以参考 ssdb_slave.conf 的配制.
logger: 配置日志记录. level 是日志的级别, 可以是 trace|debug|info|error. output 是日志文件的名字, SSDB 支持日志轮转, 在日志文件达到一定大小后, 将 log.txt 改名, 然后创建一个新的 log.txt.
leveldb: 配置 LevelDB 的参数. 你一般想要修改的是 cache_size 参数, 用于指定缓存大小. 适当的缓存可以提高读性能, 但是过大的缓存会影响写性能.
另外注意cache_size、和write_buffer_size的配置的阈值以及占用内存的计算
一个 ssdb-server 实例占用的内存瞬时(有可能, 而且即使达到, 也只是持续短时间)最高达到(MB):
cache_size write_buffer_size * 66 32
这是对于压缩选项没有开启的情况, 如果 compression: yes, 计算公式是:
cache_size 10 * write_buffer_size * 66 32
你可以调整配置参数, 限制 ssdb-server 的内存占用.
LevelDB
Log文件 当应用写入一条Key:Value记录的时候LevelDb会先往log文件里写入成功后将记录插进Memtable中这样基本就算完成了写入操作Log文件在系统中的作用主要是用于系统崩溃恢复而不丢失数据假如没有Log文件因为写入的记录刚开始是保存在内存中的此时如果系统崩溃内存中的数据还没有来得及Dump到磁盘所以会丢失数据Redis就存在这个问题。 因为一次写入操作只涉及一次磁盘顺序写和一次内存写入所以这是为何说LevelDb写入速度极快的主要原因。 LevelDB首先将每条写入数据序列化为一个Record单个Log文件中包含多个Record。同时Log文件又划分为固定大小的Block单位并保证Block的开始位置一定是一个新的Record。这种安排使得发生数据错误时最多只需丢弃一个Block大小的内容。显而易见地不同的Record可能共存于一个Block同时一个Record也可能横跨几个Block。 Log文件划分为固定长度的Block由连续的32K为单位的物理Block构成的每次读取的单位是以一个Block作为基本单位每个Block中包含多个RecordRecord的前56个位为Record头包括32位checksum用做校验16位存储Record实际内容数据的长度8位的Type可以是Full、First、Middle或Last中的一种表示该Record是否完整的在当前的Block中如果Type不是Full则通过Type指明其前后的Block中是否有当前Record的前驱后继。 levelDb中的Cache 读取操作如果没有在内存的memtable中找到记录要多次进行磁盘访问操作。假设最优情况即第一次就在level 0中最新的文件中找到了这个key那么也需要读取2次磁盘一次是将SSTable的文件中的index部分读入内存这样根据这个index可以确定key是在哪个block中存储第二次是读入这个block的内容然后在内存中查找key对应的value。 levelDb中引入了两个不同的Cache Table Cache 和 Block Cache。其中Block Cache是配置可选的即在配置文件中指定是否打开这个功能。 compression压缩操作 为了加快读取速度levelDb采取了compaction的方式来对已有的记录进行整理压缩通过这种方式来删除掉一些不再有效的KV数据减小数据规模减少文件数量等。 数据压缩是LevelDB中重要的部分即上文提到的归并。冷数据会随着Compaction不断的下移同时过期的数据也会在合并过程中被删除。 LevelDB的压缩操作由单独的后台线程负责。这里的Compaction包括两个部分Memtable向Level 0 SST文件的Compaction以及SST文件向下层的Compaction。 levelDb的compaction机制和过程与Bigtable所讲述的是基本一致的Bigtable中讲到三种类型的compaction: minor major和full。所谓minor Compaction就是把memtable中的数据导出到SSTable文件中major compaction就是合并不同层级的SSTable文件而full compaction就是将所有SSTable进行合并。 LevelDb包含其中两种minor和major。
转载http://www.ideawu.net/blog/archives/733.html
转载https://www.cnblogs.com/chenny7/p/4569837.html
levelDB原理https://blog.csdn.net/qq_26499321/article/details/78063856#commentBox