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数据到其他地方,我们也提供了方法可以允许您感知到当前下层有多少个库,并允许您单独的针对这些库进行操作。

 

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

运行sql:show topology from tddl_users;

得到结果

+------+--------------------------+---------------------+
| ID   | GROUP_NAME     | TABLE_NAME |
+------+--------------------------+---------------------+
|    0 | DRDS_00_RDS       | drds_users      |

|    1 | DRDS_01_RDS       | drds_users      |
+------+--------------------------+--------------------+

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

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

/!+TDDL({'type':'direct','dbid':' DRDS_00_RDS '})*/ select * from drds_users;

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

/!+TDDL({'type':'direct','dbid':' DRDS_01_RDS '})*/ select * from drds_users;

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

 

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

  1. da shang
    donate-alipay
               donate-weixin weixinpay

发表评论↓↓