亿万级别的表数据处理方式
最近处理的一个数据表中的数据有大概6亿左右的数据,基本上都是一些基础信息,例如姓名,性别这种.如何读取处理这些数据的思路做一个简单的总结(oracle)
评估数据表
首先,数据表结构,每个字段的含义,类型;索引,主外键一定要清楚,以便后面对于数据进行分类处理.
数据分表处理
对于这种大表的读取,不能可能直接读取,否则越往后越慢.所以最好对大表进行分片,比如5亿数据,1000万或者5000万一张表,我在实际环境中,基本都是1000万一张表.
oracle中分表的话,直接用创建表的方式进行分表.最好不要在原表上操作,可以拉一份表,原表不动.接下来对拉过来的表进行一些预处理.
1)字段是否有主键,索引,如果没有则需要创建
2)表中是否有适合分表的字段,比如说是否有递增序列号,如果没有则进行要分页.或者给表增加一个字段,然后将rownum更新进去,然后在进行分表.
3)分表的时候最好有一个主键,如果没有的话,那么给相应的列建立索引.
处理分表的异常数据
分完表后就要对表数据进行一个处理,要么请求获取另一些数据,要么将数据发送给第三方服务.那么处理过程中难免会有异常情况(空数据,重复数据)出现,对于这些数据的处理需要记录下来,可通过日志,或者写入数据表记录异常数据.
对于oracle数据分表处理,另一篇博客有介绍,在此不累赘了.