开发者社区 > PolarDB开源 > PolarDB 分布式版 > 正文

开启列存节点没开启行存支持 PolarDB请求会回退到行存节点执行吗?

下面这种语法如果对应的语句字段没加列存的话 我请求路由到列存节点了 开启列存节点没开启行存支持 PolarDB请求会回退到行存节点执行吗?HINT 列存执行:/+ SET_VAR(cost_threshold_for_imci=0) SET_VAR(imci_ap_threshold=0) /
HINT 行存执行:/+ SET_VAR(use_imci_engine=OFF) /

展开
收起
三分钟热度的鱼 2023-12-28 20:02:19 59 0
3 条回答
写回答
取消 提交回答
  • 在PolarDB中,如果您的语法对应的语句字段没有添加列存,并且您已经将请求路由到了列存节点,但是该列存节点没有开启行存支持,那么根据PolarDB的内部处理机制,请求可能会遇到问题。

    通常情况下,如果一个查询无法在列存上执行,而目标节点又不支持行存,PolarDB可能会有以下几种处理方式:

    1. 如果系统设置允许或者存在回退机制,请求可能被自动转发到支持行存的节点进行执行。
    2. 如果没有自动回退机制或者回退功能未开启,查询可能会失败,并返回错误信息,提示无法在当前节点上执行该查询。

    在您提供的HINT语法中:

    • HINT 列存执行:/+ SET_VAR(cost_threshold_for_imci=0) SET_VAR(imci_ap_threshold=0) / 这个HINT是用于强制或优化在列存上的执行。
    • HINT 行存执行:/+ SET_VAR(use_imci_engine=OFF) / 这个HINT则是用于强制在行存上执行查询。

    然而,这些HINT并不能解决列存节点未开启行存支持的问题。在实际操作中,您需要确保数据和节点配置能够支持您的查询需求。如果列存节点未开启行存支持,而查询又无法在列存上执行,那么可能需要调整节点配置、数据存储策略或者查询语句以适应系统的当前配置。

    2023-12-29 14:15:20
    赞同 展开评论 打赏
  • 集群地址的话,现在都是默认先到行存节点,如果决定走列存再路由到列存节点。 你这种场景下无法列存执行,会直接在行存节点执行,HINT不会起作用的。此回答整理自钉群“PolarDB 专家面对面 - 慢SQL索引选择优化器新特性”

    2023-12-28 20:34:29
    赞同 展开评论 打赏
  • 十分耕耘,一定会有一分收获!

    楼主你好,当使用列存节点进行请求时,只会在列存节点上执行查询操作并返回结果,而不会回退到行存节点执行,即使使用HINT语法指定行存执行,也不会触发回退到行存节点执行的操作。

    在PolarDB中,开启列存节点后,查询请求会通过内部的路由机制根据查询语句的特征选择合适的存储引擎进行处理。

    2023-12-28 20:34:16
    赞同 展开评论 打赏

PolarDB 分布式版 (PolarDB for Xscale,简称“PolarDB-X”) 是阿里云自主设计研发的高性能云原生分布式数据库产品,为用户提供高吞吐、大存储、低延时、易扩展和超高可用的云时代数据库服务。

相关电子书

更多
云栖大会:开源 PolarDB 架构演进、关键技术与社区建设 立即下载
2023云栖大会:和客户一起玩转PolarDB新特性 立即下载
2023云栖大会:PolarDB for AI 立即下载