最后,说几个槽点吧。
1. DTS任务出现了重复的作业ID
按理说,这个任务ID应该是唯一的吧?
在原来的那个任务上,停止任务后,多点几次"重新配置同步",就会出现重复的ID了。
2. 无主键的表同步数据时,会自动删除重复数据
创建测试表,插入3条测试数据,其中有2条是重复的。
# 创建一个没有主键的测试表 [testabc]> CREATE TABLE t1 ( id int(11) DEFAULT NULL, c1 varchar(20) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; [testabc]> insert into t1 select 1,'c1'; [testabc]> insert into t1 select 2,'c2'; [testabc]> insert into t1 select 2,'c2'; -- 重复数据 [testabc]> select * from t1; +------+------+ | id | c1 | +------+------+ | 1 | c1 | | 2 | c2 | | 2 | c2 | -- 重复数据 +------+------+
配置DTS同步任务,选择id列作为主键。
DTS任务报告共有3条数据,同步时没任何重复(冲突)的报错(提醒)。
但是在ADB库,则只能查到两条数据。
记得RDS有个特性就是可以帮客户自动隐式创建内置主键(如果用户表没显式定义主键的话),这时候就应该用于DTS呀,白瞎了这功能。
3. 删数据太慢测试删除500万数据,期间几次观测计算,每秒删除数据量约 2673 条。跑了几百秒之后,删了200万数据,忍不住了,终止删除任务。
4. 看似简单的SQL语法也不支持
有几个测试SQL中,有用到AS别名列语法,但发现并不支持,例如下面这个:
SELECT sum(LO_REVENUE), Year(LO_ORDERDATE) AS year, P_BRAND FROM lineorder_flat WHERE P_BRAND >= 'MFGR#2221' AND P_BRAND <= 'MFGR#2228' AND S_REGION = 'ASIA' GROUP BY year, P_BRAND ORDER BY year, P_BRAND;
运行时并不会报错,但下面这个SQL就会报错了
SELECT C_CITY, S_CITY, Year(LO_ORDERDATE) AS year, sum(LO_REVENUE) AS revenue FROM lineorder_flat WHERE (C_CITY = 'UNITED KI1' OR C_CITY = 'UNITED KI5') AND (S_CITY = 'UNITED KI1' OR S_CITY = 'UNITED KI5') GROUP BY C_CITY, S_CITY, year ORDER BY year ASC, revenue DESC;
报错内容见下
失败原因: [20038, 2020040418065317201906308103453830416] : line 0:1: Column 'year' cannot be resolved
看起来在WHERE条件中,不能用到别名列,但在GROUP BY和ORDER BY可以,略诡异。
5. 基本功能异常
在ADB的集群信息,点"管理DTS任务"链接,新打开页面异常。
或者,在日常刷新页面时,弹出这个提醒
全文完。