はじめに
この記事では、Oracle AI Database 26aiから自動索引付け(Automatic Indexing)に追加された2つの新機能(ファンクション索引のサポート、DMLオーバーヘッドの計算)について紹介します。
Oracle AI Database 26aiは、Oracle Databaseの最新メジャーバージョンであり、AI機能を強化した製品です。
※本機能はExadata環境専用のため、自分の周りで利用できる環境がなく、この記事では仕様紹介のみを行い、動作検証は実施していません。
Oracle Database 23ai は Oracle AI Database 26ai に置き換えられました。
この内容は旧Oracle Database 23aiで公開されていた内容を含みます。
この記事では、Oracle AI Database 26aiとして紹介します。
自動索引付け(Automatic Indexing)とは
Oracle Database 19cからExadata環境にて使用可能となった機能の一つです。
データベースのクエリパフォーマンスを向上させるために、システムが自動的にインデックスを作成、管理、削除する機能となります。
これにより、ユーザーは手動でインデックスを管理する手間を省き、検索やデータアクセスの効率を向上させることができます。
26aiの新機能
Oracle AI Database 26aiから以下の2点の機能が追加されています。
1.ファンクション索引のサポート
Oracle AI Database 26ai以前はローカルBツリー索引のみがサポートされていましたが、26ai以降はファンクション索引も生成可能となりました。
これにより、以下のようなUPPER()やNVL()などの関数を含む条件式でも、自動索引付けが適用されるようになります。
SQL> select col from tab where upper(customer_name) = 'SMITH';
SQL> select col from emp where nvl(empno,mgr) > 7800;
2.DMLオーバーヘッドの計算
Oracle AI Database 26ai以前は、INSERT/UPDATE/DELETEが頻繁に発生するテーブルでは、自動索引付けによる索引メンテナンスのコストが高くなるため、性能劣化のリスクがありました。
26ai以降ではこのコストを評価し、メリットがない場合は対象の表が自動索引候補から除外されます。
確認方法
自動索引付けに関連する設定値については、「DBA_AUTO_INDEX_CONFIG」ビューで確認することができます。
SQL> select * from DBA_AUTO_INDEX_CONFIG;
PARAMETER_NAME PARAMETER_VALUE LAST_MODIFIED MODIFIED_BY
----------------------------------- -------------------- ------------------------------ ---------------
AUTO_INDEX_COMPRESSION OFF
AUTO_INDEX_DEFAULT_TABLESPACE
AUTO_INDEX_INCLUDE_DML_COST ON
AUTO_INDEX_MODE OFF
AUTO_INDEX_REPORT_RETENTION 373
AUTO_INDEX_RETENTION_FOR_AUTO 373
AUTO_INDEX_RETENTION_FOR_MANUAL
AUTO_INDEX_SCHEMA
AUTO_INDEX_SPACE_BUDGET 50
AUTO_INDEX_TABLE
10行が選択されました。
ファンクション索引の設定値の変更方法については確認できませんでしたが、DMLオーバーヘッドの計算に関しては、「AUTO_INDEX_INCLUDE_DML_COST」の値を変更することで有効/無効を選択できます。
例えば、以下のSQLを実行することでDMLオーバーヘッドの計算機能を無効化することができます。
SQL> EXEC DBMS_AUTO_INDEX.CONFIGURE('AUTO_INDEX_INCLUDE_DML_COST','OFF');
注意点
DMLオーバーヘッドの計算機能については、索引メンテナンスによるオーバーヘッドが問い合わせパフォーマンスの向上というメリットを上回ると判断された場合、対象の表は自動索引の付与候補から除外されます。
そのため、対象の表に索引が全く付与されない状態で運用されるリスクが考えられます。
除外されたテーブルに対しては、必要な索引を手動で作成する運用ルールも検討しておくとよいでしょう。
まとめ
自動索引付けは、索引の作成やチューニングを自動化することで、データベース管理者の手を煩わせることなく、パフォーマンス向上を支援する機能です。
新たに追加された2つの機能により、さらなるパフォーマンス向上が期待されます。
参考文献
Oracle Database データベース管理者ガイド 26ai
20 索引の管理
20.7.1 自動索引作成について
https://docs.oracle.com/cd/G47991_01/admin/managing-indexes.html#GUID-FAE533D7-9C9E-48C9-9A61-EBC060BF3D70
Oracle Database Oracle Database新機能 26ai
自動索引付けの拡張
https://docs.oracle.com/cd/G47991_01/nfcoa/data_analytics_sql.html#GUID-90027-1
We Are Hiring!