SQLをパラレル実行する方法


ここでは、ORACLE SQLをパラレル実行する方法を紹介します。

パラレル実行する方法はいくつかありますが、今回は2つ紹介します。
1つはセッション単位にパラレル実行する方法です。セッション単位にパラレル実行する場合は、そのセッションで実行される全てのSQLを対象にパラレル実行します。セッション単位に行う場合は、QUERYのみか、DMLかDDLかを指定します。

もう1つは、SQL単位にパラレル実行する場合です。
任意のSQLにパラレル実行するためのヒントを書き加えます。

どちらも同様のことが実行できますが、どちらがより速くなるか、もしくはそのシステムにおいて運用しやすいかを考えて実装してください。パラレル実行しても全てのSQLが速くなるとは限らないので注意が必要です。

セッション単位にパラレル実行モードに変更する方法

–SELECTのみパラレル実行する場合
alter session force parallel query parallel 4;

–DMLをパラレル実行する場合(INSERT,UPDATE,DELETEを含む)
alter session force parallel DML parallel 4;

–DDLをパラレル実行する場合(CREATE TABLE,CREATE INDEX,ALTER INDEX REBUIDなど)
alter session force parallel DDL parallel 4;

セッション単位にパラレル実行モードに変更する方法

–SELECT文をパラレル実行する場合
select /*+ parallel(4) */ a.* from table1 a;

–INSERT文をパラレル実行する場合
insert /*+ enable_parallel_dml parallel(4) */ into table2 select /*+ parallel(4) */ a.* from table1 a;

–UPDATE文をパラレル実行する場合
update /*+ enable_parallel_dml parallel(4) */ table1 a set a.col1 = ‘test’ where a.col2 = ‘xx’;

–DELETE文をパラレル実行する場合
delete /*+ enable_parallel_dml parallel(4) */ from table1 a where a.col1 = ‘test’;

最後に

最後までお読みいただきありがとうございます。

SQLのチューニングについては、「SELECT文のSQLチューニング方法まとめ」で詳しく解説していますので、ぜひ参考にしてください。