zoukankan      html  css  js  c++  java
  • DRDS分库分表学习-如何高效扫描 DRDS 数据

    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)
    1. 非分库分表的表默认存储在第0个分库。

    2. 针对 TOPOLOGY 进行单表遍历。  

      • 第0个分库运行当前 SQL
      /!TDDL:node='DRDS_00_RDS'*/ SELECT * FROM DRDS_USERS;
      • 第1个分库运行当前 SQL
      /!TDDL:node='DRDS_01_RDS'*/ SELECT * FROM DRDS_USERS;

    注意:推荐每次扫描前执行 SHOW TOPOLOGY FROM TABLE_NAME 获取最新的表拓扑结构。

    若为分表,则 SQL 中的表名为分表名。

    比如:

    DRDS>SHOW TOPOLOGY FROM c_schedule
    +--------------+-----------------------------------------------+----------------------+
    | ID           | GROUP_NAME                                    | TABLE_NAME           |
    +--------------+-----------------------------------------------+----------------------+
    |            0 | ONE_www_ZyiZ_1586333425057BUHJ_VA8S_0000 | c_schedule      |
    +--------------+-----------------------------------------------+----------------------+
    返回行数: 1 耗时: 6.00 ms.
    DRDS>SHOW TOPOLOGY FROM cs_fb
    +--------------+-----------------------------------------------+----------------------+
    | ID           | GROUP_NAME                                    | TABLE_NAME           |
    +--------------+-----------------------------------------------+----------------------+
    |            0 | ONE_www_ZyiZ_1586333425057BUHJ_VA8S_0000 | cs_fb_ojR3_00        |
    |            1 | ONE_www_ZyiZ_1586333425057BUHJ_VA8S_0000 | cs_fb_ojR3_01        |
    |            2 | ONE_www_ZyiZ_1586333425057BUHJ_VA8S_0000 | cs_fb_ojR3_02        |
    |            3 | ONE_www_ZyiZ_1586333425057BUHJ_VA8S_0001 | cs_fb_ojR3_03        |
    |            4 | ONE_www_ZyiZ_1586333425057BUHJ_VA8S_0001 | cs_fb_ojR3_04        |
    |            5 | ONE_www_ZyiZ_1586333425057BUHJ_VA8S_0001 | cs_fb_ojR3_05        |
    |            6 | ONE_www_ZyiZ_1586333425057BUHJ_VA8S_0002 | cs_fb_ojR3_06        |
    |            7 | ONE_www_ZyiZ_1586333425057BUHJ_VA8S_0002 | cs_fb_ojR3_07        |
    |            8 | ONE_www_ZyiZ_1586333425057BUHJ_VA8S_0002 | cs_fb_ojR3_08        |
    |            9 | ONE_www_ZyiZ_1586333425057BUHJ_VA8S_0003 | cs_fb_ojR3_09        |
    |           10 | ONE_www_ZyiZ_1586333425057BUHJ_VA8S_0003 | cs_fb_ojR3_10        |
    |           11 | ONE_www_ZyiZ_1586333425057BUHJ_VA8S_0003 | cs_fb_ojR3_11        |
    |           12 | ONE_www_ZyiZ_1586333425057BUHJ_VA8S_0004 | cs_fb_ojR3_12        |
    |           13 | ONE_www_ZyiZ_1586333425057BUHJ_VA8S_0004 | cs_fb_ojR3_13        |
    |           14 | ONE_www_ZyiZ_1586333425057BUHJ_VA8S_0004 | cs_fb_ojR3_14        |
    |           15 | ONE_www_ZyiZ_1586333425057BUHJ_VA8S_0005 | cs_fb_ojR3_15        |
    |           16 | ONE_www_ZyiZ_1586333425057BUHJ_VA8S_0005 | cs_fb_ojR3_16        |
    |           17 | ONE_www_ZyiZ_1586333425057BUHJ_VA8S_0005 | cs_fb_ojR3_17        |
    |           18 | ONE_www_ZyiZ_1586333425057BUHJ_VA8S_0006 | cs_fb_ojR3_18        |
    |           19 | ONE_www_ZyiZ_1586333425057BUHJ_VA8S_0006 | cs_fb_ojR3_19        |
    |           20 | ONE_www_ZyiZ_1586333425057BUHJ_VA8S_0006 | cs_fb_ojR3_20        |
    |           21 | ONE_www_ZyiZ_1586333425057BUHJ_VA8S_0007 | cs_fb_ojR3_21        |
    |           22 | ONE_www_ZyiZ_1586333425057BUHJ_VA8S_0007 | cs_fb_ojR3_22        |
    |           23 | ONE_www_ZyiZ_1586333425057BUHJ_VA8S_0007 | cs_fb_ojR3_23        |
    +--------------+-----------------------------------------------+----------------------+
    返回行数: 24 耗时: 18.00 ms.

    查询:

    /!TDDL:node='ONE_www_ZyiZ_1586333425057BUHJ_VA8S_0006'*/ SELECT * FROM cs_fb_ojR3_19 ;

    计算表的方法:比如:

    select (2020*12+3)%8

    2020为年,年*12,加上月份3,再除以物理库8个。

  • 相关阅读:
    Studio之版本管理工具Git (图文教程)
    studio adb连接不上手机 ADB server didn't ACK
    studio-引入外来包
    TextView的属性列表
    java_ _反射
    SDcard进行文件的读取
    资源文件assets和 res下面raw文件的使用不同点
    android的照片浏览器(一)至返回所有图片文件
    使ViewStub 来提高UI的加载的性能
    安卓优化--
  • 原文地址:https://www.cnblogs.com/puzi0315/p/12667205.html
Copyright © 2011-2022 走看看