首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Q是如何缓存数据的?

Q是如何缓存数据的?
EN

Stack Overflow用户
提问于 2013-10-08 07:16:51
回答 2查看 1.4K关注 0票数 5

我试图测量我创建的数据库的数据访问时间。一天的数据需要1秒的时间。为了聚合,我运行了以下代码。我正在使用kdb演播室,每天总共有1MM的交易。

代码语言:javascript
复制
\t ans: raze {select from trade where date=x, sym=`ABC} each 20#dtl

dtl是整个日期列表。我关闭了服务器并再次运行,令人惊讶的是,这花费了<1秒的时间。因为这与我上面所观察到的相反,所以我运行了这个

代码语言:javascript
复制
\t ans: raze {select from trade where date=x, sym=`ABC} each 20#20_dtl

现在用了21秒。我的问题是,如果关闭kdb服务器,q是否可能仍然缓存以前的一些结果?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-09 07:47:30

KDB+不缓存任何东西。如果您看到这样的速度差异,则所有这些都是硬件缓存。如果您刷新缓存,您可以确认这一点(在unix系统中,有一组命令可以这样做,但您需要根访问权限)。底线是KDB+根本不做任何缓存。(当然,除非你告诉它.(a la .Q.fu)

顺便提一下,您的查询在这里是如何工作的-- 20#dtl会给出一个日期列表,然后date=x会给出一个长度错误。我猜你的意思是“x中的约会”。在这种情况下,如果在命令行上使用-s,则可能会由于多线程而得到扭曲的结果。

票数 1
EN

Stack Overflow用户

发布于 2013-10-08 21:09:40

这可能是因为您的操作系统缓存从磁盘读取的数据。默认情况下,Kdb+不提供内置缓存。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19241444

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档