阅读562 返回首页    go 阿里云


遍历全表操作__开发手册_分布式关系型数据库 DRDS-阿里云

DRDS 在全表扫描时支持聚合函数进行统计汇总,目前全表扫描默认是关闭的,需要您显示的通过配置打开,因为我们认为默认关闭对于您而言,性能更可控。 具体的配置方式,您可以访问我们提供的运维管理平台,找到对应的表后进行配置:

1) 如果目标表没有分库分表,那么 DRDS 可以支持任何聚合函数,因为实际上 DRDS 是直接把原 SQL传递到后端 MySQL 执行。

2) 非全表扫描:SQL语句在经过 DRDS 路由后,直接发送到后端单个 MySQL 库上执行。如果拆分键在 WHERE 条件中都是 = 关系,常会出现这种情况。在非全表扫描的情形下,同样可以支持任何聚合函数。

3) 全表扫描:目前支持的聚合函数有 COUNT, MAX, MIN, SUM, 另外在全表扫描时同样支持 LIKE, ORDER BY 与 LIMIT 语法, 但是不支持 GROUP BY 语法。

4) 并行的全表扫描:在一些时候您可能希望直接从所有库上面dump数据到其他地方,我们也提供了方法可以允许您感知到当前下层有多少个库,并允许您单独的针对这些库进行操作。

第一步 获取当前总的库表个数

  1. mysql:> show topology from tddl_users;
  2. +------+--------------------------+---------------------+
  3. | ID | GROUP_NAME | TABLE_NAME |
  4. +------+--------------------------+---------------------+
  5. | 0 | DRDS_00_RDS | drds_users |
  6. | 1 | DRDS_01_RDS | drds_users |
  7. +------+--------------------------+--------------------+

第二步 针对topology进行单表遍历

如:我想进行第一个表的查询,那么可以运行

  1. /*TDDL:node='DRDS_00_RDS'*/ select * from drds_users;

即可在第0个库运行当前SQL

  1. /*TDDL:node='DRDS_01_RDS'*/ select * from drds_users;

即可在第1个库运行当前SQL

需要注意的是,这个库的个数可能会因为进行扩容等情况随时的发生变化,我们不保证这些GROUPS的名字一定是永远固定不变的,所以请务必每次都先运行show topology from table语句来获得最新的表拓扑。

最后更新:2016-11-23 17:31:29

  上一篇:go 全局唯一数字序列使用__开发手册_分布式关系型数据库 DRDS-阿里云
  下一篇:go DRDS自定义注释__开发手册_分布式关系型数据库 DRDS-阿里云