当一张表很大时,查询效率可能急剧下降,特别是那些需要排序的查询。Oracle的表分区功能是一种解决方案。
原理
表分区的原理是水平分割表,就是把所有的行分散在几个分区。比如1-100行在A分区,101-200行在B分区。
作用/优势
提高查询性能;
对应用程序端透明(不用修改增删改查SQL语句);
可以对单个分区管理(备份、导入等等);
分区策略
针对一个或多个字段选择分区策略:
-
范围(Range),比如时间、整数范围
-
散列(Hash),使用Oracle的散列函数
-
集合/枚举(List),某个字段的值属于一个集合,比如省份
创建分区
分区可以看作是表的功能性特征,在创建表的时候可以指定分区。Oracle还提供了在线重定义表的功能,能把为未分区的表转换为分区的表。
参考Oracle文档对不同的分区策略的举例和说明。
管理分区
包括增加、删除、移动、合并分区等等,参考文档Partition Administration。
缺点
单点问题,包括计算瓶颈、服务器可用性问题;
join操作变慢;