检测到您已登录华为云国际站账号,为了您更好的体验,建议您访问国际站服务网站 https://www.huaweicloud.com/intl/zh-cn
不再显示此消息
INSERT操作规范 规则3.3 INSERT多VALUES批插场景使用COPY替代 违反规范的影响: 多VALUES解析耗时、耗资源,入库效率低。 方案建议: 前端使用COPY类接口(如JDBC的CopyManger等)代替INSERT VALUES。 建议3.4 禁止针对普通列存表进行实时INSERT操作
TABLESPACE对象设计规范 规则2.8 禁止自定义TABLESPACE表空间 违反规则的影响: 分布式场景建表使用自定义表空间,导致表数据无法按照各DN分布式存储,出现存储倾斜。 方案建议: 创建表对象使用内置默认表空间。 父主题: GaussDB(DWS)对象设计规范
DATABASE对象设计规范 规则2.1 避免直接使用内置的DATABASE(如postgres、gaussdb等) 违反规则的影响: 内置的数据库编码、兼容模式不符合业务要求时,需要重新迁移数据。 所有业务均使用内置数据库,影响变更耗时。 方案建议: 根据实际业务需要,合理创建专用DATABASE并划分给业务使用。
UPDATE&DELETE操作规范 建议3.5 避免并发UPDATE/DELETE行存表的同一行 违反规范的影响: 并发UPDATE/DELETE行存表可能导致行锁阻塞和分布式死锁风险,导致业务报错和性能下降。 方案建议: 按主键或分布列进行分组UPDATE/DELETE,组间并行,组内串行。
INDEX对象设计规范(重点) 规则2.14 只创建必要的索引,创建索引必须选择合适的列和顺序 违反规范的影响: 冗余索引浪费空间,索引多影响入库效率。 组合索引中列顺序错误,影响查询效率。 最佳实践: 索引的使用需兼顾以下条件: 索引列必须是常用于过滤条件或JOIN关联条件的列。
VIEW对象设计规范 建议2.16 视图的嵌套需避免超过三层 违反规范的影响: 视图嵌套过深导致执行计划不稳定、耗时不稳定。 视图依赖的对象重建风险高,锁冲突发生概率增大。 方案建议: 创建视图直接基于物理表查询,不建议嵌套视图。 父主题: GaussDB(DWS)对象设计规范
SCHEMA对象设计规范 建议2.7 不在其他USER的私有SCHEMA下创建对象 私有SCHEMA是指创建USER时自带的同名SCHEMA,该SCHEMA为该USER私有。 违反规则的影响: 在其他用户私有SCHEMA下创建对象,对象权限不受创建者控制,OWNER也非创建者。 方案建议:
TABLE对象设计规范(重点) 规则2.9 创建表时必须选择正确的分布方式和分布列 违反规范的影响: 分布式和分布列选择错误,导致表数据存储倾斜,访问性能下降,严重情况会触发存储和计算资源过载。 方案建议: 创建表时通过DISTRIBUTE BY显式指定分布方式和分布列,分布列选择原则如下表所示。
DDL操作规范 建议3.1 DDL操作(CREATE除外)避免在业务高峰期和长事务中执行 违反规范的影响: DDL操作普遍持锁级别高,如ALTER、DROP、TRUNCATE、REINDEX、VACUUM FULL等,执行时会造成业务等锁阻塞。 高峰期执行持锁级别高的DDL操作,造成业务等锁阻塞。
SELECT操作规范 规则3.7 禁止执行不下推的SQL GaussDB(DWS)为分布式架构,SQL语句必须下推才能分利用分布式的计算资源,达到性能最优。 违反规范的影响: 不下推的SQL执行性能差,严重情况会导致CN资源瓶颈,影响整体业务。 方案建议: 不使用不下推的语法和不下推的函数,具体参考语句下推调优。
GaussDB(DWS) SQL开发规范 DDL操作规范 INSERT操作规范 UPDATE&DELETE操作规范 SELECT操作规范 父主题: GaussDB(DWS)开发设计建议
USER对象设计规范 规则2.5 禁止使用特殊权限用户运行业务,需遵循权限最小分配原则 违反规则的影响: 特殊权限用户如管理员用户,均具有特殊用途,使用此类用户运行业务有安全和管控风险。 方案建议: 使用普通用户运行业务,特殊权限类用户仅用于管理类操作。 规则2.6 禁止使用一个数据库用户运行所有业务
GaussDB(DWS)对象设计规范 DATABASE对象设计规范 USER对象设计规范 SCHEMA对象设计规范 TABLESPACE对象设计规范 TABLE对象设计规范(重点) INDEX对象设计规范(重点) VIEW对象设计规范 父主题: GaussDB(DWS)开发设计建议
GaussDB(DWS)存储过程开发规范 建议5.1 避免使用复杂的存储过程,避免存储过程嵌套 违反规范的影响: 复杂和嵌套的存储过程维护成本高,故障定位难度大,恢复耗时长。 方案建议: 不使用存储过程或只使用一层存储过程,不嵌套。 开发存储过程设计对应的日志表,将关键步骤前后的信息记录到日志表中,操作步骤如下。
INSERT操作规范 规则3.3 INSERT多VALUES批插场景使用COPY替代 违反规范的影响: 多VALUES解析耗时、耗资源,入库效率低。 方案建议: 前端使用COPY类接口(如JDBC的CopyManger等)代替INSERT VALUES。 建议3.4 禁止针对普通列存表进行实时INSERT操作
UPDATE&DELETE操作规范 建议3.5 避免并发UPDATE/DELETE行存表的同一行 违反规范的影响: 并发UPDATE/DELETE行存表可能导致行锁阻塞和分布式死锁风险,导致业务报错和性能下降。 方案建议: 按主键或分布列进行分组UPDATE/DELETE,组间并行,组内串行。
GaussDB(DWS)开发设计规范 GaussDB(DWS)总体开发设计规范 GaussDB(DWS)连接管理规范 GaussDB(DWS)对象设计规范 GaussDB(DWS) SQL开发规范 GaussDB(DWS)外表功能开发规范 GaussDB(DWS)存储过程开发规范 GaussDB(DWS)各对象设计详细规则
GaussDB(DWS)连接管理规范 规则1.1 GaussDB(DWS)集群必须配置负载均衡 违反规则的影响: 负载不均衡导致性能问题,严重情况会导致业务中断。 CN故障场景,业务无法自恢复或恢复时间长。 方案建议: 配置ELB负载均衡,应用连接负载均衡IP。 配置JDBC负载
DATABASE对象设计规范 规则2.1 避免直接使用内置的DATABASE(如postgres、gaussdb等) 违反规则的影响: 内置的数据库编码、兼容模式不符合业务要求时,需要重新迁移数据。 所有业务均使用内置数据库,影响变更耗时。 方案建议: 根据实际业务需要,合理创建专用DATABASE并划分给业务使用。
GaussDB(DWS)外表功能开发规范 规则4.1 GDS服务需单独使用服务器部署在DWS集群外 违反规范的影响: GDS如果部署在DWS集群内,会与DWS集群CN/DN节点发生资源争抢,导致双方性能同时劣化。 方案建议: GDS服务单独使用服务器部署在DWS集群外。 GDS所