逻辑表查询

更新时间:
复制为 MD 格式

本文介绍逻辑表查询的操作步骤。

背景信息

  • 分库分表后,需要快速地查询单个分表或查询多个分表并返回结果,可以对使用者屏蔽人为寻找分库、分表场景。用户最终使用查询操作都是被当做单个表查询,这样的操作相对较透明,也符合用户当下的诉求。

  • 数据管理DMS基于产品内的逻辑库逻辑表的聚合实现了透明化的逻辑表查询操作。

操作步骤

  1. 选择逻辑库进行相关的查询与导出操作。您可先尝试写入数据,无路由配置时只支持查询SELECTUPDATEDELETE语句,不支持INSERT语句。

    此时执行 INSERT 语句将报错:[Error] dsql.DSQLException: 未找到分表路由,无法执行,请确保对应的逻辑表配置了路由算法

  2. 配置路由算法。此处以简单取模为例,复杂算法配置步骤,请参见配置路由算法

    新建算法对话框中,设置算法类型单列取模取模方式简单取模分表字段user_id (bigint)模数128,然后单击保存

  3. 使用INSERT语句插入值。

    例如,执行INSERT INTO scend_test(gmt_create,gmt_modified,user_id) VALUES (now(),now(),2);scend_test表插入一条记录,执行成功后结果区域显示绿色对勾。

  4. 进行快速查询。

    • 配置了路由算法后,带路由字段则可以快速查询指定物理表(免去人为计算、切换物理库表的操作)。在 DMS 的 SQLConsole 中执行 SQL 语句 SELECT * FROM scend_test WHERE user_id = 4,以路由字段 user_id 作为查询条件。执行日志显示逻辑表 scend_test 被路由到物理分表 poc_dev.scend_test_000

    • 查询结果会额外提供一个字段表示数据来源的数据库、表信息,单击则可以跳转至对应的物理库表并带入查询SQL与查询条件信息。例如,执行 SQL 语句 SELECT * FROM scend_test WHERE user_id = 1,查询结果中数据坐标列显示为 poc_dev.scend_test_000,表明数据已被路由至对应的物理分表,返回一条匹配记录。

    • 查询也可以不带路由字段作为条件,进行全表(所有分表)扫描查询操作,如汇总统计 。

      说明

      同时也支持GROUP BY等语法操作,其他SQL语法操作与数据库源语法支持基本一致,但目前不支持子查询操作。

      例如,在 SQL Console 中执行 SELECT COUNT(*) FROM scend_test;,返回结果为 1,表示该表共有 1 条记录。