数据仓库服务 GaussDB(DWS)-GaussDB(DWS)总体开发设计规范:总体开发设计规范
总体开发设计规范
下表是 GaussDB (DWS)开发过程中需遵循的开发设计规范全集列表,可以单击链接跳转到对应的规则下了解详细说明。
编号 |
类别 |
规则/建议 |
|
---|---|---|---|
1 |
连接管理规范 |
- |
规则1.1 GaussDB(DWS)集群必须配置负载均衡 |
2 |
规则1.2 连接数据库完成所需操作后,必须关闭数据库连接(连接池场景除外) |
||
3 |
规则1.3 开启的事务最后必须提交或回滚 |
||
4 |
规则1.4 应用侧使用连接池场景,其空闲超时配置必须小于服务侧的SESSION_TIMEOUT配置 |
||
5 |
规则1.5 应用侧使用连接池场景,如使用连接SET设置过参数,当将连接归还连接池前,必须进行参数重置 |
||
6 |
规则1.6 应用侧使用连接池场景,如使用连接创建过临时表,当将连接归还连接池前,必须手动清理所创建的临时表 |
||
7 |
对象设计规范 |
DATABASE对象设计 |
规则2.1 避免直接使用内置的DATABASE(如postgres、gaussdb等) |
8 |
规则2.2 创建DATABASE时必须选择正确的数据库编码 |
||
9 |
规则2.3 创建DATABASE时必须选择正确的数据库兼容模式 |
||
10 |
建议2.4 存在关联计算的对象放在同一个DATABASE中 |
||
11 |
USER对象设计 |
规则2.5 禁止使用特殊权限用户运行业务,需遵循权限最小分配原则 |
|
12 |
规则2.6 禁止使用一个数据库用户运行所有业务 |
||
13 |
SCHEMA对象设计 |
建议2.7 不在其他USER的私有SCHEMA下创建对象 |
|
14 |
TABLESPACE对象设计 |
规则2.8 禁止自定义TABLESPACE表空间 |
|
15 |
TABLE对象设计(重点) |
规则2.9 创建表时必须选择正确的分布方式和分布列 |
|
16 |
规则2.10 创建表时必须选择正确的存储方式 |
||
17 |
规则2.11 创建表时必须选择正确的分区策略 |
||
18 |
建议2.12 表字段的设计要遵循高效、准确原则 |
||
19 |
建议2.13 避免使用自增列或自增数据类型 |
||
20 |
INDEX对象设计(重点) |
规则2.14 只创建必要的索引,创建索引必须选择合适的列和顺序 |
|
21 |
建议2.15 列存表通常可不建索引,极致性能场景需正确选择索引类型 |
||
22 |
VIEW对象设计 |
建议2.16 视图的嵌套需避免超过三层 |
|
23 |
SQL开发规范 |
DDL操作规范 |
建议3.1 DDL操作(CREATE除外)避免在业务高峰期和长事务中执行 |
24 |
规则3.2 DROP删除对象操作必须明确删除对象范围 |
||
25 |
INSERT操作规范 |
规则3.3 INSERT多VALUES批插场景使用COPY替代 |
|
26 |
建议3.4 禁止针对普通列存表进行实时INSERT操作 |
||
27 |
UPDATE/DELETE操作规范 |
建议3.5 避免并发UPDATE/DELETE行存表的同一行 |
|
28 |
建议3.6 避免对列存表频繁或并发执行UPDATE/DELETE |
||
29 |
SELECT操作(含所有语法中的查询部分)规范 |
规则3.7 禁止执行不下推的SQL |
|
30 |
规则3.8 禁止多表关联时缺少关联条件 |
||
31 |
规则3.9 多表关联字段数据类型要保持一致 |
||
32 |
建议3.10 尽量避免对关联条件字段和过滤条件字段进行函数运算 |
||
33 |
建议3.11 资源高消耗型SQL需做好压测和并发管控 |
||
34 |
规则3.12 禁止针对行存大表的频繁COUNT |
||
35 |
建议3.13 避免查询返回超大结果集(数据导出场景除外) |
||
36 |
建议3.14 查询时避免使用“SELECT *”写法 |
||
37 |
建议3.15 谨慎使用递归语句(WITH RECURSIVE),明确终止条件,确保递归可终止 |
||
38 |
建议3.16 访问对象(表,函数等)时带上SCHEMA名称 |
||
39 |
建议3.17 针对SQL标记注释,唯一标识SQL的归属 |
||
40 |
建议3.18 SQL语句的长度不要超过64K |
||
41 |
外表功能开发规范 |
GDS外表 |
规则4.1 GDS服务须单独使用服务器部署在DWS集群外 |
42 |
协同分析外表 |
规则4.2 避免同时对多个协同分析外表进行跨集群并发访问 |
|
43 |
存储过程开发规范 |
- |
建议5.1 避免使用复杂的存储过程,避免存储过程嵌套 |
44 |
规则5.2 存储过程内避免执行非CREATE类的DDL操作 |
- 数据仓库服务GaussDB(DWS)_SQL on Anywhere
- DWS资源管理_GaussDB(DWS)资源管理作用_DWS资源管控
- DWS安全_数据仓库服务安全_DWS数据安全管理_DWS安全保障_DWS安全策略
- 调用GaussDB(DWS) API接口_数据仓库服务调用API_如何调用API_在DWS中调用API
- GaussDB(DWS)常用SQL_常用SQL命令_SQL语法
- DWS产品介绍_DWS产品优势_DWS功能_DWS使用场景_DWS是什么
- GAUSS(DWS)工具_gsql工具_DataStudio工具_DSC工具
- GaussDB(DWS)服务_什么是IoT数仓_如何使用IoT数仓
- GaussDB如何建主键_数据库索引设计规范_高斯数据库如何建主键-华为云
- 数据库监控DMS_数据库智能运维_了解Auto Pilot_DMS_DWS节点监控