关于大数据表的拆分

由于数据表的数据量预估会很大,因此开始考虑对表进行拆分,把超过一个月的数据转到历史表,历史表的表结构和当前表一样,以下做法只是一种思路,记录下来和大家分享一下。
数据表称为A表,历史表称为B表
1.创建一个临时表,临时表中只有一个字段就是表A的主键
2.计算表A中超过30天的数据有多少条,count(1)
3.计算数据在转移时需要提交多少次,假设一次提交5000条数据,如果有1万数据,那么就提交两次,如果有1.5万数据,提交三次(三次循环)
4.每次抓取5000条主键id存入临时表(select id from A where time>30 fetch 5000 row only)
5.根据临时表中的id,把表A的数据查出来插入表B(insert into B (select * from A where id in (select id from 临时表)))
6.清空临时表中的数据
7.删除表A中对应的纪录(delete from A where id in (select id from 临时表))

注意:4.5.6.7需要在一个事务中执行,每次循环都有事务控制

猜你喜欢

转载自learnmore.iteye.com/blog/1751364