注册 登录
编程论坛 VFP论坛

1700万条记录的dbf是个什么概念?

cssnet 发布于 2022-04-30 17:57, 3371 次点击
是这么一个概念:
打开几个相关的dbf,用SQL语句作了一些简单修改,更新了索引,然后打一个命令:
close all
结果等了5分钟,鼠标漏斗一直转、一直转、一直转……还没转完!
当然,机器比较老旧,AMD上几代的CPU,不过好歹也有16G内存来着。
19 回复
#2
sdta2022-04-30 18:32
字段的多少,长度的大小,对文件的大小有一定的影响
#3
laowan0012022-04-30 20:22
这种量级,对DBF来说负担有点重,可能的话,还是用SQLserver吧,效率刚刚的
#4
cssnet2022-05-01 14:19
以下是引用sdta在2022-4-30 18:32:06的发言:
字段的多少,长度的大小,对文件的大小有一定的影响


对于巨大的dbf表,实践证明:

close indexes
*巴拉巴拉,修改一堆的字段值
set index to Mycdx
reindex

VFP参考书上推荐的这一做法,可能是错误的!效率非常非常低!
必须尽可能地保持索引一直打开,让VFP自动去维护、更新索引才行。


[此贴子已经被作者于2022-5-1 16:20编辑过]

#5
cssnet2022-05-02 16:11
企图处理巨大dbf表,是一个“痛苦”的历程。
不过,这也倒逼着我们不断尝试重构算法,尽一切可能去提高运算的效率。
因为要遍历DBF表,获取所需的统计数据,算法Ver 0.1,非常非常慢,大略估算了一下,一天也转不出1%来,全部统计完,理论上,需要100天+!
显然这是相当拙劣的蜗牛工程!
算法Ver 0.2,通过疯狂地添加索引,将速度提高了一些,不过仍需要80天+!
算法Ver 0.3,将一切冗余字段删除,只保留程序所涉及的几个必要字段,如此又将速度提高至70天+!
现在正鼓捣着算法Ver 0.4,希望能将速度提升至50天-罢,唉。
软硬件环境:11代i5/32G/512G SSD/Win11 64bit
记得我说过,VFP是个挺不错的玩具,一遍又一遍地反复重构、优化算法,这本身就是一个有趣的挑战性的智力游戏。
#6
laowan0012022-05-02 17:39
大活还得大数据库干,夏利去跑拉力赛还是差点
#7
cssnet2022-05-02 20:38
以下是引用laowan001在2022-5-2 17:39:15的发言:
大活还得大数据库干,夏利去跑拉力赛还是差点


确定是啊!不过,这当中还有“学艺不精”方面的因素,影响也是蛮大的。
Ver 0.4刚刚测试了一下,得到一个较能接受的结果,甚至还有点儿“小惊喜”:
若电脑24小时不停开着,理论上,只需31天便能转完!
这已是远超预期:毕竟从100天+,80天+,70天+,……一路打压,直至“三折优惠”!
这买卖估计也就这样啦。
若再想砍价的话……唉,臣妾做不到啊!
决定先转几天试试!权当拷拷机罢。
#8
xuminxz2022-05-04 15:45
数据这么大的表,如果是中间数据处理的表,看看可否减少不必要的字段、减少字段宽度,可以提高速度。如果是最终保存数据的表,只能说楼主胆大。另外,若每次真正要处理的只是部分的数据,可通过参数视图,筛选出相关记录进行处理。
#9
cssnet2022-05-04 20:51
以下是引用xuminxz在2022-5-4 15:45:59的发言:
数据这么大的表,如果是中间数据处理的表,……若每次真正要处理的只是部分的数据


确实是中间数据,否则不会企图花上1~4个月时间去折腾它们。
每一次都必须遍历整个数据集,没法分片式筛选出各个子集来处理。
——只能咬牙硬干。
#10
xuminxz2022-05-05 15:38
没有结合具体数据结构、运算结果的要求与代码很难给出提高效率的办法。
#11
qq888811112022-05-05 17:41
这么大的数据~~~
#12
bccnshh2022-05-13 21:50
dbf最多只能放300万左右记录,2G左右吧
#13
aqyejun2022-05-16 10:15
300万以上的记录完全没有压力,大数据表建议只单独做查询用!
#14
sostemp2022-05-16 10:37
这大不如ACCES SQL MYSQL
#15
sych2022-05-16 12:51
每个表文件记录的最大数目 10 亿
表文件大小的最大值 2G 字节
FPT 文件大小的最大值 2G 字节
每个记录中字符的最大数目 65,500
每个记录中字段的最大数目 (1)  255
一次同时打开的表的最大数目 (2)  65,535
每个表字段中字符的最大数目 254
 
#16
ccb20002022-05-18 18:27
VFP Advanced 10.1版本可以支持大文件(>2GB)。
文件的最大大小:2048 TB。
每个表文件的最大记录数:10 亿(与 VFP 9.0 相同)。
表文件(或游标)的最大大小:10 亿 * RECSIZE(),如果 RECSIZE()=65500(最大值),则为 65 TB。
FPT文件的最大块:20亿。
FPT 文件的最大大小:20 亿 * SET("BLOCKSIZE"),如果 SET("BLOCKSIZE")=64(默认设置),则为 128 GB。
索引文件的最大大小:4 GB(VFP 9.0 的两倍)。
#17
schtg2022-05-19 05:48
回复 16楼 ccb2000
好!谢谢!
#18
sostemp2022-07-07 07:42
VFP Advanced 10.1?
#19
wcx_cc2022-07-13 01:53
VFP Advanced 10.1?是微软的吗?什么时间颁布的?
#20
kosung2022-07-20 21:00
回复 19楼 wcx_cc
这是CCB2000自己的作品,对VFP很好的改进和扩充,高人。
网址在http://www.
1