17.00 - 17.05 - 非保護モードでメソッドを実行する場合 - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQLデータ定義言語 詳細トピック

Product
Advanced SQL Engine
Teradata Database
Release Number
17.00
17.05
Release Date
2020年6月
Content Type
プログラミング リファレンス
Publication ID
B035-1184-170K-JPN
Language
日本語 (日本)

メソッドは保護モードで開発する必要があり、これが新規メソッド作成時のデフォルトです。保護モードおよびセキュア モードは、メソッドの各インスタンスを別個のプロセスで実行する状態のことです。これにより、Teradata Databaseのクラッシュ、メモリ リークによる問題、他の潜在的な障害の原因となる無効なポインタ、破壊されたスタック、ゼロ除算エラーなどの不正な計算をはじめとする多くの一般的なプログラミング エラーからシステムを保護できます。

保護モード サーバーとセキュア モード サーバーの違いは、保護モード サーバー プロセスが事前定義OSユーザーtdatuserの下で実行されるのに対し、セキュア サーバー プロセスはUDFのEXTERNAL SECURITY句で指定されるOSユーザーの下で実行されるという点です。この点を除けばどちらのプロセスも同じです。

これらの問題はすべて、非保護モードで生じるとTeradata Databaseのクラッシュの原因となります。保護およびセキュア モードでも、メソッドがデータベースのクラッシュを引き起こすことがあります。これは、メソッドがデータベースと保護またはセキュア モードのメソッドとの間の共有データ領域を破壊した場合に生じます。

保護モードおよびセキュア モードは次の目的での使用のためだけに用意されています。
  • 開発中のすべてのメソッドのテスト。
  • OSでシステム リソースを消費するメソッドの実行。

    これには、OSによるシステム コンテキストの割振りを引き起こすものすべて、たとえば、オープン ファイル、パイプ、セマフォー、トークン、スレッド(プロセス)などが含まれます。

OSによるシステム リソースの消費の原因となる操作をメソッドがない場合は、実働使用の必要基準を満たした時点で、その保護モードをEXECUTE NOT PROTECTEDに変更する必要があります(ALTER METHODを参照)。

OSによるシステム リソースの消費の原因となる操作をメソッドが実行does場合は、十分にデバッグによって実働レベルの必要条件をすべて満たした後でも常に保護モードで実行するべきです。

実働準備が整ったメソッドの情報を以下の表にまとめます。

メソッド 実行モード
OSでシステム リソースを消費しない 非保護モード。
OSでシステム リソースを消費する操作を実行する
  • 事前定義OSユーザーtdatuserの下では保護モード

    または

  • 次の任意ののユーザーの下ではセキュア モード

    tdatuser

    EXTERNAL SECURITY句によって指定されるOSユーザー。

メソッドを非実働のテスト システムで開発およびテストすることが最善です。新規に作成したメソッドは数百回実行して、システムがクラッシュしないことを確認すると共に、メソッドの設計を変更したりコーディング技法を改善することで回避できるパフォーマンス上の問題を判別してください。

cufconfigユーティリティ(<Teradata Vantage™ - データベース ユーティリティ、B035-1102>および<Teradata Vantage™- SQL外部ルーチン プログラミング、B035-1147>を参照)を使用すると、保護モードまたはセキュア モードのサーバーの数をデフォルト値のAMPまたはPE vprocにつき2から最大値の20に拡張できます。最小値は0です。

保護モードのサーバーで消費されるディスク リソースは次の式によって計算されます。



非保護モードでは、メソッドは別個のプロセスで実行されるのではなく、Teradata Databaseによって直接呼び出されます。OSにシステム コンテキストの割振りを要求しない新規のメソッドは、十分にテストして強固さとパフォーマンス上の影響とを評価してから、非保護モードで実行するように変更してください。新規に作成したCPU操作専用のメソッドが品質尺度に適合して、実働で使用する準備が整った後に、メソッドを変更して非保護モードで実行するようにします。