リリースされて、はや半年が経とうとしていますが、新機能は皆さまどれくらい活用していますでしょうか。目玉機能の一つであります、テンポラルテーブルに注目してみました。テーブル」機能が備わっているようで、これを利用して監査証跡を残すことができるとしています。重要で注目を集めていますが、やはり実装後の性能低下がどうしても出てしまうことが予想されます。テンポラルテーブルで性能観点から遊んでみました検証してみました。テンポラルテーブルを利用して、テーブル更新(UPDATE)の証跡を記録した場合としない場合でどれくらいの性能差が出るかを検証します。同じ件数のデータが格納されているテーブルを用意して、全行に対してそれぞれ更新した場合に要する時間を計測します。件数は何パターンか用意して、テンポラルテーブルを利用した場合としない場合で、5回ずつ試行し平均時間を比較します。件数パターンは下記の4パターン行います。今回の検証環境は以下の通りです。100検証準備(テンポラルテーブルの利用方法)OBを使用して、前述の検証テーブルを作成します。つの列(日付を格納するための列)を追加します。テーブルとして有効化します。)テンポラリテーブルを利用しない場合は無効化します。)OBのデータ生成機能を使用し、データを投入します。更新処理を各行に対して行うため、OBを使って既存データのUPDATEを行います。この既存データのUPDATEにかかった時間を計測します。一回ごとにキャッシュをクリアします。以下の通りとなりました。04:08.910各件数の平均実行時間を比較すると以下のようになります。全体を比較するとこのような感じになります。それぞれ「証跡なし」から見て、「証跡あり」は約30%~40%実行時間が延びています。更新自体に時間がかかることはわかりました。証跡を残す以上データが蓄積されていくとどうなるのか気になるところです。今回の検証結果では、以下のようになりました。・テンポラルテーブルは簡単なSQLを実行することで利用できる。・既存のテーブルもテンポラルテーブルとして利用が可能。・テンポラルテーブルを利用して証跡を残すと更新処理のパフォーマンスは低下する。・データの蓄積によって性能は劣化しない。テンポラルテーブルの特性上、更新の際に別のテーブルに同じレコードを挿入して証跡を残すため、当初の想定通り性能の低下がみられました。今回の実験では結果にある通りの低下率となりましたが、項目数やSQL1回の実行に対するに更新行数によっても異なってくるかと思われます。監査証跡を目的として導入する場合は、実行が予測されるSQLと相談になりそうです。今回検証して分かったこととして、テンポラリテーブルは既存テーブルにも使え、簡単なSQL実行で開始/終了ができるので、導入難易度は低いと感じました。これくらいの性能低下は許容できるようであれば、とても使いやすいと考えます。データの蓄積により性能は劣化しないという結果が出ました。これは長期に渡って証跡を残しても大丈夫、ということになります。証跡は保存期間が重要なため、大きなメリットとなるのではないでしょうか。今回の検証結果は以上となります。