往期回顾
链接
Oracle数据库设计规范篇{一}——表规范
Oracle数据库设计规范篇{二}——物理设计规范【上】(基本规范、表设计规范)
2.3分区设计规范
分区表设计总体原则:
每个表必须包含以下属性参数: TABLESPACE,PCTUSED,STORAGE。根据表的不同属性进行表类型设计分区表:
- 对于数据量比较大的表,根据表数据的属性进行分区,以得到较好的性能:
- 如果表按某些字段进行增长,则采用按字段值范围进行范围分区。
- 如果表按某个字段的几个关键值进行分布,则采用列表分区。
- 对于静态表,则采用hash分区或列表分区。
- 在范围分区中,如果数据按某关键字段均衡分布,则采用子分区的复合分区方法。
聚簇表:如果某几个静态表关系比较密切,则可以采用聚蔟表的方法。
SQL常依据某列的范围访问表,则对表使用RNAGE分区,常见情况是SQL根据时间范围进行查新,则使用时间字段作为分区关键字进行RANGE分区;将对表的多种访问结合考虑来确定分区的细度:
- 大多数SQL操作的分区关键字值的范围;
- 数据维护的需要,比如以月为单位删除历史数据;
- 数据访问的性能,以操作范围确定的分区数据量还是过大,比如大于500万,则还需要进行细分;
- 一个分区的数据量要小于500万,这是一个硬性的尺度,但从技术上来看,每个分区10万数据量的情况比每个分区20万数据量的情况要快很多,所以需要灵活掌握;
SQL常居于某列的散列值访问表,则对表使用LIST分区,LIST分区不支持多列分区关键字;常见情况针对某个地区或者某个业务进行数据访问,那么就使用地区编号或者业务编号作为分区关键字;将对表的多种访问结合考虑来确定分区的细度:
- 一般使用一个分区关键字的值来划定一个分区;
- 可以把分区关键字的值相对应数据比较少的几个分区合并作一个分区;
- 如果一个分区关键字值所对应的数据量过大,比如大于500万,则应该对表采用RANGE分区,对该值的分区再采用HASH子分区;也就是说,一个可以采用LIST分区的表,肯定可以转化成RANGE分区(可带子分区),反之不然;
- 一个分区的数据量要小于500万,这是一个硬性的尺度,但从技术上来看,每个分区10万数据量分区方法比每个分区20万数据量的分区方法要快很多,所以需要灵活掌握。
SQL访问表不按照某列的范围进行,也不按某列离散值进行,而且对该表的数据不会依据某列的值范围或者离散值进行定期维护,那么使用HASH分区;HASH分区是不知道应该选择何种分区时的选择;HASH分区的各分区都可能存有各种情况的数据,故而不能用于依据分区清理数据的情况;对确定分区细度的考虑:
- 依据分区的数据量规划和表的最大数据量来确定分区数;
- 一个分区的数据量要小于500万,这是一个硬性的尺度,但从技术上来看,每个分区10万数据量分区方法比每个分区20万数据量的分区方法要快很多,所以需要灵活掌握。
未完待续…
公众号:收获不止数据库
微信:ljbyxl1213
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/9091385/viewspace-3083352/
,如需转载,请注明出处,否则将追究法律责任。