本文介绍逻辑表查询的操作步骤。
背景信息
-
分库分表后,需要快速地查询单个分表或查询多个分表并返回结果,可以对使用者屏蔽人为寻找分库、分表场景。用户最终使用查询操作都是被当做单个表查询,这样的操作相对较透明,也符合用户当下的诉求。
-
数据管理DMS基于产品内的
逻辑库、逻辑表的聚合实现了透明化的逻辑表查询操作。
操作步骤
-
选择
逻辑库进行相关的查询与导出操作。您可先尝试写入数据,无路由配置时只支持查询SELECT、UPDATE、DELETE语句,不支持INSERT语句。此时执行 INSERT 语句将报错:
[Error] dsql.DSQLException: 未找到分表路由,无法执行,请确保对应的逻辑表配置了路由算法。 -
配置路由算法。此处以简单取模为例,复杂算法配置步骤,请参见配置路由算法。
在新建算法对话框中,设置算法类型为单列取模,取模方式为简单取模,分表字段为user_id (bigint),模数为
128,然后单击保存。 -
使用
INSERT语句插入值。例如,执行
INSERT INTO scend_test(gmt_create,gmt_modified,user_id) VALUES (now(),now(),2);向scend_test表插入一条记录,执行成功后结果区域显示绿色对勾。 -
进行快速查询。
-
配置了路由算法后,带路由字段则可以快速查询指定物理表(免去人为计算、切换物理库表的操作)。在 DMS 的 SQLConsole 中执行 SQL 语句
SELECT * FROM,以路由字段scend_testWHEREuser_id= 4user_id作为查询条件。执行日志显示逻辑表scend_test被路由到物理分表poc_dev.scend_test_000。 -
查询结果会额外提供一个字段表示数据来源的数据库、表信息,单击则可以跳转至对应的物理库表并带入查询SQL与查询条件信息。例如,执行 SQL 语句
SELECT * FROM,查询结果中数据坐标列显示为scend_testWHEREuser_id= 1poc_dev.scend_test_000,表明数据已被路由至对应的物理分表,返回一条匹配记录。 -
查询也可以不带路由字段作为条件,进行全表(所有分表)扫描查询操作,如汇总统计 。
说明同时也支持
GROUP BY等语法操作,其他SQL语法操作与数据库源语法支持基本一致,但目前不支持子查询操作。例如,在 SQL Console 中执行
SELECT COUNT(*) FROM,返回结果为 1,表示该表共有 1 条记录。scend_test;
-