PermSize属性の値の決定

データベースが正常に動作するには、各要素の永続メモリー領域と一時メモリー領域の両方で、十分なメモリーが使用可能であることが必要です。次に示すように、SYS.V$MONITORSYS.GV$MONITORシステム・ビューを問い合せることで、データベースのローカル要素やすべての要素について、この2つの領域の割当てメモリー量、使用中のメモリー量および最高水準で使用中のメモリー量をモニターできます。
Command> SELECT elementid, perm_allocated_size, perm_in_use_size,
 perm_in_use_high_water, temp_allocated_size, temp_in_use_size,
 temp_in_use_high_water FROM sys.v$monitor;

  ELEMENTID:                1
  PERM_ALLOCATED_SIZE:      262144
  PERM_IN_USE_SIZE:         30338
  PERM_IN_USE_HIGH_WATER:   30338
  TEMP_ALLOCATED_SIZE:      131072
  TEMP_IN_USE_SIZE:         21073
  TEMP_IN_USE_HIGH_WATER:   24600

1 row found.
Command> SELECT elementid, perm_allocated_size, perm_in_use_size,
 perm_in_use_high_water, temp_allocated_size, temp_in_use_size,
 temp_in_use_high_water FROM sys.gv$monitor;

  ELEMENTID:                1
  PERM_ALLOCATED_SIZE:      262144
  PERM_IN_USE_SIZE:         30338
  PERM_IN_USE_HIGH_WATER:   30338
  TEMP_ALLOCATED_SIZE:      131072
  TEMP_IN_USE_SIZE:         21073
  TEMP_IN_USE_HIGH_WATER:   24600
 
 
  ELEMENTID:                3
  PERM_ALLOCATED_SIZE:      262144
  PERM_IN_USE_SIZE:         30289
  PERM_IN_USE_HIGH_WATER:   30322
  TEMP_ALLOCATED_SIZE:      131072
  TEMP_IN_USE_SIZE:         21070
  TEMP_IN_USE_HIGH_WATER:   24470
 
 
  ELEMENTID:                5
  PERM_ALLOCATED_SIZE:      262144
  PERM_IN_USE_SIZE:         30289
  PERM_IN_USE_HIGH_WATER:   30322
  TEMP_ALLOCATED_SIZE:      131072
  TEMP_IN_USE_SIZE:         20943
  TEMP_IN_USE_HIGH_WATER:   24407
 
 
  ELEMENTID:                2
  PERM_ALLOCATED_SIZE:      262144
  PERM_IN_USE_SIZE:         30338
  PERM_IN_USE_HIGH_WATER:   30338
  TEMP_ALLOCATED_SIZE:      131072
  TEMP_IN_USE_SIZE:         20943
  TEMP_IN_USE_HIGH_WATER:   24470
 
 
  ELEMENTID:                4
  PERM_ALLOCATED_SIZE:      262144
  PERM_IN_USE_SIZE:         30289
  PERM_IN_USE_HIGH_WATER:   30322
  TEMP_ALLOCATED_SIZE:      131072
  TEMP_IN_USE_SIZE:         21006
  TEMP_IN_USE_HIGH_WATER:   24407
 
 
  ELEMENTID:                6
  PERM_ALLOCATED_SIZE:      262144
  PERM_IN_USE_SIZE:         30289
  PERM_IN_USE_HIGH_WATER:   30322
  TEMP_ALLOCATED_SIZE:      131072
  TEMP_IN_USE_SIZE:         21006
  TEMP_IN_USE_HIGH_WATER:   24470
1 row found.

必要に応じて、PermSizeまたはTempSize属性の値を増加して、いずれかの領域に割り当てられているメモリー量を増加します。「データベース定義での接続属性の変更」を参照してください。

SQLスキーマ、およびデータベースの各表に想定される行数とttSizeユーティリティに基づいて、PermSize属性の値を見積もることができます。たとえば、最終的にcustomers表に1,000,000行を挿入すると予想される場合は、次に示すように、この表に約287 MB (300,448,527バイト= 286.53 MB)が必要になります。

% ttSize -tbl terry.customers -rows 1000000 database1
 
 Rows = 1000000
 
Total in-line row bytes = 300442597
 
Indexes:
  Range index TERRY.CUSTOMERS adds 5930 bytes
  Total index bytes = 5930
 
Total = 300448527

ただし、ttSizeユーティリティは、TimesTen Classicのデータベースに最適化されています。TimesTen Scaleoutのデータベースでは、TimesTen Classicの類似するデータベースよりも、1行当たりの使用バイト数が8から16バイト多くなります。見積りをより正確にするために、ttSizeユーティリティによって計算される値に、8から16バイトを加算することを検討してください。customers表の場合、ttSizeユーティリティによって計算される値に1行当たり16バイトを加算すると、約302 MB (316,448,527バイト=301.79 MB)が使用可能である必要があります。

データベースのすべての表に対してこの見積りを繰り返し、各表の見積りサイズを加算することにより、すべてのホストを横断してデータベースが必要とする永続メモリー領域のサイズを大まかに把握できます。ただし、PermSize属性は、データベース全体ではなく1つの要素に対して割り当てられるメモリーの量を定義します。各要素に割り当てる必要がある各表の見積りサイズの量を決定するには、表の分散スキームを考慮する必要があります。

  • ハッシュまたは参照分散スキームを使用する表の場合は、ttSizeユーティリティを使用して見積もる前に、レプリカ・セット数で行数を除算します。

    ノート:

    参照分散スキームを使用する表では、キー値の参照が均等にならない可能性があることを考慮してください。データで、1つ以上のキー値を他の使用可能なキー値よりも頻繁に参照として使用する場合、行数をレプリカ・セット数で除算する計算は、不正確になる可能性があります。データの構成に基づいた特別な考慮事項が必要になります。

  • 複製分散スキームを使用する表の場合は、見積りに合計行数を使用します。最終的に、データベースの各要素について、複製分散を使用する表のすべての行を検索します。

customers表でハッシュ分散スキームが使用されており、database1データベースが3つのレプリカ・セットで構成されており、各要素に333,334行を格納できる必要があるとします。この場合は、次に示すように、customers表のみのために(PermSize属性によって定義された)永続メモリー領域内の101 MB (100,209,711 + 16 * 333,334バイト= 100.65 MB)となります。

% ttSize -tbl terry.customers -rows 333334 database1
 
Rows = 333334
 
Total in-line row bytes = 100203781
 
Indexes:
  Range index TERRY.CUSTOMERS adds 5930 bytes
  Total index bytes = 5930
 
Total = 100209711

ttSizeユーティリティの詳細は、『Oracle TimesTen In-Memory Databaseリファレンス』ttSizeを参照してください。