DRDS 支持高效的数据扫描方式,并支持在全表扫描时使用聚合函数进行统计汇总。
常见的扫描场景如下:
没有分库分表: DRDS 会把原 SQL 传递到后端 MySQL 执行。这种情况下 DRDS 支持任何聚合函数。
非全表扫描:SQL 经过 DRDS 路由后,发送到单个 MySQL 库上执行。比如说拆分键在 WHERE 中是等于关系时,就会出现非全表扫描。此时同样可以支持任何聚合函数。
全表扫描:目前支持的聚合函数有 COUNT、MAX、MIN、SUM。另外在全表扫描时同样支持 LIKE、ORDER BY 、LIMIT 以及 GROUP BY 语法。
并行的全表扫描:如果需要从所有库导出数据,可以通过 SHOW 指令查看表拓扑结构,针对分表并行处理。详见下文。
执行 SHOW TOPOLOGY FROM TABLE_NAME 指令获取表拓扑结构。
mysql:> SHOW TOPOLOGY FROM DRDS_USERS; +------+-------------------+--------------+ | ID | GROUP_NAME | TABLE_NAME | +------+-------------------+--------------+ | 0 | DRDS_00_RDS | drds_users | | 1 | DRDS_01_RDS | drds_users | +------+-------------------+--------------+ 2 rows in set (0.06 sec)
非分库分表的表默认存储在第0个分库。
针对 TOPOLOGY 进行单表遍历。
/!TDDL:node=‘DRDS_00_RDS‘*/ SELECT * FROM DRDS_USERS;
/!TDDL:node=‘DRDS_01_RDS‘*/ SELECT * FROM DRDS_USERS;
注意:推荐每次扫描前执行 SHOW TOPOLOGY FROM TABLE_NAME 获取最新的表拓扑结构。
若为分表,则 SQL 中的表名为分表名。
原文:https://www.cnblogs.com/puzi0315/p/12667205.html