`
wangzl2222
  • 浏览: 150892 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

TT rcnum 和xmsiz

阅读更多

今天想说一下对TT来说很重要的两个参数,rcnumxmsiz ,从而说一下TT的缓存机制。

TT有两个方面的缓存

  • 一是由xmsiz和bnum(buckets number)共同决定的mmap方式的文件缓存
  • 二是由rcnum(records cache number)决定的针对记录的缓存

内存映射

第一个很简单,就是将文件开头的一部分做mmap映射,这样在访问bucket索引和某些数据的时候就会很快(因为这时候操作是先在内存进行,一定条件下同步一下,io操作少了很多。),而既然这个映射的大小是由xmsiz和bnum这两个参数共同决定的,那么他们是如何共同影响的呢?

在open数据一个数据库实例的时候,会先查一下包括所有bucket的文件部分有多大(这里包括文件头及bucket区),再看一下xmsiz有多大,取二者之中大的一个,也就是说,所有的bucket索引肯定是会被完全映射到的。

而因为开始的时候文件可能不会太大,比如你设置了一个1G的xmsiz值,而文件打开时只有0.5M,那么最开始mmap的大小当然只会有 0.5M,当然这个映射大小会随着文件大小的增大而增大,在增大到超过xmsiz的时候就不会再长了。

这里还有一个小细节,如果现在xmsiz还有50个字节就达到定义值了,而文件又向后扩展了100字节,那这时候是不会映射一半的,他会选择不映射,所以xmsiz只是设置了一个最大值,通常是一个不太可能对齐的值。:)

这个内存映射的缓存,在TCHDB结构里是一个名叫map的指针。

有朋友聊到当数据文件大于xmsiz后效率下降严重的问题,我想看了上面就不用再回答了吧。呵呵。

记录缓存

下面说一下另一个参数,rcnum。

首先必须申明的是这个参数指定的机制和上面的机制完全不同。

rcnum参数控制的是缓存在内存中的记录条数,他的存储形式是TC的TCMDB表,可以理解为一个内存key-value系统,完全等价于MC,这个参数设置了其最大缓存条数,像我们在做get操作的时候,全部都是先从这个tcmdb里取数据,取不到再通过的tchdb来取。所以这个参数完全只是挡在前面的一层缓存层。

至于数据超出这个数据之后,哪些被缓存,哪些被踢掉,作者文档里写了是按LRU(Least recently used)原则设计的算法实现的,不好意思,这块我还没看。就不多说了。

这个记录缓存,在TCHDB结构里是一个名叫recc(records cache)的指针。

闲话

前面看了很多其它方面的东西,比如线程模式等,而应用层的东西几乎是完全没有关心,比如上面这几个参数的具体作用,其实这才是具体应用中应该注意的东西。感谢codytan同学与我进行的讨论,让我有机会去了解这方面的内容。同时欢迎各位有实际应用经验的同学讨论实际遇到的性能及稳定性方面的问题。

 

from:http://blog.csdn.net/zzw945/archive/2010/04/03/5448446.aspx

分享到:
评论

相关推荐

    tt.rar_TT计算器_TT软件代码_tt.r_计算器中TT

    如果"tt"是一个文件夹,那么它可能包含了所有与计算器应用相关的源代码和其他资源。如果"tt"是一个源代码文件,那么它可能是项目的主入口点,比如C++的"main.cpp"或Python的"__init__.py"。 综合这些信息,我们可以...

    Type tutor(TT) 经典打字软件TT

    "Type Tutor(TT)"以其独特的教学模式和强大的功能,赢得了"打字高手之必备"的美誉。它不仅帮助初学者快速掌握正确的打字姿势和技巧,还为有经验的用户提供了提高打字速度和准确性的平台。其核心在于科学的教学体系,...

    tt打字+dosbox

    tt打字软件,附加dosbox;因为tt是很老的一个dos程序了,在windows下不能直接打开,需要安装dosbox。安装完dosbox之后,打开,并执行一下命令: 》mount c E:\tt 其中E:\tt是存放了tt.exe文件的目录。该命令是指将E:...

    手速练习软件TT(带DOSBox)

    【标题】"手速练习软件TT(带DOSBox)"是一个经典的打字训练程序,它专为提升用户的手指速度和打字准确性而设计。在信息化时代,快速准确的打字技巧是工作和学习中不可或缺的一项技能。TT软件以其独特的教学方式和丰富...

    TT网页协议

    "TT网页协议"是一种专为特定网页交互设计的通信...为了更好地理解并使用这个协议,我们需要深入研究这些文件,尤其是`TT.cds`、`Adam.exe`和`解决方案.txt`,它们可能分别提供了协议的核心规则、主要执行体和部署指南。

    DOS系统下TT打字游戏软件

    总的来说,DOS系统下的TT打字游戏软件是一种结合了教育与娱乐的经典应用,它反映了早期个人电脑时代的特色,并且在现代操作系统中仍能运行,证明了其持久的价值和魅力。对于想要回顾历史或是提高打字技巧的人来说,...

    Sketch Up 8导出背景透明图片插件 tt_export,内含TT_Lib2

    首先,从压缩包中提取tt_export.rb文件和TT_Lib2文件夹。这两个文件是插件的关键组成部分,tt_export.rb是插件的主要脚本,而TT_Lib2包含了插件运行所需的库文件。接下来,将这两个文件复制到SketchUp 8的安装目录下...

    TT TT TT TT TT TT TT TT TT

    TT

    tt.zip_TT_tt名字代码

    【标题】"tt.zip_TT_tt名字代码" 涉及的是一份关于统计源代码信息的项目,其中包含了各种类的设计以及类中函数的实现。这个项目的主要目标是统计源代码中的函数数量、代码行数以及与空格相关的函数框架。 【描述】...

    TT CAN DEMO FOR M TT CAN

    TT CAN是一种增强型CAN(Controller Area Network)通信协议,它在传统的CAN基础上增加了时间触发通信特性,提供了更高级别的确定性和安全性,尤其适用于汽车、航空和工业自动化等对实时性要求极高的领域。...

    TT - DOS 下经典的打字练习软件

    TT打字练习软件以其专业的教学方法和实用性,成为了DOS时代不可或缺的一部分,它不仅锻炼了用户的打字技巧,也为后来的Windows时代打下了坚实的基础。 总的来说,TT打字练习软件是DOS操作系统历史上的一个亮点,它...

    518tt投票软件 v20.1.zip

    518tt投票软件和其他自动投票软件的优势是:完全免费,设置简单,无需繁琐的参数,只需截取一段投票信息即可自动投票。 518tt投票软件功能: 智能高效:全自动投票,投票软件能自动拨号换ip 极速体验:投票速度快,...

    0TT_905X3_2019128V1_s905x3资料_www.905、tt_www.905tt.com_S905x3_cad

    标签中的“s905x3资料”、“www.905、tt”和“www.905tt.com”是与资源来源有关的信息,可能提供了更多关于S905X3芯片和相关设计的网站链接。而“S905x3 cadence”则表明这份资料可能使用了Cadence Design Systems...

    打字练习WT,TT

    本文将详细探讨“打字练习WT”和“键盘熟悉工具TT”这两个软件,帮助用户提升打字效率和键盘操作的熟练度。 首先,让我们关注“打字练习WT”。WT全称为五笔打字练习软件,它专为学习和提高五笔字型输入法设计。五笔...

    tt二位作图软件

    10. **教学资源**:为了帮助用户更好地掌握软件的使用,tt二位作图软件可能提供了教程、示例或者用户手册,指导用户如何利用软件进行数据分析和绘图。 通过压缩包中的"tt画图"文件,用户可以进一步了解和体验这些...

    TT作曲家简谱软件(不要注册全功能不能)

    除了基本的编辑和播放功能,"TT作曲家"还具备一定的分享和打印能力。用户可以将作品导出为常见的音乐格式,如MIDI或PDF,便于在其他设备上继续编辑或与他人分享。同时,高质量的打印选项使得纸质乐谱同样具有专业...

    TT-SuperSCAV-1.0.0.zip

    【0.12.4-R2】逃离塔科夫SCAV等级和技能【TT】【2020/05/25】【离线版】【此MOD只对本端SCAV有效,不是所有BOT(因SCAV模式与AI用的同一BOT包,因此修改血量会影响到所有BOT),附加修改了体力,负重,耐力,水和...

    应用笔记LAT1305+使用STM32+TT类型IO的注意事项

    通过对STM32系列MCU中FT和TT类型IO接口内部结构的深入分析,我们可以清楚地看到这两种接口在设计上的不同之处及其对输入电压和电流限制的影响。正确理解和应用这些知识对于防止潜在的硬件故障至关重要。此外,开发者...

    TT_lib2_271.zip

    在使用TT_lib2之前,开发者首先需要解压这个ZIP文件,然后根据`TT_Lib2`的具体类型和他们使用的开发环境进行相应的集成。例如,在Python环境中,可能需要将路径添加到PYTHONPATH;在Java环境中,`TT_Lib2.jar`可能...

Global site tag (gtag.js) - Google Analytics