检测到您已登录华为云国际站账号,为了您更好的体验,建议您访问国际站服务网站 https://www.huaweicloud.com/intl/zh-cn
不再显示此消息
GaussDB(DWS)支持Oracle、Teradata和MySQL数据库兼容模式。 在TD/MySQL兼容模式下,空和NULL是不相等的,在ORA兼容模式下,空和NULL是相等的。因此上述场景可能是因为两个环境中数据库的兼容性模式设置不一致导致。 可通过查询PG_DATABASE系统表确认数据库的兼容模式:
TINYBLOB BYTEA(列存)/BLOB(非列存) 空字符串 BLOB BYTEA(列存)/BLOB(非列存) 空字符串 MEDIUMBLOB BYTEA(列存)/BLOB(非列存) 空字符串 LONGBLOB BYTEA(列存)/BLOB(非列存) 空字符串 CHAR BYTE(BINARY)
MODIFY修改列 MySQL使用MODIFY关键字修改列数据类型、设置非空约束。DSC工具迁移时会根据GaussDB(DWS)的特性进行相应适配。 输入示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 CREATE
CHANGE修改列 MySQL使用CHANGE关键字同时修改列名、列数据类型、设置非空约束。DSC工具迁移时会根据GaussDB(DWS)的特性进行相应适配。 输入示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
除法表达式 MySQL中,除法表达式中,当除数为0时,会返回null值。DWS会报错,因此对除法表达式进行转换,增加一个if条件表达式。 输入示例 1 2 select sum(c1) / c2 as result from table_t1; select sum(c1) / count
MySQL配置 设置MySQL配置参数可在迁移MySQL数据库脚本时自定义迁移工具的行为。 打开config文件夹中的features-mysql.properties文件,并根据实际需要设置features-mysql.properties文件中的配置参数中的参数。 表1 features-mysql
添加与删除列 MySQL添加、删除列语句与GaussDB(DWS)存在差异。DSC工具迁移时会根据GaussDB(DWS)的特性进行相应适配。 GaussDB不支持表定义中列序数的变更,工具暂不支持FRIST,AFTER特性的完整迁移。基于当前的临时方案,工具仅仅移除该关键字。 输入示例
设置与清除列默认值 MySQL使用ALTER语句设置列默认值时可省略“COLUMN”关键字。DSC工具迁移时会根据GaussDB(DWS)的特性进行相应适配。 输入示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 CREATE
MySQL SQL迁移 工具支持从MySQL到GaussDB(DWS)的迁移,包括模式、DML、查询、系统函数、PL/SQL等。 在LINUX中执行MySQL迁移 在Linux中执行以下命令开始迁移。用户需指定源数据库、输入和输出文件夹路径和日志路径;应用程序语言类型是SQL。
通过CDM将MySQL数据导入GaussDB(DWS)时出现字段超长,数据同步失败 问题现象 MySQL 5.x版本字段长度varchar(n),用CDM同步数据到GaussDB(DWS),同样设置长度为varchar(n) ,但是会出现字段超长,数据同步失败的问题。 原因分析 MySQL5
GROUP BY转换 MySQL/ADB分组查询的时候允许查询非分组字段,不报错;DWS分组查询时只能查询分组字段和聚集函数,报错。因此补齐没有group by的查询分组字段。 输入示例 1 SELECT e.department_id, department_name, ROUND(AVG(salary)
TopSQL查询示例 本章节以查询TPC-DS样例数据的作业为例,演示如何查看实时TopSQL和历史TopSQL。 配置集群参数 查询TopSQL资源监控信息之前,需要先配置相关的GUC参数,以便能查询到作业的资源监控历史信息或归档信息。步骤如下: 登录GaussDB(DWS)管理控制台。
行列存压缩 GaussDB(DWS)中,只支持列存表压缩功能,暂不支持行存表压缩功能。优化行列存压缩机制,DSC工具迁移时会根据GaussDB(DWS)的特性进行相应适配。 压缩参数 : table.compress.mode创建新表时,需要在CREATE TABLE语句中指定关
在一些实际应用场景中,如果通过业务逻辑已确认两个集合不存在重叠,可用union all替代union以便提升性能。 join列增加非空过滤条件 若join列上的NULL值较多,则可以加上is not null过滤条件,以实现数据的提前过滤,提高join效率。 not in转not
UPDATE "public"."employees" SET "department_id" = 2; ORDER BY 如果一个MySQL UPDATE语句包含一个 ORDER BY子句,则这些行将按照该子句指定的顺序更新。 输入示例 1 2 # 测试 ORDER BY 语法点 UPDATE
执行计划如图1所示。 图1 增加JOIN列非空条件(一) 优化后 分析执行计划图1可知,在顺序扫描阶段耗时较多。 多表JOIN中,由于表PS.SDR_WEB_BSCRNC_1DAY的JOIN列“BSCRNC_ID”存在大量空值,JOIN性能差。 建议在语句中手动添加JOIN列的非空判断,修改后的语句如下所示。
ts_rewrite的这种形式接受一个起始查询和SQL查询命令。 这里的查询命令是文本字串形式,必须产生两个tsquery列。查询结果的每一行,第一个字段的值(目标子查询) 都会被第二个字段(替代子查询)替换。 当多个规则需要重写时,重写顺序非常重要; 因此在实践中需要使用ORDER BY将源查询按照某些字段进行排序。
s = 0时,返回空串。 substring(str, s[, n]) substring(str [from s] [for n]) s = 0时,返回前n - 1个字符 s < 0时,返回前s + n - 1个字符 n < 0时,报错。 s = 0时,返回前n - 1个字符。
执行计划如图1所示。 图1 增加JOIN列非空条件(一) 优化后 分析执行计划图1可知,在顺序扫描阶段耗时较多。 多表JOIN中,由于表PS.SDR_WEB_BSCRNC_1DAY的JOIN列“BSCRNC_ID”存在大量空值,JOIN性能差。 建议在语句中手动添加JOIN列的非空判断,修改后的语句如下所示。
未分区剪枝导致SQL查询慢 问题现象 SQL语句查询慢,查询的分区表总共185亿条数据,查询条件中没有涉及分区键。 1 2 SELECT passtime FROM table where passtime<'2020-02-19 15:28:14' and passtime>'2020-02-18