云服务器内容精选

  • 分区设计原则 范围分区和interval分区适合于划分历史类数据、周期性的加载和删除数据,通常是以DATE类型的列作为范围分区键。interval分区是范围分区的延伸,以时间为单位自动扩展分区。 HASH分区适合于随机分布数据、通过HASH算法来避免热块竞争、没有明显的分区规则,通常选择唯一或者基本唯一的列作为HASH分区键,分区的数目必须是2的幂次方。 列表分区适合于离散数据,不支持多个列同时作为分区键。 复合分区同时具备2维分区的优点,分为:Range-Hash、Range-List、Range-Range、List-Hash、List-List、List-Range。 Intervel分区适合于固定间隔的范围分区,当到插入数据到不存在的分区时,数据库会自动创建新分区,自动产生分区名,Oracle不允许手工增加新分区。由于这种分区的分区名称是自动生成的,且前期出现的BUG较多,并不推荐大规模使用。 分区表上尽量使用本地索引,在检索的时候where条件中尽量带上分区键,通过分区键缩小检索的范围。 合理的设计分区表的表空间,通过表空间和LUN可以在物理层面上隔离数据,提高并行度,降低资源竞争。
  • 索引设计原则 表的主键、外键必须有索引; 经常查询且选择率低于5%的列需要建立索引; 经常与其他表进行连接的表,在连接字段上应该建立索引; 经常出现在Where子句中的字段,特别是大表的字段,应该建立索引; 位图索引适合于DSS或者OLAP,不应该在OLTP的系统中或者DML操作较频繁的列上建立位图索引; 索引应该建在小字段上,对于大的文本字段甚至超长字段,不要建索引; 复合索引的建立需要进行仔细分析;尽量考虑用单字段索引代替: 正确选择复合索引中的主列字段,一般是选择性较好的字段; 复合索引的几个字段是否经常同时以AND方式出现在Where子句中?单字段查询是否极少甚至没有?如果是,则可以建立复合索引;否则考虑单字段索引; 如果复合索引中包含的字段经常单独出现在Where子句中,则分解为多个单字段索引; 如果复合索引所包含的字段超过3个,那么仔细考虑其必要性,考虑减少复合的字段; 如果既有单字段索引,又有这几个字段上的复合索引,一般可以删除复合索引; 频繁进行数据操作的表,不要建立太多的索引; 删除无用的索引,避免对执行计划造成负面影响; 分区表上尽量使用本地索引,否则在分区维护的时候必须重建索引; 可以适当的使用函数索引来完成特殊的优化。
  • 表空间设计原则 用户表空间与系统表空间分离。 数据表空间与索引表空间分离。 业务表空间与日志表空间分离。 OLTP系统最好不要使用BIG FILE TABLESPACE。 小型数据库数据文件统一使用8GB;中型数据库数据文件统一使用16GB;大型数据库数据文件统一使用24GB,不允许使用数据文件自动扩展。 用户新建立的表空间必须采用本地管理和自动段空间管理。 没有必要频繁的整理表空间中的碎片,除非碎片率达到了80%以上。 如果表空间因频繁的DDL操作出现碎片,建议设置表空间的UNIFORM SIZE为合适的数值(例如1MB),来减少碎片的产生。