问题一:PolarDB行列存节点的路由不是通过proxy路由的 是节点内部的路由吗?
PolarDB行列存节点的路由不是通过proxy路由的 是节点内部的路由吗?
参考回答:
proxy 来路由的。
关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/584094
问题二:开启列存节点没开启行存支持 PolarDB请求会回退到行存节点执行吗?
下面这种语法如果对应的语句字段没加列存的话 我请求路由到列存节点了 开启列存节点没开启行存支持 PolarDB请求会回退到行存节点执行吗?HINT 列存执行:/+ SET_VAR(cost_threshold_for_imci=0) SET_VAR(imci_ap_threshold=0) /
HINT 行存执行:/+ SET_VAR(use_imci_engine=OFF) /
参考回答:
集群地址的话,现在都是默认先到行存节点,如果决定走列存再路由到列存节点。 你这种场景下无法列存执行,会直接在行存节点执行,HINT不会起作用的。
关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/584093
问题三:PolarDB这个sql行存和列存性能差别好大 ,为什么?
PolarDB这个sql行存和列存性能差别好大 ,为什么? 行存24 rows in set (0.03 sec) 走列存 24 rows in set (4.32 sec)
SELECT
sdt.produce_id,
sdt.customer_id,
sel.company_name AS company_name_m,
sel.prefix_domain_name,
sdt.products_id,
sdt.products_name_en,
sdt.products_url_name,
SUBSTR(sdt.category_id, 1, 3) AS category_id_lv1,
sdt.produce_cas_no AS cas_no,
sdt.produce_name,
sdt.produce_url_name,
sdt.goods_picture_s,
sdt.goods_picture_m AS goods_picture,
sdt.goods_picture_b,
sdt.complete_flag,
sdt.hot_flag,
sdt.main_flag,
sdt.grade_name,
sdt.content,
sdt.package_name,
sdt.n_price_type,
sdt.n_price_trade_term_type,
sdt.n_price_trade_term_text,
sdt.n_price,
sdt.n_price_unit,
sdt.n_price_currency,
sdt.n_price_currency_symbol,
CASE
WHEN CEILING(IFNULL(sdt.n_min_price, 0)) = 0 THEN '0'
WHEN sdt.n_price_end_date < CURRENT_DATE() THEN '0'
ELSE '1'
END AS n_pending_flag,
sdt.activity_id,
sdt.activity_type,
sdt.a_price_trade_term_type,
sdt.a_price_trade_term_text,
sdt.a_price,
sdt.a_price_unit,
sdt.a_price_currency,
sdt.a_price_currency_symbol,
sdt.n_price_loading_port_name,
sdt.brand_name,
CASE
WHEN IFNULL(sel.company_type, '') = '' THEN ''
ELSE CONCAT(
'typedefine.VERIFICATION_COMPANY_TYPE.',
sel.company_type
)
END AS company_type_m,
sel.country_name AS country_name_m
FROM
t_e_all_produce_v1 sdt STRAIGHT_JOIN t_e_all_seller_v1 sel ON sdt.customer_id = sel.customer_id
WHERE
sdt.customer_id = 'us20231121102443902'
AND sdt.delflag = '0'
AND sel.delflag = '0'
ORDER BY
sdt.complete_flag DESC,
sdt.main_flag DESC,
sdt.activity_id DESC,
sdt.hot_flag DESC,
sdt.produce_update_date DESC
LIMIT
1176, 24;
参考回答:
这个是因为 ORDER BY LIMIT 的执行效率取决于数据分布和条件。在行存是按照顺序去扫描数据的,如果前面的数据满足条件的多就直接返回了,效率很高;如果满足条件的数据都在顺序的最末尾,就会执行很长时间。所以优化器估算的代价和实际执行的时间会有不准的情况
这个特定条件,你可以通过 HINT 去指定行存或者列存执行。后续8.0.2会针对这种场景发布动态执行的能力,能够自动解决这个问题 。HINT 列存执行:/+ SET_VAR(cost_threshold_for_imci=0) SET_VAR(imci_ap_threshold=0) /
HINT 行存执行:/+ SET_VAR(use_imci_engine=OFF) /
关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/584092
问题四:优化器对索引一般会有一个阈值,这个PolarDB这个阈值是多少,可调节吗?
优化器对索引一般会有一个阈值,如果超过阈值可能会认为全表扫描代价更小,这个PolarDB这个阈值是多少,可调节吗?
参考回答:
优化器选索引时一般是根据代价估算的,选择代价相对最小的,如果走主键索引/全表扫描的代价低于二级索引加回表的代价,会选择主键索引/全表扫描。推荐您一个Outline图形化工具https://zhuanlan.zhihu.com/p/662080419?utm_psn=1720378894861836288
关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/584091
问题五:PolarDB控制台这个位置调整并行度需要新建连接才生效吗?
PolarDB控制台这个位置调整并行度需要新建连接才生效吗?
参考回答:
是的,新建链接才生效。
关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/584090