注意
该功能仅白名单用户可见。
仅V5.1.9.6020.2541及以后版本的实例,支持该功能。
该功能尚在小范围公测中,请注意评估功能可能带来的风险并谨慎使用。
复杂查询引擎(TeleMatrix)
随着数据规模增长与业务逻辑复杂化,DBProxy原有的计算能力已难以支撑业务需求。它主要解决分库分表路由、读写分离等OLTP(OnLine Transaction Processing,联机事务处理)场景,存在以下难点:
对跨节点JOIN、分布式聚合等复杂分析查询执行能力有限。
OLAP(OnLine Analytical Processing,联机分析处理)查询往往涉及大量数据的扫描与复杂聚合,易占用大量资源,若与OLTP任务混合运行,将导致生产环境的事务性能下降。
为此,DRDS新增复杂查询引擎(TeleMatrix),用于专门处理OLAP请求。在架构上,用户SQL统一由DBProxy接收,作为系统唯一入口以保障安全与可控。DBProxy会根据SQL复杂度进行智能路由:
简单查询由其快速执行以保障低延迟。
复杂查询则转发至Telemarix进行深度优化与执行,从而确保分析查询的高效与准确。
通过将计算密集型任务转发至专用的复杂查询引擎,实现了计算资源隔离,可以有效防止复杂查询阻塞简单查询通道。同时,该架构还具备良好的扩展性:
DBProxy可部署多实例以实现负载均衡与高可用。
复杂查询引擎亦可独立横向扩展,从而灵活应对业务增长,持续增强企业的数据分析能力。
约束限制
不支持库内分桶和库内分表类型的表。
只保证分布式事务的最终一致性。
不支持用户变量。
Telemarix不支持DDL和DML语句,该类语句由DBProxy直接执行。
由于Telemarix占用资源较高,目前仅支持8C16G及以上的DRDS实例使用复杂查询引擎。
注意事项
由于Telemarix与DBProxy部署在同一个节点,因此,请合理分配复杂查询引擎和DBProxy的内存比例。
复杂查询支持的分片表算法包括:(整数)取模(PartitionByMod)、字符串HashCode取模(PartitionByStringMod)、枚举(PartitionByFileMap)、时间范围(PartitionByDateRange)、枚举分组取模分片(PartitionByEnumAndMod)、枚举分组字符串HashCode取模分片(PartitionByEnumAndStringMod)和数值范围(PartitionByIntRange)。
说明
详细算法说明,请参见分片算法。
由于使用DBProxy作为统一入口,Telemarix支持的SQL语句也需要遵守DBProxy的约束限制。具体请参见开发限制和数据类型。
开启复杂查询引擎
注意
开启复杂查询引擎前,请确保已为DRDS实例关联MySQL实例。
在天翼云官网首页的顶部菜单栏,选择产品 > 数据库 > 关系型数据库 > 分布式关系型数据库,进入分布式关系型数据库产品页面。然后单击管理控制台,进入概览页面。
在左侧导航栏,选择DRDS > 实例管理,进入实例列表页面。然后在顶部菜单栏,选择区域和项目。
在实例列表中,找到目标实例,单击操作列的管理,进入实例基本信息页面。
单击计算节点管理,进入计算节点页面。
在计算节点列表中,找到目标节点,然后在操作列选择更多 > 部署复杂查询。
此时,目标节点的复杂查询状态为未初始化。
在提示框中,单击我已知晓。
当目标节点的复杂查询状态从初始化中变更为已开启时,表示复杂查询引擎已就绪。
关闭复杂查询引擎
当您不再需要使用复杂查询引擎时,您可以在控制台关闭复杂查询引擎,操作步骤如下:
在天翼云官网首页的顶部菜单栏,选择产品 > 数据库 > 关系型数据库 > 分布式关系型数据库,进入分布式关系型数据库产品页面。然后单击管理控制台,进入概览页面。
在左侧导航栏,选择DRDS > 实例管理,进入实例列表页面。然后在顶部菜单栏,选择区域和项目。
在实例列表中,找到目标实例,单击操作列的管理,进入实例基本信息页面。
单击计算节点管理,进入计算节点页面。
在计算节点列表中,找到目标节点,然后在操作列选择更多 > 关闭复杂查询。
等待后台执行完毕,目标节点的复杂查询状态将从已开启变更为关闭。
查看SQL路由
您可以使用route/route2命令查看开启复杂查询引擎后的SQL路由,其中,开启复杂查询引擎后,datanode参数将会增加TeleMatrix节点名称以标记路由到TeleMatrix节点,示例如下:
说明
您还可以通过UDAL SHOW MATRIXNODE命令查看TeleMatrix节点信息,请参见SHOW。
开启复杂查询引擎前:
开启复杂查询引擎后: