数据库设计- 分表仍是分区

数据库设计--- 分表还是分区
现在有4张表,其中主键是复合主键pid+ itemid并是聚集索引, 其中每张表的数据量会超过10亿,4张表是一一对应的也就是pid+itemid的值是一样的,现在是在pid 这字段上做了一个分区, 因为每个月的PID增长量大概在30w 左右,而且 最近1-3 个月的数据是热数据,其他都是历史数据,还少被访问到。所以采用分区。
tba(pid int, itemid int,.....)
tbb(pid int, itemid int,.....)
tbc(pid int, itemid int,.....)
tbd(pid int, itemid int,.....)

业务背景:
主要是类似保存一个excel的数据到DB, 一个execel 文件相当于一个pid, excel 里面有多少行,相当于itemid,一般是300行以内。在 一行数据中有些字段数据是不经常被访问的,所以垂直分成4张表。tba 经常被访问和修改。
全新插入:
 如果是新的文件,分表会插入记录到4张表中。

如果修改exece被修改并再次保存到数据库,有下面几种情况
新增加:
修改:
 pid+itemid 这2个字段的值是不会被修改,只修改其他字段的值
删除:

pid  itemid
1       1
1       2
1      3
1      4

现在问题如下:
1 针对3个月的数据是热点数据经常被访问和修改, 还是采用分表(tba tbb tbc tbd  tba_his tbb_hist tbc_his tbd_hist)还是分区 ?
    我个人是意向采用分表,如果单表的记录会超过10亿,如果放在一张表中以后以后的插入,更新,删除都是会影响的。
2 如果采用分表,成在2个问题,一个是join 问题, 另外一个是 pid 是分在 tba 还是 tba_his ? 这个大家一般是怎么设计的?
3 对应修改后的保存,是根据pid 进行批量删除,然后再 批量插入  ? 还是找出 2次的不同点,新增加,修改,删除的地方 ?找出不同点有2种方式,1种方式是在程序端比较,程序把新增加,修改,删除的直接传进来,2种 是程序把新的excel生成一个表变量传进来,然后再数据库进行比较 新增加,修改,删除情况。
   我个人意向是在程序端比较,把新增加 修改 删除结果传进来。
3 分表是物理上的,分区是逻辑上的,这个应该怎么设计 ?

------解决方案--------------------
热点数据分区就可以了,其他数据直接转移分区到历史 数据