金城武 科幻片:初试Tokyo Cabinet,Tokyo Tyrant(二) | 等待戈多

来源:百度文库 编辑:九乡新闻网 时间:2024/07/07 11:44:07

Tokyo Tyrant数据库已经实现了Tokyo Cabinet的抽象API,所以可以在启动的时候指定数据库的配置类型。
命令通过下面的格式来使用,
ttserver [-host name] [-port num] [-thnum num] [-tout num] [-dmn] [-pidpath] [-log path] [-ld|-le] [-ulog path] [-ulim num] [-uas] [-sidnum][-mhost name] [-mport num] [-rts path] [-ext path] [-extpc name period][-mask expr] [dbname]
参数说明
* -host name : 指明服务器的hostname或者ip地址。默认服务器的所有地址都会被绑定。
* -port num : 指定服务启动的端口. 默认1978
* -thnum num : 指定服务工作的线程数。默认8.
* -tout num : 指定每个会话的超时时间。默认永不超时。
* -dmn : 以守护进程方式运行。
* -pid path : 输出进程IP到指定的文件。
* -log path : 输出日志信息到指定文件。
* -ld : 日志中记录debug信息。
* -le :日志中只记录错误信息。
* -ulog path : 指定存放更新日志,用来备份恢复数据库,主从库之间的同步。
* -ulim num : 指定每个更新日志文件的大小限制.
* -sid num : 指定服务的ID号。主从复制的时候通过不同的ID号来识别。
* -mhost name : 指定主从复制模式下的主服务器的IP或域名。
* -mport num : 指定主从模式下主服务器的端口号.
* -rts path : 指定用于主从复制的时间戳存放文件.
dbname 制定数据库名,如果省略,则被视作内存hash数据库。
其他参数请参考 tt参数配置

数据库类型
下面我们再来看下数据库类型的详细配置。
数据库名的命名方式被Tokyo Cabinet的抽象API指定。
如果数据库名为”*”,表示内存hash数据库。
如果数据库名为”+”表示内存tree数据库。
如果数据库名为”.tch”,则数据库为hash数据库。
如果数据库名的后缀为”.tcb”,数据库将为B+ tree数据库。
如果数据库名的后缀为”.tcf”。则数据库将为fixed-length数据库。
如果数据库名的后缀为”.tct”,则数据将为一个table数据库(有表的概念),很多人都是看上了tt的这一点,希望还有一定的sql功能

数据库的调整参数通过数据库名的延伸来指定,通过”#”分开,每个参数通过一个参数名和值来指定,用”=”隔开。

    (1)内存hash数据库支持”bnum”, “capnum”, 和 “capsiz”
    (2)内存tree数据库支持”capnum” 和 “capsiz”

    capnum指定记录的最大容量
    capsiz指定最大的内存使用量(在内存数据库中),记录通过存储的顺序移除。
    bnum 指定bucket存储桶的数量。如果指定的数目不大于0,将会使用默认的数值131071.推荐数量应该在所有需要存储的记录总数的0.4-4倍

    (3)hash数据库支持”mode”, “bnum”, “apow”, “fpow”, “opts”, “rcnum”, 和 “xmsiz”.

    rcnum指定最大的缓存记录数。如果它不大于零,那么缓存记录不可用。默认不可用。
    xmsiz 指定外部内存的大小。如果不大于0,内存不可用。默认是67108864,即64M。
    apow 跟一个key关联的记录数,2的N次方表示. 如果不指定,默认2^4=16.
    fpow specifies the maximum number of elements of the free block pool by power of 2. 默认2^10=1024.
    opts 指定选项,位或:`HDBTLARGE’ 指定数据库的大小通过使用64位数组桶能够超过2G。
    `HDBTDEFLATE’ 指定每个记录被Deflate encoding压缩。
    `HDBTBZIP’ 指定每个记录被BZIP2 encoding压缩
    `HDBTTCBS’指定每个记录被 TCBS encoding压缩.

    (4)B+ tree数据库支持”mode”, “lmemb”, “nmemb”, “bnum”, “apow”, “fpow”, “opts”, “lcnum”, “ncnum”, 和 “xmsiz”.
    (5)Fixed-length 数据库 支持 “mode”, “width”, and “limsiz”.
    (6)Table 数据库支持 “mode”, “bnum”, “apow”, “fpow”, “opts”, “rcnum”, “lcnum”, “ncnum”, “xmsiz”, 和 “idx”

    “idx”指定表的索引。
    “mode”可以包含 “w” 写, “r” 读, “c” 创建, “t” 截断,”e” 无锁,和”f” 非阻塞锁。默认的的mod为”wc”。

优化性能
如果使用hash数据库我们可以指定#bnum=xxx来提高性能。xxx大于或等我我们的记录总数。
如果使用B+ tree数据库我们可以通过指定”#lcnum=xxx#bnum=yyy” 来提高性能.第一个参数指定被缓存的最大叶子节点数,受内存容量限制,第二个参数指定桶的数量,它应该大于总记录数的1/128.