
# DWS总体开发设计规范
#### 目的
本规范定义了在进行基于DWS数据库自主开发过程中应遵守的设计、开发准则，以提升开发效率，保证业务的连续性、稳定性。
#### 适用范围
该规范适用于所有基于DWS数据库自主开发的场景，包含应用层面的设计与开发、数据库服务层面的设计与开发。
#### 术语定义
**规则：**数据库设计与开发时必须遵守的约定。
**建议：**数据库设计与开发时建议考虑的约定。
**说明：**对规则/建议进行的详细说明和解释。
#### 总体开发设计规范
下表是DWS开发过程中需遵循的**开发设计规范全集列表**，可以单击链接跳转到对应的规则下了解详细说明。
表1DWS开发设计规范全集列表 
| 编号 | 类别                                                                                                                                                                                                    || 规则/建议                                                                                                                                                                                              |
|:---|:---|---|:---|
| 1  | 连接管理规范                                                                                    | -                                                                                                          | [规则1.1 DWS集群必须配置负载均衡](https://support.huaweicloud.com/devg-dws/dws_04_0103.html#ZH-CN_TOPIC_0000002100586254__zh-cn_topic_0000002134166293_section1066113812212)                                   |
| 2  | 连接管理规范                                                                                    | -                                                                                                          | [规则1.2 连接数据库完成所需操作后，必须关闭数据库连接（连接池场景除外）](https://support.huaweicloud.com/devg-dws/dws_04_0103.html#ZH-CN_TOPIC_0000002100586254__zh-cn_topic_0000002134166293_section13247184232218)                |
| 3  | 连接管理规范                                                                                    | -                                                                                                          | [规则1.3 开启的事务最后必须提交或回滚](https://support.huaweicloud.com/devg-dws/dws_04_0103.html#ZH-CN_TOPIC_0000002100586254__zh-cn_topic_0000002134166293_section1568113152617)                                  |
| 4  | 连接管理规范                                                                                    | -                                                                                                          | [规则1.4 应用侧使用连接池场景，其空闲超时配置必须小于服务侧的SESSION_TIMEOUT配置](https://support.huaweicloud.com/devg-dws/dws_04_0103.html#ZH-CN_TOPIC_0000002100586254__zh-cn_topic_0000002134166293_section201871334162616)   |
| 5  | 连接管理规范                                                                                    | -                                                                                                          | [规则1.5 应用侧使用连接池场景，如使用连接SET设置过参数，当将连接归还连接池前，必须进行参数重置](https://support.huaweicloud.com/devg-dws/dws_04_0103.html#ZH-CN_TOPIC_0000002100586254__zh-cn_topic_0000002134166293_section161471750112613)  |
| 6  | 连接管理规范                                                                                    | -                                                                                                          | [规则1.6 应用侧使用连接池场景，如使用连接创建过临时表，当将连接归还连接池前，必须手动清理所创建的临时表](https://support.huaweicloud.com/devg-dws/dws_04_0103.html#ZH-CN_TOPIC_0000002100586254__zh-cn_topic_0000002134166293_section8501127112718) |
| 7  | 对象设计规范                                                                                    | DATABASE对象设计                                                                                               | [规则2.1 避免直接使用内置的DATABASE（如postgres、gaussdb等）](https://support.huaweicloud.com/devg-dws/dws_04_0108.html#ZH-CN_TOPIC_0000002100746046__zh-cn_topic_0000002135726589_section9462145153713)           |
| 8  | 对象设计规范                                                                                    | DATABASE对象设计                                                                                               | [规则2.2 创建DATABASE时必须选择正确的数据库编码](https://support.huaweicloud.com/devg-dws/dws_04_0108.html#ZH-CN_TOPIC_0000002100746046__zh-cn_topic_0000002135726589_section812010258370)                          |
| 9  | 对象设计规范                                                                                    | DATABASE对象设计                                                                                               | [规则2.3 创建DATABASE时必须选择正确的数据库兼容模式](https://support.huaweicloud.com/devg-dws/dws_04_0108.html#ZH-CN_TOPIC_0000002100746046__zh-cn_topic_0000002135726589_section12587184219378)                      |
| 10 | 对象设计规范                                                                                    | DATABASE对象设计                                                                                               | [建议2.4 存在关联计算的对象放在同一个DATABASE中](https://support.huaweicloud.com/devg-dws/dws_04_0108.html#ZH-CN_TOPIC_0000002100746046__zh-cn_topic_0000002135726589_section7642125613377)                         |
| 11 | 对象设计规范                                                                                    | USER对象设计                                                                                                   | [规则2.5 禁止使用特殊权限用户运行业务，需遵循权限最小分配原则](https://support.huaweicloud.com/devg-dws/dws_04_0109.html#ZH-CN_TOPIC_0000002136265437__zh-cn_topic_0000002100207550_section348916349406)                       |
| 12 | 对象设计规范                                                                                    | USER对象设计                                                                                                   | [规则2.6 禁止使用一个数据库用户运行所有业务](https://support.huaweicloud.com/devg-dws/dws_04_0109.html#ZH-CN_TOPIC_0000002136265437__zh-cn_topic_0000002100207550_section20111104754013)                              |
| 13 | 对象设计规范                                                                                    | SCHEMA对象设计                                                                                                 | [建议2.7 不在其他USER的私有SCHEMA下创建对象](https://support.huaweicloud.com/devg-dws/dws_04_0110.html#ZH-CN_TOPIC_0000002100586262__zh-cn_topic_0000002135806925_section82725914114)                            |
| 14 | 对象设计规范                                                                                    | TABLESPACE对象设计                                                                                             | [规则2.8 禁止自定义TABLESPACE表空间](https://support.huaweicloud.com/devg-dws/dws_04_0111.html#ZH-CN_TOPIC_0000002136185105__zh-cn_topic_0000002100047734_section17496104317416)                             |
| 15 | 对象设计规范                                                                                    | TABLE对象设计（重点）                                                                                              | [规则2.9 创建表时必须选择正确的分布方式和分布列](https://support.huaweicloud.com/devg-dws/dws_04_0112.html#ZH-CN_TOPIC_0000002100746050__zh-cn_topic_0000002135726597_section015412016423)                              |
| 16 | 对象设计规范                                                                                    | TABLE对象设计（重点）                                                                                              | [规则2.10 创建表时必须选择正确的存储方式](https://support.huaweicloud.com/devg-dws/dws_04_0112.html#ZH-CN_TOPIC_0000002100746050__zh-cn_topic_0000002135726597_section16391112254212)                               |
| 17 | 对象设计规范                                                                                    | TABLE对象设计（重点）                                                                                              | [规则2.11 创建表时必须选择正确的分区策略](https://support.huaweicloud.com/devg-dws/dws_04_0112.html#ZH-CN_TOPIC_0000002100746050__zh-cn_topic_0000002135726597_section392619458421)                                 |
| 18 | 对象设计规范                                                                                    | TABLE对象设计（重点）                                                                                              | [建议2.12 表字段的设计要遵循高效、准确原则](https://support.huaweicloud.com/devg-dws/dws_04_0112.html#ZH-CN_TOPIC_0000002100746050__zh-cn_topic_0000002135726597_section140547134319)                                |
| 19 | 对象设计规范                                                                                    | TABLE对象设计（重点）                                                                                              | [建议2.13 避免使用自增列或自增数据类型](https://support.huaweicloud.com/devg-dws/dws_04_0112.html#ZH-CN_TOPIC_0000002100746050__zh-cn_topic_0000002135726597_section20860162415439)                                |
| 20 | 对象设计规范                                                                                    | INDEX对象设计（重点）                                                                                              | [规则2.14 只创建必要的索引，创建索引必须选择合适的列和顺序](https://support.huaweicloud.com/devg-dws/dws_04_0113.html#ZH-CN_TOPIC_0000002136265441__zh-cn_topic_0000002100207558_section13748110124413)                      |
| 21 | 对象设计规范                                                                                    | INDEX对象设计（重点）                                                                                              | [建议2.15 列存表通常可不建索引，极致性能场景需正确选择索引类型](https://support.huaweicloud.com/devg-dws/dws_04_0113.html#ZH-CN_TOPIC_0000002136265441__zh-cn_topic_0000002100207558_section114813162441)                      |
| 22 | 对象设计规范                                                                                    | VIEW对象设计                                                                                                   | [建议2.16 视图的嵌套需避免超过三层](https://support.huaweicloud.com/devg-dws/dws_04_0114.html#ZH-CN_TOPIC_0000002100586266__zh-cn_topic_0000002135806933_section0606333194410)                                   |
| 23 | SQL开发规范  | DDL操作规范                                                                                                    | [建议3.1 DDL操作（CREATE除外）避免在业务高峰期和长事务中执行](https://support.huaweicloud.com/devg-dws/dws_04_0115.html#ZH-CN_TOPIC_0000002100746054__zh-cn_topic_0000002100047742_section238722717463)                   |
| 24 | SQL开发规范  | DDL操作规范                                                                                                    | [规则3.2 DROP删除对象操作必须明确删除对象范围](https://support.huaweicloud.com/devg-dws/dws_04_0115.html#ZH-CN_TOPIC_0000002100746054__zh-cn_topic_0000002100047742_section13238718155015)                           |
| 25 | SQL开发规范  | INSERT操作规范                                                                                                 | [规则3.3 INSERT多VALUES批插场景使用COPY替代](https://support.huaweicloud.com/devg-dws/dws_04_0116.html#ZH-CN_TOPIC_0000002136265445__zh-cn_topic_0000002135726605_section1588193713503)                       |
| 26 | SQL开发规范  | INSERT操作规范                                                                                                 | [建议3.4 禁止针对普通列存表进行实时INSERT操作](https://support.huaweicloud.com/devg-dws/dws_04_0116.html#ZH-CN_TOPIC_0000002136265445__zh-cn_topic_0000002135726605_section2595105519505)                           |
| 27 | SQL开发规范  | UPDATE/DELETE操作规范                                                                                          | [建议3.5 避免并发UPDATE/DELETE行存表的同一行](https://support.huaweicloud.com/devg-dws/dws_04_0125.html#ZH-CN_TOPIC_0000002100586270__zh-cn_topic_0000002100207566_section63531734104519)                       |
| 28 | SQL开发规范  | UPDATE/DELETE操作规范                                                                                          | [建议3.6 避免对列存表频繁或并发执行UPDATE/DELETE](https://support.huaweicloud.com/devg-dws/dws_04_0125.html#ZH-CN_TOPIC_0000002100586270__zh-cn_topic_0000002100207566_section6619155554517)                      |
| 29 | SQL开发规范  | SELECT操作（含所有语法中的查询部分）规范  | [规则3.7 禁止执行不下推的SQL](https://support.huaweicloud.com/devg-dws/dws_04_0126.html#ZH-CN_TOPIC_0000002136185113__zh-cn_topic_0000002135806941_section1749794416463)                                     |
| 30 | SQL开发规范  | SELECT操作（含所有语法中的查询部分）规范  | [规则3.8 禁止多表关联时缺少关联条件](https://support.huaweicloud.com/devg-dws/dws_04_0126.html#ZH-CN_TOPIC_0000002136185113__zh-cn_topic_0000002135806941_section17685947134614)                                  |
| 31 | SQL开发规范  | SELECT操作（含所有语法中的查询部分）规范  | [规则3.9 多表关联字段数据类型要保持一致](https://support.huaweicloud.com/devg-dws/dws_04_0126.html#ZH-CN_TOPIC_0000002136185113__zh-cn_topic_0000002135806941_section1777795264615)                                 |
| 32 | SQL开发规范  | SELECT操作（含所有语法中的查询部分）规范  | [建议3.10 尽量避免对关联条件字段和过滤条件字段进行函数运算](https://support.huaweicloud.com/devg-dws/dws_04_0126.html#ZH-CN_TOPIC_0000002136185113__zh-cn_topic_0000002135806941_section18864134354719)                      |
| 33 | SQL开发规范  | SELECT操作（含所有语法中的查询部分）规范  | [建议3.11 资源高消耗型SQL需做好压测和并发管控](https://support.huaweicloud.com/devg-dws/dws_04_0126.html#ZH-CN_TOPIC_0000002136185113__zh-cn_topic_0000002135806941_section152761264813)                             |
| 34 | SQL开发规范  | SELECT操作（含所有语法中的查询部分）规范  | [规则3.12 禁止针对行存大表的频繁COUNT](https://support.huaweicloud.com/devg-dws/dws_04_0126.html#ZH-CN_TOPIC_0000002136185113__zh-cn_topic_0000002135806941_section113151534184817)                             |
| 35 | SQL开发规范  | SELECT操作（含所有语法中的查询部分）规范  | [建议3.13 避免查询返回超大结果集（数据导出场景除外）](https://support.huaweicloud.com/devg-dws/dws_04_0126.html#ZH-CN_TOPIC_0000002136185113__zh-cn_topic_0000002135806941_section16145155217486)                         |
| 36 | SQL开发规范  | SELECT操作（含所有语法中的查询部分）规范  | [建议3.14 查询时避免使用"SELECT \*"写法](https://support.huaweicloud.com/devg-dws/dws_04_0126.html#ZH-CN_TOPIC_0000002136185113__zh-cn_topic_0000002135806941_section18347121492)                             |
| 37 | SQL开发规范  | SELECT操作（含所有语法中的查询部分）规范  | [建议3.15 谨慎使用递归语句(WITH RECURSIVE)，明确终止条件，确保递归可终止](https://support.huaweicloud.com/devg-dws/dws_04_0126.html#ZH-CN_TOPIC_0000002136185113__zh-cn_topic_0000002135806941_section186162944912)         |
| 38 | SQL开发规范  | SELECT操作（含所有语法中的查询部分）规范  | [建议3.16 访问对象（表，函数等）时带上SCHEMA名称](https://support.huaweicloud.com/devg-dws/dws_04_0126.html#ZH-CN_TOPIC_0000002136185113__zh-cn_topic_0000002135806941_section19367195264917)                        |
| 39 | SQL开发规范  | SELECT操作（含所有语法中的查询部分）规范  | [建议3.17 针对SQL标记注释，唯一标识SQL的归属](https://support.huaweicloud.com/devg-dws/dws_04_0126.html#ZH-CN_TOPIC_0000002136185113__zh-cn_topic_0000002135806941_section72646917506)                             |
| 40 | SQL开发规范  | SELECT操作（含所有语法中的查询部分）规范  | [建议3.18 SQL语句的长度不要超过64K](https://support.huaweicloud.com/devg-dws/dws_04_0126.html#ZH-CN_TOPIC_0000002136185113__zh-cn_topic_0000002135806941_section10314162412165)                               |
| 41 | 外表功能开发规范                                                                                  | GDS外表                                                                                                      | [规则4.1 GDS服务须单独使用服务器部署在DWS集群外](https://support.huaweicloud.com/devg-dws/dws_04_0031.html#ZH-CN_TOPIC_0000002125650482__zh-cn_topic_0000002160959045_section7984144034412)                          |
| 42 | 外表功能开发规范                                                                                  | 协同分析外表                                                                                                     | [规则4.2 避免同时对多个协同分析外表进行跨集群并发访问](https://support.huaweicloud.com/devg-dws/dws_04_0031.html#ZH-CN_TOPIC_0000002125650482__zh-cn_topic_0000002160959045_section171861828194514)                        |
| 43 | 存储过程开发规范                                                                                  | -                       | [建议5.1 避免使用复杂的存储过程，避免存储过程嵌套](https://support.huaweicloud.com/devg-dws/dws_04_0106.html#ZH-CN_TOPIC_0000002100746058__zh-cn_topic_0000002098487000_section15429113495012)                           |
| 44 | 存储过程开发规范                                                                                  | -                       | [规则5.2 存储过程内避免执行非CREATE类的DDL操作](https://support.huaweicloud.com/devg-dws/dws_04_0106.html#ZH-CN_TOPIC_0000002100746058__zh-cn_topic_0000002098487000_section188550284514)                          |
   
