检测到您已登录华为云国际站账号,为了您更好的体验,建议您访问国际站服务网站 https://www.huaweicloud.com/intl/zh-cn
不再显示此消息
表设计 GaussDB是分布式架构。数据分布在各个DN上。总体上讲,良好的表设计需要遵循以下原则: 将表数据均匀分布在各个DN上。数据均匀分布,可以防止数据在部分DN上集中分布,从而导致因存储倾斜造成集群有效容量下降。通过选择合适的分布列,可以避免数据倾斜。 将表的扫描压力均匀分
表设计 GaussDB是分布式架构。数据分布在各个DN上。总体上讲,良好的表设计需要遵循以下原则: 将表数据均匀分布在各个DN上。数据均匀分布,可以防止数据在部分DN上集中分布,从而导致因存储倾斜造成集群有效容量下降。通过选择合适的分布列,可以避免数据倾斜。 将表的扫描压力均匀分
表设计 总体上讲,良好的表设计需要遵循以下原则: 减少需要扫描的数据量。通过分区表的剪枝机制可以大幅减少数据的扫描量。 尽量减少随机I/O。通过聚簇可以实现热数据的连续存储,将随机I/O转换为连续I/O,从而减少扫描的I/O代价。 选择分区方案 当表中的数据量很大时,应当对表进行分区,一般需要遵循以下原则:
约束设计 DEFAULT和NULL约束 如果能够从业务层面补全字段值,那么,不建议使用DEFAULT约束,避免数据加载时产生不符合预期的结果。 给明确不存在NULL值的字段加上NOT NULL约束,优化器会在特定场景下对其进行自动优化。 给可以显式命名的约束显式命名。除了NOT
约束设计 DEFAULT和NULL约束 如果能够从业务层面补全字段值,那么,不建议使用DEFAULT约束,避免数据加载时产生不符合预期的结果。 给明确不存在NULL值的字段加上NOT NULL约束。优化器会在特定场景下对其进行自动优化。 给可以显式命名的约束显式命名。除了NOT
约束设计 DEFAULT和NULL约束 【建议】如果能够从业务层面补全字段值,那么,就不建议使用DEFAULT约束,避免数据加载时产生不符合预期的结果。 【建议】给明确不存在NULL值的字段加上NOT NULL约束,优化器会在特定场景下对其进行自动优化。 【建议】给可以显式命名的约束显式命名。除了NOT
约束设计 DEFAULT和NULL约束 如果能够从业务层面补全字段值,那么,不建议使用DEFAULT约束,避免数据加载时产生不符合预期的结果。 给明确不存在NULL值的字段加上NOT NULL约束,优化器会在特定场景下对其进行自动优化。 给可以显式命名的约束显式命名。除了NOT
约束设计 DEFAULT和NULL约束 【建议】如果能够从业务层面补全字段值,那么,就不建议使用DEFAULT约束,避免数据加载时产生不符合预期的结果。 【建议】给明确不存在NULL值的字段加上NOT NULL约束,优化器会在特定场景下对其进行自动优化。 【建议】给可以显式命名的约束显式命名。除了NOT
约束设计 DEFAULT和NULL约束 如果能够从业务层面补全字段值,那么,不建议使用DEFAULT约束,避免数据加载时产生不符合预期的结果。 给明确不存在NULL值的字段加上NOT NULL约束,优化器会在特定场景下对其进行自动优化。 给可以显式命名的约束显式命名。除了NOT
字段设计规范 【规则】字段设计应使用推荐类型。 字段设计需使用推荐字段,如果需要使用禁用、不推荐的字段类型。有些数据类型不推荐的原因是业务使用场景较少,未大规模商用。 表1 数据库数据类型最佳实践 数据类型 说明 是否推荐 UUID 不同集群可能产生相同UUID 禁止 序列整型
字段设计规范 【规则】字段设计应使用推荐类型。 字段设计需使用推荐字段,如果需要使用禁用、不推荐的字段类型,建议联系数据库专家进行评估。有些数据类型不推荐的原因是业务使用场景较少,未大规模商用。 表1 数据库数据类型最佳实践 数据类型 说明 是否推荐 UUID 不同数据库可能产生相同UUID
字段设计规范 【规则】字段设计应使用推荐类型。 字段设计需使用推荐字段,如果需要使用禁用、不推荐的字段类型,建议联系数据库专家进行评估。部分数据类型不推荐的原因是业务使用场景较少,未大规模商用。 表1 数据库数据类型最佳实践 数据类型 说明 是否推荐 UUID 不同数据库可能产生相同UUID
函数/存储过程设计规范 【规则】禁止使用存储过程、触发器等实现业务逻辑,应该将这些逻辑都放到业务服务器上处理,避免对数据库产生逻辑依赖。 【规则】业务的数据库升级脚本中,禁止使用存储过程实现升级逻辑。 【规则】仅创建对固定入参有固定返回值的函数,函数必须设为IMMUTABLE和SHIPPABLE类型。
下的权限管理。例如: 角色和用户为多对多关系,一个角色可以赋予多个用户,修改角色中的权限,被赋予角色的用户权限就可以同时更新; 删除用户时,不会影响到角色; 新建用户后可以通过赋予角色快速获取所需权限。 【建议】在删除指定数据库时,应回收用户对该数据库的CONNECT权限,避免删除时仍然存在活跃的数据库连接而失败。
可以减少网络压力,使数据的处理本地化,以提高集群的性能和可支持的并发度。通过对关联条件和分组条件的仔细设计,能够尽可能的减少不必要的数据shuffle。 选择存储方案 【建议】表的存储类型是表定义设计的第一步,客户业务类型是决定表的存储类型的主要因素,表存储类型的选择依据请参考表1。
BY子句在顶层视图上无效,如果必须对输出数据排序,请考虑在调用视图中使用ORDER BY。 【建议】尽量减少随机I/O。通过聚簇可以实现热数据的连续存储,将随机I/O转换为连续I/O,从而减少扫描的I/O代价。 选择存储方案 【建议】表的存储类型是表定义设计的第一步,客户业务类型是决定
表设计规范 【规则】视图不建议嵌套。 如果视图编写时使用了通配符,当被调用的视图新增或删除列时,视图将发生错误;同时,视图嵌套可能因无法使用索引而导致执行效率低下,尽量使用带有索引的基表而不是视图上做关联操作。 【建议】视图定义中尽量避免排序操作。 ORDER BY子句在顶层视图
t与revoke语法便捷地控制不同用户对各Schema及其下属对象的权限。 从便捷性和资源共享效率上考虑,推荐使用Schema进行业务隔离。 建议系统管理员创建Schema和Database,再授予相关用户对应的权限。 Database设计建议 在实际业务中,根据需要创建新的Da
t与revoke语法便捷地控制不同用户对各Schema及其下属对象的权限。 从便捷性和资源共享效率上考虑,推荐使用Schema进行业务隔离。 建议系统管理员创建Schema和Database,再授予相关用户对应的权限。 Database设计建议 在实际业务中,根据需要创建新的Da
索引设计规范 【规格】使用数据库索引实践推荐的索引类型。 索引设计建议使用推荐类型。 表1 数据库索引实践推荐 索引类型 说明 是否推荐 主键/唯一索引 单列或多列主键/唯一索引 推荐 全局索引 索引组织方式 规划中 表达式索引 索引列为表的一列或多列计算而来的一个函数或者标量表达式