1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

パラレルクエリとは?

Last updated at Posted at 2024-05-28

パラレルクエリとは

重いクエリを1つのプロセスで実行すると時間がかかってしまう為、
複数のプロセスに分散して処理速度を向上させる方法

クエリの実行を並列化することで複数のCPUを使用、性能向上を目指す仕組み
大量のデータに対して集計/分析を行うような場合に効果が期待できる

実行方法

  1. スキャン
    1. テーブルをいくつかの部分に分けて、それぞれの部分を同時に調べる(スキャンする)
  2. ジョイン
    2. 複数のテーブルを組み合わせる操作を、複数のプロセスで分担して同時に行う
  3. 集計
    3. データの集計を複数の部分に分けて同時に行い、最後に結果をまとめる

使い方

Oracleの場合

SELECT /*+ PARALLEL(hoge, n) */ * FROM hoge;

PostgreSQLの場合

SET max_parallel_workers_per_gather = n;
SELECT * FROM hoge;

Microsoft SQL Serverの場合

SQL Serverは自動的に並列クエリを実行するが、以下を指定することもできる

  •  max degree of parallelism
    •  クエリが使用できる最大のプロセッサ数を指定する
    •  デフォルト値は0で、利用可能なすべてのプロセッサを使用する
  •  cost threshold for parallelism
    •  クエリのコストがこのしきい値を超えた場 合にのみ実行される

MySQLの場合

ユーザーからのクエリやDDL操作(ALTER,CREATEなど)はシングルスレッドで処理されます
MySQL 8.0以降からInnoDBのクラスタインデックスのページを同時に読み取る機能がパラレルで処理されるようになりました

クラスタインデックスとは?

テーブルにプライマリキーが設定されている場合、そのプライマリキーのこと

注意点

  • 並列処理にはオーバーヘッドが発生するため、常に性能が向上するわけではない
  • 多くのクエリが一度に実行されると、リソースの競合が発生することもある
    • スロークエリとか
  • 小さなデータセットや単純なクエリにはかえって逆効果となることがある
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?