1.1 千万级数量
1.2 写进多个dbf文件,每个dbf文件关联两个sql文件-关联列为1.3的累加列
1.3 dbf文件两列全局唯一并累加,部分列随机生成
1.4 sql文件三列全局唯一并累加,部分列随机生成
10w行数据
造一个dbf 和关联的sql1, sql2文件, 3分21秒 -- cpu占用12%左右(8核系统,单个cpu已占满)
10w行数据
造2个dbf文件和他们关联的sql1,sql2文件, 时间 7分钟 -- 根据2.1中cpu占用属于正常时间
10w行数据
造1个dbf文件+关联的sql1,sql2文件,时间7分05, ?--进程锁切换占用时间
造4个dbf文件+关联的sql1,sql2文件,时间12分06秒,
10w行数据
造1个dbf文件+关联的sql1,sql2文件,时间3分39,
造4个dbf文件+关联的sql1,sql2文件,时间4分02秒, -- 4个python进程,每个占用12%左右(8核系统)
100w行数据
造4个dbf文件+关联的sql1,sql2文件,时间33分48秒 -- 符合预期
2.4为最优方案,同时创建多个dbf文件时,每个创建流程启动对应的进程,运行时每个进程占用12%cpu左右(8核系统已占满);单个进程内创建dbf,sql1,sql2文件是串行执行。
由于以上实践都以10w为实验,千万数据成倍数所需时间按倍数相乘即可大约35-40分钟
注:当创建文件数(进程数)超过系统核心数时,整体时间会翻倍超过创建单个文件的时间
例:
8核系统-10w行数据:
单个文件-3分钟,
同时创建1-8个文件 ~= 3分钟,
同时创建9-16个文件 ~= 6分钟