在 Aurora MySQL 中开启和关闭并行查询
如果开启了并行查询,Aurora MySQL 确定是否在运行时为每个查询使用该功能。对于联接、联合和子查询等,Aurora MySQL 确定每个查询块是否在运行时使用并行查询。有关详细信息,请参阅 验证哪些语句使用 Aurora MySQL 的并行查询 和 Aurora MySQL 中用于并行查询的 SQL 构造。
您可以使用 aurora_parallel_query 选项,在数据库实例的全局和会话级别动态开启和关闭并行查询。默认情况下,您可以更改数据库集群组中的 aurora_parallel_query
设置,以启用或关闭并行查询。
mysql>
select @@aurora_parallel_query;+------------------------+ | @@aurora_parallel_query| +------------------------+ | 1 | +------------------------+
要在会话级别切换 aurora_parallel_query
参数,请使用标准方法更改客户端配置设置。例如,可以通过 mysql
命令行或在 JDBC 或 ODBC 应用程序中执行此操作。标准 MySQL 客户端上的命令是 set session aurora_parallel_query =
{'ON'/'OFF'}
。您还可以将会话级参数添加到 JDBC 配置或应用程序代码中,以动态开启或关闭并行查询。
您可以为特定数据库实例或整个集群永久更改 aurora_parallel_query
参数的设置。如果您在数据库参数组中指定参数值,则该值仅适用于集群中的特定数据库实例。如果在数据库集群参数组中指定参数值,则集群中的所有数据库实例都将继承相同的设置。要切换 aurora_parallel_query
参数,请使用处理参数组的方法,如Amazon Aurora 的参数组中所述。按照以下步骤进行操作:
-
创建自定义集群参数组(推荐)或自定义数据库参数组。
-
在此参数组中,将
parallel_query
更新为所需的值。 -
根据您创建的是数据库集群参数组还是数据库参数组,将参数组附加到 Aurora 集群或计划使用并行查询功能的特定数据库实例。
提示
因为
aurora_parallel_query
是一个动态参数,所以在更改此设置后不需要重启集群。但是,在切换选项之前使用并行查询的任何连接都将继续执行此操作,直到连接关闭或实例重启。
您可以使用 ModifyDBClusterParameterGroup 或 ModifyDBParameterGroup API 操作或 AWS Management Console修改并行查询参数。
可以为并行查询集群开启哈希联接,使用 Amazon RDS 控制台或 AWS CLI 开启和关闭并行查询,并覆盖并行查询优化器。
为并行查询集群开启哈希联接
并行查询通常用于受益于哈希联接优化的各种资源密集型查询。因此,确保为计划使用并行查询的集群开启哈希联接非常有用。有关如何有效使用哈希联接的信息,请参阅 使用哈希联接优化大型 Aurora MySQL 联接查询。
使用控制台开启和关闭并行查询
通过使用参数组,可以在数据库实例级别或数据库集群级别开启或关闭并行查询。
要使用 AWS Management Console 开启或关闭数据库集群的并行查询
-
创建一个自定义参数组,如Amazon Aurora 的参数组中所述。
-
将 aurora_parallel_query 更新为 1(开启)或 0(关闭)。对于可以使用并行查询功能的集群,将原定设置关闭 aurora_parallel_query。
-
如果使用自定义集群参数组,请将其附加到计划使用并行查询功能的 Aurora 数据库集群。如果您使用自定义数据库参数组,请将其附加到集群中的一个或多个数据库实例。我们建议使用集群参数组。这样做可确保集群中的所有数据库实例对并行查询和关联功能(如哈希联接)具有相同的设置。
使用 CLI 开启和关闭并行查询
您可以使用 modify-db-cluster-parameter-group
或 modify-db-parameter-group
命令修改并行查询参数。根据您是通过数据库集群参数组还是通过数据库参数组指定 aurora_parallel_query
的值,选择相应的命令。
要使用 CLI 开启或关闭数据库集群的并行查询
-
使用
modify-db-cluster-parameter-group
命令修改并行查询参数。使用如下命令。用适当的名称替换您自己的自定义参数组。用ON
或OFF
替换ParameterValue
选项的--parameters
部分。$
aws rds modify-db-cluster-parameter-group --db-cluster-parameter-group-namecluster_param_group_name
\ --parameters ParameterName=aurora_parallel_query,ParameterValue=ON,ApplyMethod=pending-reboot{ "DBClusterParameterGroupName": "
aws rds modify-db-cluster-parameter-group --db-cluster-parameter-group-namecluster_param_group_name
" }cluster_param_group_name
\ --parameters ParameterName=aurora_pq,ParameterValue=ON,ApplyMethod=pending-reboot
您还可以在会话级别开启或关闭并行查询,例如,通过 mysql
命令行或在 JDBC 或 ODBC 应用程序中。为此,请使用标准方法更改客户端配置设置。例如,对于 Aurora MySQL,标准 MySQL 客户端上的命令是 set session aurora_parallel_query = {'ON'/'OFF'}
。
您还可以将会话级参数添加到 JDBC 配置或应用程序代码中,以动态开启或关闭并行查询。
覆盖并行查询优化程序
您可以使用 aurora_pq_force
会话变量覆盖并行查询优化程序并为每个查询请求并行查询。我们建议您仅出于测试目的这样做。以下示例显示如何在会话中使用 aurora_pq_force
。
set SESSION aurora_parallel_query = ON; set SESSION aurora_pq_force = ON;
要关闭覆盖,请执行以下操作:
set SESSION aurora_pq_force = OFF;