场景:
业务上传一个名单文件。文件数据量大概在1000万左右。文件大小约200M。流程是读取文件里面的证件号。每个证件号去进行查表(3000w左右,一张表2000w多。一张表5万多条)匹配,将符合要求的匹配结果数据写到一个新的文件里面。
不使用中间件 如MQ redis等 如何让程序解析效率打到最优?
1、这种通用的解决方案就是分治、并行、批量
2、将1000w的提前分成1000个1w的文件,后就可以并行同时读取处理几个文件
3、然后每次读取的时候,可以避免读取1条查询1次数据库,如果SQL支持批量查询的话,可以每次变量指定条数10条,就批量查询一次数据库,然后内存里面进行计算判断,然后一次过滤需要查询3次数据库,那边尽量避免每次都查询3次,增加一些判断,第一个查询不符合后,就不查询了,同时SQL中使用limit加索引。