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

在PolarDB中,有什么办法让走列存呢,比如说修改什么参数?

有个order by+limit的查询 last_query_cost_for_imci 比较小走了行存,但查询用时6秒以上比较慢,有什么办法让走列存呢,比如说修改什么参数?

展开
收起
小小爱吃香菜 2024-01-02 23:07:22 64 0
5 条回答
写回答
取消 提交回答
  • 问题一:对于使用ORDER BY和LIMIT的查询,如果last_query_cost_for_imci比较小但查询执行时间较长,让查询走列存可能有助于提高性能。但是,是否让查询走列存并不仅仅取决于查询的成本,还与查询的特性、数据分布和存储引擎的配置有关。

    在PolarDB中,是否使用列存优化器(imci)是由优化器自动决定的。优化器会根据查询的成本和统计信息来选择最适合的执行计划。通常情况下,优化器会尝试选择成本最低的执行计划,但并不一定总是选择列存。

    要改变查询的执行计划,你可以尝试以下方法:

    1.优化查询:重新编写或调整查询,使其更适合列存。例如,避免使用ORDER BY和LIMIT等可能导致全表扫描的操作。
    2.调整存储引擎配置:在某些情况下,可以通过调整存储引擎的配置来影响优化器的行为。例如,你可以尝试调整与存储引擎相关的参数,如内存分配、缓存大小等,以改善性能。
    3.使用索引:确保查询中涉及的列都有适当的索引,这有助于提高查询性能并使优化器更容易选择列存。

    问题二:至于是否在控制台中修改loose_imci_optimizer_switch参数,这取决于你的具体需求和场景。这个参数可能与列存优化器的行为有关,但并不是所有的场景都需要或适合修改这个参数。

    2024-01-03 13:11:42
    赞同 展开评论 打赏
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    问题一:要让查询走列存,可以尝试修改以下参数来优化查询性能:

    1. 设置合适的排序缓冲区大小(sort_buffer_size):增加排序缓冲区的大小可以提高排序操作的效率。可以通过调整该参数的值来优化查询的排序操作。

    2. 启用并行查询(enable_parallel_execution):通过并行执行查询操作,可以加快查询的速度。可以尝试启用并行查询功能来提高查询效率。

    3. 调整行存储和列存储的选择策略(loose_imci_optimizer_switch):该参数用于控制是否使用基于代价模型的优化器选择行存储或列存储。可以尝试修改该参数的值来让查询更倾向于使用列存储。

    需要注意的是,具体的优化策略需要根据实际情况进行评估和调整。建议在实施之前先进行性能测试和分析,以确定最适合的优化方案。

    问题二:是的,可以在控制台中的参数配置里修改 loose_imci_optimizer_switch 参数来控制是否使用基于代价模型的优化器选择行存储或列存储。可以尝试修改该参数的值来让查询更倾向于使用列存储。

    2024-01-03 13:06:46
    赞同 展开评论 打赏
  • 问题一:
    要让查询走列存,可以尝试以下方法:

    1. 增加loose_imci_optimizer_switch参数的值。该参数控制是否开启IMC优化器,默认值为0,表示关闭。将其设置为1可以启用IMC优化器,从而让查询更倾向于使用列存。
    2. 调整max_parallel_degree参数的值。该参数控制并行度,即同时执行的查询任务数。增加该值可以提高并发处理能力,从而加快查询速度。
    3. 调整min_bytes_for_multistage_merge参数的值。该参数控制多阶段合并的最小字节数阈值,当查询结果小于该值时,会直接返回结果而不进行多阶段合并。减小该值可以减少不必要的合并操作,提高查询效率。
    4. 调整max_bytes_for_single_sort参数的值。该参数控制单个排序操作的最大字节数阈值,当查询中的排序操作超过该值时,会采用外部排序算法。减小该值可以减少外部排序的使用,提高查询效率。

    问题二:
    是的,可以在控制台中的参数配置里修改loose_imci_optimizer_switch参数。将该参数的值设置为1可以启用IMC优化器,从而让查询更倾向于使用列存。

    2024-01-03 08:56:43
    赞同 展开评论 打赏
  • set imci_optimizer_switch='fix_orderby_cost=off'
    此回答整理自钉群“PolarDB专家面对面 - HTAP(列存索引)”

    2024-01-02 23:40:56
    赞同 展开评论 打赏
  • 问题一:在PolarDB中,可以通过修改参数enable_columnstore来启用列存储功能。将该参数设置为ON即可让查询走列存。此外,还可以通过调整其他参数来优化查询性能,例如增加max_parallelism参数的值来提高并行度,或者调整query_cache_size参数来增加查询缓存的大小等。

    问题二:是的,可以在控制台中的参数配置里修改loose_imci_optimizer_switch参数。将其设置为ON可以开启IMCI优化器,从而更好地利用列存储功能进行查询优化。需要注意的是,修改参数后需要重启数据库实例才能生效。

    2024-01-02 23:29:59
    赞同 展开评论 打赏

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

相关电子书

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