求助:SPL 中如何界定大表小表

如题,在 SPL 中如何界定某个表是大表还是小表,多小算大,多大算小?

没有写错,我想表达的意思是大表的下限和小表的上限。比如,以 50 万行 25 列为基准,超过该基准的属于大表,未达到该基准的属于小表;或者说,以表的大小 100M 为基准,超过 100M 属于大表,小于 100M 的属于小表。论坛有这样一篇文章 新手如何使用 SPL 存储 中也有相关的论述 "SPL 对于大表和小表采取不同的存储方式,我们先要对表的大小加以区分。小表是指数据量不大,内存能够全部装下的表……而大表的数据量很大,内存无法全部装下"。这样的论述没有问题,但不是很直观,不同的机器有不同的内存,大小也是相对而言的。所以,对我这样一个小白来说,如果能把大小描述成一个 ballpark figure,会更形象,更容易操作。比如,在 SPL 中:

1、8G 内存的机器,多少兆的表或者说多少行多少列的表可以被认定为大表?

举个例子,我创建了一个 52 万行 30 列,大小是 202M 的 btx 文件,在本机完全读取时,内存溢出了,那是不是就属于大表了?然后,52 万行 25 列的 btx 文件,能全数据读出来,但读的不丝滑,需花点时间,此时该表是不是属于小表?界定的标准按能否全数据读取还是按能否丝滑读取?

2、内表,也就是能塞进内存的表,SPL 中有个函数 memory 可以把表转换成内表。这同样跟内存大小有关,没有定量,内存越大总归会越有优势。那在实际操作时,编写代码的人总得心里有个底,本机什么样的配置,碰到什么样的表才能将其转成内表,而不是 mindlessly 无脑式的往内存塞。还是跟上述一样,没有一个具象的文件大小或者行列多少的范围,感觉很抽象。

以上问题描述,非科班小白表述的力度不够,不专业。意思其实很简单,可不可以有一个大概的范围来描述大表小表,这个范围是相对于某种大小的内存而言的,多少行多少列,或者多少兆。这样的话,在编写代码时会有一个 ballpark figure,心里有谱。

就像山上有雪和雪山的完全不同,数据量大和大数据也是截然不同的概念,恳请大佬们得闲时给予帮助解惑。

谢谢!