計画の展開(
Evolution
) 自動取得SQL
チューニング・セットからの取得 カーソル・キャッシュからの取得AWR
からの取得(12.2
から)未使用
SQL
計画ベースラインの自動削除Export/Import (pack/unpack)
ストアド・アウトラインから
SQL
計画ベースラインに変換1
つのSQL
文で1
つのSQL
計画ベースラインのみ許可され、SQL
計画の展開は無効• パラレル実行でのパーティション・ワイズ分析関数(ウィンドウ関数)が可能に
– TEMP
領域の削減にも効果(「津島博士のパフォーマンス講座」第45
回)• 12.1
まで(結合、Group By
)、DISTINCT
(12.2
から)–
ヒント(USE_PARTITION_WISE_WIF / NO_USE_PARTITION_WISE_WIF
)SQL> select /*+ parallel(2) */ tab1.*, row_number() over (partition by c3 order by null) from tab1;
実行計画(12.2)
---| Id ---| Operation ---| Name ---| ---| Pstart---| Pstop ---| TQ ---|IN-OUT---| PQ Distrib ---|
---| 0 ---| SELECT STATEMENT ---| ---| ---| ---| ---| ---| ---| ---|
| 1 | PX COORDINATOR | | | | | | | |
| 2 | PX SEND QC (RANDOM) | :TQ10001 | | | | Q1,01 | P->S | QC (RAND) |
| 3 | WINDOW SORT | | | | | Q1,01 | PCWP | |
| 4 | PX RECEIVE | | | | | Q1,01 | PCWP | |
| 5 | PX SEND HASH | :TQ10000 | | | | Q1,00 | P->P | HASH |
| 6 | PX BLOCK ITERATOR | | | 1 | 4 | Q1,00 | PCWC | |
| 7 | TABLE ACCESS FULL| TAB02 | | 1 | 4 | Q1,00 | PCWP | |
Optimizer の拡張機能
パーティション・ワイズ操作の強化
実行計画(18c)
---| Id ---| Operation ---| Name ---| ---| Pstart---| Pstop ---| TQ ---|IN-OUT---| PQ Distrib ---|
---| 0 ---| SELECT STATEMENT ---| ---| ---| ---| ---| ---| ---| ---|
| 1 | PX COORDINATOR | | | | | | | |
| 2 | PX SEND QC (RANDOM) | :TQ10000 | | | | Q1,00 | P->S | QC (RAND) |
| 3 | PX PARTITION RANGE ALL| | | 1 | 4 | Q1,00 | PCWC | |
| 4 | WINDOW SORT | | | | | Q1,00 | PCWP | |
| 5 | TABLE ACCESS FULL | TAB1 | | 1 | 4 | Q1,00 | PCWP | |
Optimizer の拡張機能
Autonomous Database
のオプティマイザ•
オンライン・オプティマイザ統計収集の強化–
従来型DML
操作以外はオンライン統計収集•
非Autonomous
:表が空の場合のバルク・ロードのみを12cR1
からサポート• Statistics-Based Query Transformation
–
オプティマイザ統計を使用した問合せに変換(ビュー名:VW_SQT_xxxx
)• MIN, MAX, COUNT, APPROXIMATE_COUNT_DISTINCT
•
パラレル度(DOP
)と同時実行–
コンシューマ・グループ(HIGH, MEDIUM, LOW
)によって自動調整• PARALLEL_DEGREE_POLICY
=AUTO
(LOW
はシリアル実行のみ)•
パラレルDML
もデフォルトで有効– PARALLEL
ヒントによる設定• OPTIMIZER_IGNORE_PARALLEL_HINTS=TRUE
(デフォルト無視)• OPTIMIZER_IGNORE_HINTS=TRUE
(その他のヒントもデフォルト無視)アジェンダ
1
2
3
Database In-Memory の機能拡張 MemOptimize プール
Optimizer の機能拡張 その他の機能
4
その他の機能
新しい
SQL
チューニング・セットのパッケージ• SQL チューニング・セット( SQL 文のセットや実行コンテキストなど)の目的
– SQL
チューニング・アドバイザ、SQL
アクセス・アドバイザ、SQL
パフォーマンス・アナライザ などの入力–
データベース間でのSQL
の移行(別データベースで診断やチューニングを実施)• これまでの DBMS_SQLTUNE パッケージ
– Oracle Tuning Pack
が必要• 新しい DBMS_SQLSET パッケージ
– Oracle Tuning Pack
が必要ない– DBMS_SQLTUNE
と同等のサブプログラムを提供その他の機能
Exadata
に対応したSQL
チューニング・アドバイザ• Exadata 対応の SQL プロファイル
–
システム統計の補正•
失効している場合や収集するとパフォーマンスが向上する場合•
システム統計のI/O
性能(スマート・スキャンのコスト)– I/O
シーク時間(ioseektim)
、マルチブロック・リード・カウント(mbrc)
、I/O
転送速度(iotfrspeed)
• システム統計( CPU 性能、 I/O 性能)
– Exadata
では固有のシステム統計を取得する• DBMS_STATS.GATHER_SYSTEM_STATS(‘EXADATA’);
リファレンス
マニュアル・ドキュメント、連載
• Oracle Database In-Memory ガイド , 18c
https://docs.oracle.com/cd/E96517_01/inmem/index.html
• Oracle Database パフォーマンス・チューニング・ガイド , 18c
https://docs.oracle.com/cd/E96517_01/tgdba/index.html
• Oracle Database SQL チューニング・ガイド , 18c
https://docs.oracle.com/cd/E96517_01/tgsql/index.html
• 津島博士のパフォーマンス講座
http://www.oracle.com/technetwork/jp/database/articles/tsushima/
テック・ナイトアーカイブ資料と お役立ち情報
各回テック・ナイトセッション資料 ダウンロードサイト
oracle technight
技術コラム 津島 博士の
パフォーマンス 講座
技術コラム しば ちょう先生の 試して納得!
DBA
への道もしも
みなみんが