특정 세션에서만 Aurora Parallel Query 활성화

3548 단어 AWSMySQLauroratech
Amazon Aurora MySQL에서는 특정 세션에서만 parallel query를 활성화하는 방법을 조사했습니다.문서의 기술은 좀 애매해서 먼저 썼다.검증은 v2입니다.09.1 갔어요.
v2.09.0보다 크면parametergroup의aurora_parallel_queryaurora_disable_hash_join를 기본값으로 설정한 후 시스템 변수를 다음과 같이 설정할 수 있습니다.
set session aurora_parallel_query='on'
set session optimizer_switch='hash_join=on'
EXPLAIN의 Extra에Using parallel query (...)가 있다면parallelquery가 작용합니다.
※ Parallel query를 유효화할 뿐이라면 optimizer switch 설정이 필요하지 않습니다.보도의 아래의 예에서 이것을 볼 수 있다.하지만 문서 다음과 같이 설정하는 게 좋을 것 같아요.또 aurora_disable_hash_join=on라도optimizer switchhash_join=on에서 하면hashjoin이 유효해지는 것 같다.
병렬 조회는 대량의 자원 유형의 조회를 사용하는데 그 장점은 산열 조합을 최적화하는 데 있다.따라서 병렬 검색을 사용하는 그룹에서 산열 조합을 사용하면 유용합니다.
mysql> select aurora_version();
+------------------+
| aurora_version() |
+------------------+
| 2.09.1           |
+------------------+
1 row in set (0.00 sec)

mysql> select @@aurora_parallel_query;
+-------------------------+
| @@aurora_parallel_query |
+-------------------------+
|                       0 |
+-------------------------+
1 row in set (0.00 sec)

mysql> select @@aurora_disable_hash_join;
+----------------------------+
| @@aurora_disable_hash_join |
+----------------------------+
|                          1 |
+----------------------------+
1 row in set (0.00 sec)

mysql> select @@optimizer_switch\G
*************************** 1. row ***************************
@@optimizer_switch: index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=on,index_condition_pushdown=on,mrr=on,mrr_cost_based=on,block_nested_loop=on,batched_key_access=off,materialization=on,semijoin=on,loosescan=on,firstmatch=on,duplicateweedout=on,subquery_materialization_cost_based=on,use_index_extensions=on,condition_fanout_filter=on,derived_merge=on,hash_join=off,hash_join_cost_based=on
1 row in set (0.00 sec)

mysql> explain select count(*) from t where a = 5 and id > 5000000000\G
*************************** 1. row ***************************
           id: 1
  select_type: SIMPLE
        table: t
   partitions: NULL
         type: range
possible_keys: PRIMARY
          key: PRIMARY
      key_len: 4
          ref: NULL
         rows: 5879332
     filtered: 10.00
        Extra: Using where
1 row in set, 1 warning (0.00 sec)

mysql> set session aurora_parallel_query='on';
Query OK, 0 rows affected (0.00 sec)

mysql> select @@aurora_parallel_query;
+-------------------------+
| @@aurora_parallel_query |
+-------------------------+
|                       1 |
+-------------------------+
1 row in set (0.00 sec)

mysql> explain select count(*) from t where a = 5 and id > 5000000000\G
*************************** 1. row ***************************
           id: 1
  select_type: SIMPLE
        table: t
   partitions: NULL
         type: ALL
possible_keys: PRIMARY
          key: NULL
      key_len: NULL
          ref: NULL
         rows: 405074076
     filtered: 0.15
        Extra: Using where; Using parallel query (2 columns, 2 filters, 0 exprs; 0 extra)
1 row in set, 1 warning (0.00 sec)

좋은 웹페이지 즐겨찾기