{Aurora}並列クエリを使用する DB クラスターの作成

Aurora MySQL の並列クエリのアーキテクチャは、他のデータベースシステムの類似の名前の付いた特徴とは異なります。
並列処理は、クエリコーディネーターとして機能する Aurora MySQL サーバーとは独立して、ストレージレイヤーで行われます。

db.t2 または db.t3 インスタンスクラスでは、並列クエリは使用できません

並列クエリでは、テーブルに ROW_FORMAT=Compact または ROW_FORMAT=Dynamic の設定が使用されている必要がある


-- 並列クエリと Aurora MySQL のバージョンの互換性の確認

aws rds describe-db-engine-versions \
--region ap-northeast-1 \
--engine aurora-mysql \
--query '*[]|[?SupportsParallelQuery == `true`].[EngineVersion]' --output text


-- 並列クエリを使用する DB クラスターの作成

aws rds create-db-cluster-parameter-group \
--db-parameter-group-family aurora-mysql5.7 \
--db-cluster-parameter-group-name cpg01 \
--description cpg01


aws rds modify-db-cluster-parameter-group \
--db-cluster-parameter-group-name cpg01 \
--parameters ParameterName=aurora_parallel_query,ParameterValue=ON,ApplyMethod=immediate

aws rds modify-db-cluster-parameter-group \
--db-cluster-parameter-group-name cpg01 \
--parameters ParameterName=aurora_disable_hash_join,ParameterValue=OFF,ApplyMethod=immediate


aws rds create-db-cluster \
--db-cluster-identifier cluster11 \
--engine aurora-mysql \
--engine-version 5.7.mysql_aurora.2.10.0 \
--master-username root \
--master-user-password 'password' \
--db-cluster-parameter-group-name cpg01

aws rds create-db-instance \
--db-instance-identifier cluster11-instance01 \
--db-cluster-identifier cluster11 \
--db-instance-class db.r5.large \
--engine aurora-mysql \
--no-auto-minor-version-upgrade

 


-- 新しいクラスターが並列クエリを使用できることを確認する
select @@aurora_parallel_query,@@aurora_disable_hash_join;

aurora_parallel_query の設定が true で、aurora_disable_hash_join の設定が false になっていることを確認します。


-- 並列クエリを使用しているステートメントの確認


select @@innodb_default_row_format,@@innodb_file_format;

innodb_default_row_formatの設定がdynamicであることを確認


SET optimizer_switch='hash_join=on';

並列クエリの場合explainのExtraに「Using parallel query」が表示される

show global status like 'Aurora_pq_%';