Skip to content

在dble目录下出现的文件“Memoryxxxxx.xxx.temp.db”文件是什么? #3144

Answered by Dinosauria
Dinosauria asked this question in Q&A
Discussion options

You must be logged in to vote

temp.db文件的目的:

用于临时存储后端节点返回的大量数据,避免dble发生OOM而宕机。

temp.db的文件命名规则:Memory{random}.{index}.temp.db

  • 以Memory为前缀
  • {random}:为随机数,相同随机数表示是同一个复杂处理生成的
  • {index}:为dble全局的文件序号
  • 以temp.db为后缀

上面图片中, 'Memory1624350811.148787.temp.db',1624350811为随机数表示同一个复杂处理生成的,全局自增序号到了148787,表示Dble已生成过十万个临时文件了

中间结果集在Dble中暂存的场景:

A、B表,分别对应后端库为(dn1、dn2)和(dn3、dn4)

  1. 例1,join查询,执行select * from A join B的时候,需要等A、B表所有节点的结果集返回后(这里产生了中间结果集需要暂存), 才能做两表的笛卡尔乘积,得到最终的结果。
  2. 例2,order by查询,执行select * from A order by name,需要获取dn1、dn2节点返回的数据(这里产生了中间结果集需要暂存),在Dble层面在做一次排序处理,得到最终的结果。
  3. 例3,子查询,执行select * from A where name in(select name from B),需要等子查询B返回所有的name结果后(这里产生了中间结果集需要暂存),然后填充in条件,再下发外层sql,得到最终的结果。

此外,还有count()、distinct等场景.

根据Explain sql看,Dbl…

Replies: 1 comment

Comment options

Dinosauria
Feb 21, 2022
Collaborator Author

You must be logged in to vote
0 replies
Answer selected by PanternBao
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Category
Q&A
Labels
None yet
1 participant