PolarDB为什么执行SET,返回错误怎么才能开启并行查询?[阿里云PolarDB]

PolarDB为什么执行SET GLOBAL max_parallel_degree=32,返回错误,怎么才能开启并行查询?

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
=====这是一个广告位,招租中,联系qq 78315851====
5 条回复 A 作者 M 管理员
  1. 楼主你好,执行SET GLOBAL max_parallel_degree=32命令可能会返回错误,因为PolarDB不支持修改max_parallel_degree参数。PolarDB默认使用最大并行度,因此不需要手动设置此参数。

    如果您想要进一步优化并行查询的性能,可以考虑以下几点:

    1. 合理使用索引

    索引可以帮助数据库快速定位数据,从而提高查询效率。在使用并行查询时,合理使用索引可以进一步提高查询性能。

    1. 避免大量临时表的使用

    并行查询需要将数据分配到多个CPU核心上进行处理,如果存在大量的临时表,则会导致数据分散在不同的节点上,降低并行处理的效率。

    1. 合理设置查询任务的并行度

    并行查询的效率取决于任务的切分粒度和并行度的设置。因此,在应用中,需要根据实际情况合理设置查询任务的切分粒度和并行度,以达到最佳的查询效果。

    1. 尽量避免全表扫描

    全表扫描会导致所有数据都被读入内存,降低查询效率。因此,在使用并行查询时,尽量避免全表扫描,可以通过合理使用索引和优化查询语句等方式实现。

  2. PolarDB-X没有这个参数,PolarDB MySQL版本打开并行查询功能时, 需要设置innodb_adaptive_hash_index参数为OFF,innodb_adaptive_hash_index参数开启会影响并行查询的性能。

    • 如果控制台页面未开启并行查询,但系统参数max_parallel_degree被设置为大于0时,相当于默认开启了单机并行。

    • 如果控制台和系统参数max_parallel_degree均有设置,则以控制台参数配置为准,故建议使用控制台开启并行查询。

    测试用的PolarDB集群规格为32核256 GB(独享规格)×4节点,单节点并行度max_parallel_degree分别设置为32和0,对比PolarDB串行执行、单节点32并行度执行、4节点128并行度执行的性能数据。

  3. 对于大数据量、较复杂的时空查询,Ganos可直接利用PG并行查询的能力从而加速时空查询。

    并行查询原理
    PG并行查询是表级的并行,其并行查询示意图如下。

    开启Ganos并行查询的方法如下:
    修改PostgreSQL配置文件postgresql.conf,启用并行查询参数。
    开启max_parallel_workers参数,设置能够开启的并行worker总数量,须小于max_worker_processes的值,通常为8-32。
    开启max_parallel_workers_per_gather参数,设置单个查询gahter最大并行度,须小于max_parallel_workers的值,通常为2-4。
    如果要开启强制并行,须将force_parallel_mode设置为on。
    通过执行SQL语句控制单个表的并行粒度:alter table table_name set (parallel_workers=n)。

    提高Ganos相关函数的cost成本。
    在创建Ganos模块扩展时,通常默认有个函数cost成本,如果表数据量较小,但函数属于计算密集,并且适合开启并行执行,此时默认不会开启并行查询,需要提高函数的cost成本后才能开启并行查询。

  4. 如果您在PolarDB中执行SET GLOBAL max_parallel_degree=32时,返回错误,可能是由于以下原因:

    系统资源不足:如果您的PolarDB实例的系统资源不足,例如CPU、内存、磁盘等资源不足,可能会导致无法开启并行查询。您可以检查系统资源的使用情况,如果资源不足,可以考虑升级硬件或扩容。
    数据库版本不支持:如果您的PolarDB实例的版本不支持并行查询,可能会导致无法开启并行查询。您可以检查PolarDB实例的版本,如果版本不支持并行查询,可以考虑升级PolarDB实例的版本。
    参数设置错误:如果您的PolarDB实例的参数设置错误,可能会导致无法开启并行查询。您可以检查PolarDB实例的参数设置,确保参数设置正确。
    如果您已经排除了以上原因,但仍然无法开启并行查询,可以尝试使用以下命令重启PolarDB实例:

    sudo systemctl restart polardb

    这个命令将重启PolarDB实例,重新启动后,您可以再次尝试执行SET GLOBAL max_parallel_degree=32命令,看看是否能够开启并行查询。

  5. 我们没有这个并行参数,你这个是PG版本。此回答整理自微信群“阿里云 PolarDB-X开源交流2号群”