检测到您已登录华为云国际站账号,为了您更好的体验,建议您访问国际站服务网站 https://www.huaweicloud.com/intl/zh-cn
不再显示此消息
replication; 创建外表 本小节所附外表语法用于获取本Tutorial使用到的示例数据。这些示例数据存储在OBS存储桶中,该存储桶向所有经过身份验证的云用户提供了读取权限。 注意,以下语句中的<obs_bucket_name>代表OBS桶名,仅支持部分区域,当前支持的区域和对应的OBS桶名请参见支持区域。GaussDB(DWS)
步骤4:创建新表并加载数据 为每张表选择了存储方式、压缩级别、分布方式和分布列后,使用这些属性创建表并重新加载数据。以便对比表设计前后的系统性能。 执行CREATE TABLE创建表前,删除前面创建的表。 1 2 3 4 5 6 7 8 9 10 11 12 13
SQL开发规范 DDL操作规范 INSERT操作规范 UPDATE&DELETE操作规范 SELECT操作规范 父主题: GaussDB(DWS)开发设计建议
建议5.1 避免使用复杂的存储过程,避免存储过程嵌套 违反规范的影响: 复杂和嵌套的存储过程维护成本高,故障定位难度大,恢复耗时长。 方案建议: 不使用存储过程或只使用一层存储过程,不嵌套。 开发存储过程设计对应的日志表,将关键步骤前后的信息记录到日志表中,操作步骤如下。 保存并查看日志操作步骤。
步骤5:测试新的表结构下的系统性能 重新创建了具有存储方式、压缩级别、分布方式和分布列的测试数据集后,重新测试系统性能。 记录各表的存储使用情况。 使用pg_size_pretty函数查询每张表使用的磁盘空间,并将结果记录到基准表中。 1 SELECT T_NAME, PG_SI
SQL开发规范 DDL操作规范 INSERT操作规范 UPDATE&DELETE操作规范 SELECT操作规范 父主题: GaussDB(DWS)开发设计规范
【关注】禁止在Java函数中使用任何方式连接数据库,包括但不限于JDBC。 【关注】只能选择下表中的数据类型,不支持自定义类型、复杂数据类型(Java Array类及派生类)等: 【关注】不支持UDAF(用户定义聚合函数)、UDTF(用户自定义表生成函数)。 表1 PL/Java默认数据类型映射关系 GaussDB(DWS)
建议5.1 避免使用复杂的存储过程,避免存储过程嵌套 违反规范的影响: 复杂和嵌套的存储过程维护成本高,故障定位难度大,恢复耗时长。 方案建议: 不使用存储过程或只使用一层存储过程,不嵌套。 开发存储过程设计对应的日志表,将关键步骤前后的信息记录到日志表中,操作步骤如下。 保存并查看日志操作步骤。
RELOAD设置了全局的GUC参数,需要重启应用侧连接池该参数才可以生效,因为该设置只针对新建的连接生效,针对连接池中原有的连接不生效。 规则1.6 应用侧使用连接池场景,如使用连接创建过临时表,当将连接归还连接池前,必须手动清理所创建的临时表 违反规则的影响: 连接被其他业务复用时,可能出现创建临时表报错问题。
避免同时对多个协同分析外表进行跨集群并发访问 原理说明:在A集群通过协同分析访问B集群数据时,A集群所有DN会与B集群CN建立连接和活跃会话。 违反规范的影响: B集群(远端集群)中CN压力过大,导致连接和活跃会话资源超限,访问异常。 方案建议: 应尽量使用外表单表访问并避免并发,避免多外表关联查
方案建议: 根据业务表数据量和数据特征设计合理的递归终止条件。 建议3.16 访问对象(表,函数等)时带上SCHEMA名称 违反规范的影响: 不指定SCHEMA名称前缀,实际会根据当前search_path中表空间列表,依次搜索所有表空间直到找到匹配的表作为目标表,可能因SCHEMA切换导致访问到非预期的表。
则会造成不可恢复的危害。 使用场景 传统数据库集群中,用户数据明文保存在行存/列存文件中,集群的维护人员或者恶意攻击者可在OS层面绕过数据库的权限控制机制或者窃取磁盘直接访问用户数据。GaussDB(DWS)通过对接华为云数据加密服务的密钥管理KMS,可实现数据的透明加密,保障用户数据安全。
RELOAD设置了全局的GUC参数,需要重启应用侧连接池该参数才可以生效,因为该设置只针对新建的连接生效,针对连接池中原有的连接不生效。 规则1.6 应用侧使用连接池场景,如使用连接创建过临时表,当将连接归还连接池前,必须手动清理所创建的临时表 违反规则的影响: 连接被其他业务复用时,可能出现创建临时表报错问题。
方案建议: 根据业务表数据量和数据特征设计合理的递归终止条件。 建议3.16 访问对象(表,函数等)时带上SCHEMA名称 违反规范的影响: 不指定SCHEMA名称前缀,实际会根据当前search_path中表空间列表,依次搜索所有表空间直到找到匹配的表作为目标表,可能因SCHEMA切换导致访问到非预期的表。
困难 对数据的归类分析往往涉及到对多张数据库表数据的同时访问, 即需要同时锁住多张可能正在被不同事务更新的表单。这对业务繁忙的数据库系统来说可能是一件非常困难的事情 。 一方面很难把多张表同时锁住,造成复杂查询的时延增加。 另一方面如果锁住了多张表,又会阻挡数据库表单更新的事务,造成业务的延时甚至中断。
row) POSIX正则表达式 正则表达式是一个字符序列,它是定义一个串集合 (一个正则集)的缩写。 如果一个串是正则表达式描述的正则集中的一员时, 那么就说这个串匹配该正则表达式。 POSIX正则表达式提供了比LIKE和SIMILAR TO操作符更强大的含义。表2列出了所有可用于POSIX正则表达式模式匹配的操作符。
DDL操作(CREATE除外)避免在业务高峰期和长事务中执行 违反规范的影响: DDL操作普遍持锁级别高,如ALTER、DROP、TRUNCATE、REINDEX、VACUUM FULL等,执行时会造成业务等锁阻塞。 高峰期执行持锁级别高的DDL操作,造成业务等锁阻塞。 长事务中执行持锁级别高的DDL操作,长时间持锁或等锁,均造成业务等锁阻塞。
总执行时间 - - 执行以下步骤测试优化前的系统性能,以建立基准。 将上一节记下的所有11张表的累计加载时间填入基准表的“优化前”一列。 记录各表的存储使用情况。 使用pg_size_pretty函数查询每张表使用的磁盘空间,并将结果记录到基准表中。 1 SELECT T_NAME,
替代 违反规范的影响: 多VALUES解析耗时、耗资源,入库效率低。 方案建议: 前端使用COPY类接口(如JDBC的CopyManger等)代替INSERT VALUES。 建议3.4 禁止针对普通列存表进行实时INSERT操作 违反规范的影响: 针对普通列存表实时小批量入库会
违反规范的影响: 针对列存表频繁执行UPDATE/DELETE造成CU膨胀,导致空间膨胀和访问性能下降。 针对列存表并发执行UPDATE/DELETE,导致行锁阻塞和分布式死锁风险,导致业务报错和性能下降。 方案建议: 频繁执行UPDATE/DELETE操作的表需设计为行存表。 按