大数据量的表在一般的业务系统中所占比例较小,但却成为了系统正常运行的性能瓶颈,根据对业务的理解与项目中的实际经验,给出个人对大数据量表的基本设计思路,仅供参考:
-
1.表分区
表分区可以通俗的认为是将一张大表,根据条件分割成若干“小表”,但不会改变任何表结构,而是将“小表”数据分别存储在独立的分区内,分割后的分区仍然是一个整体,在进行分区设计时,不能够只对数据分区而不对索引分区,也不能够对索引分区而不对数据分区。
Oracle可支持多种分区类型(RANGE、LIST、HASH…)以及复合分区 interval 分区 --11G -
2.表标识
表标识可以理解为区分新老数据而设定(如:在线数据—历史数据;有效数据–无效数据 等等)
归结到设计上可以考虑两种:
1、单表加区分标识(如:有效、无效)
2、单表一分为二:当前表–历史表 —我们一般趋向于这种方式 -
3、表分拆
(1)表垂直拆分
在保持原有表的列属性不变的情况下,将表拆分为二个表或多个表,按照表列来操作
如:多用户高并发多个功能点频繁查询某一张表做业务运算时(在用进行数据关联的情况下进行拆分)(2)表水平拆分
水平拆分是针对表按照数据进行切分,即将表中的某些行拆分到其他的表
如:日志表–可以按时间范围拆分
----事前 开发前就考虑好 -
4、中间表
通常报表查询我们通过中间表抽取。
-
5、物化视图
通常报表查询我们通过物化视图抽取
物化视图可以认为就是一张实际的表,经过逻辑计算之后得出的结果。物化视图与中间表的区别:
中间表大部分采用的形式为存储过程写到中间表的方式进行相应的报表的开发,其实 数据的更新就要考虑到时间戳的概念,如果当前统计的表不存在的时间戳的就需要每次都要全部更新。
而物化视图的数据更新是根据物化视图日志进行相应的数据更新。