当一张表很大时,查询效率可能急剧下降,特别是那些需要排序的查询。Oracle的表分区功能是一种解决方案。
原理
表分区的原理是水平分割表,就是把所有的行分散在几个分区。比如1-100行在A分区,101-200行在B分区。
作用/优势
显著地提高查询性能(查询负载分散到了多个分区);
对应用程序端透明(不用修改增删改查SQL语句);
提高可用性(Availability);分区之间是相互独立的,一个分区出现问题,不会影响其它分区的数据;
可以对单个分区管理(备份、导入等等);
分区策略
针对一个或多个字段选择分区策略:
-
范围(Range),比如时间、整数范围
-
散列(Hash),使用Oracle的散列函数
-
集合/枚举(List),某个字段的值属于一个集合,比如省份
创建分区
分区可以看作是表的功能性特征,在创建表的时候可以指定分区。Oracle还提供了在线重定义表的功能,能把为未分区的表转换为分区的表。
参考Oracle文档对不同的分区策略的举例和说明。
管理分区
包括增加、删除、移动、合并分区等等,参考文档Partition Administration。
缺点
表分区是Oracle数据库的特性,不具备移植性;
购买Oracle的License时,表分区功能需要额外计费(2000多美金);