PermSize属性の値の決定
SYS.V$MONITOR
とSYS.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を参照してください。