前のページ|次のページ

PARTSIZE=データセットオプション

データコンポーネントパーティションに指定可能な最大サイズ(MB、GBまたはTB単位)を指定します。値はSPD Engineデータセットの作成時に指定されます。このサイズは固定サイズです。この指定はデータコンポーネントファイルにのみ適用されます。

該当要素: DATAステップおよびPROCステップ
使用要素: MINPARTSIZE=システムオプション
デフォルト: 128 MB
操作: DATAPATH= LIBNAMEステートメントオプション
エンジン: SPD Engineのみ

構文

必須引数

n | nM | nG | nT

MB、GBまたはTBでのパーティションのサイズです。M、GまたはTなしでnを指定した場合のデフォルトはMBです。たとえば、PARTSIZE=128とPARTSIZE=128Mは同じ意味です。最大値は、8,796,093,022,207MBです。

制限事項 この制限は、オペレーティングシステムz/OS、Linux SLES 9 x86およびWindowsファミリの32ビットホストにのみ適用されます。SAS 9.3でパーティションサイズが2GB以上のデータセットを作成した場合、SAS 9.2以前のいずれのバージョンのSPD Engineでもそのデータセットを開くことはできません。次のエラーメッセージがSASログに書き込まれます。ERROR:Unable to open data file because its data representation differs from the SAS session data representation.

詳細

複数のパーティションでは、データを並列処理で読み取る必要があります。オプションPARTSIZE=では、SPD Engineデータファイルに指定サイズでパーティションが切られます。実際のパーティションサイズは、nMB、GBまたはTBの指定サイズに収まるオブザベーション最大数に対応するように計算されます。オブザベーションの長さが65Kより大きいテーブルの場合、指定したPARTSIZE=と実際のパーティションサイズが一致しない可能性があります。この数字を一致させるには、PARTSIZE=に、32およびオブザベーションの長さの倍数を指定します。
SPD Engineデータセットのデータ部分を固定サイズのファイルに分割(パーティション)することによって、ソフトウェアで一部の操作に高度なスケーラビリティが導入されます。SPD Engineでは、スレッドを並列起動できます(たとえば、WHERE評価に対して1パーティションにつき1スレッドまで)。また、別々のデータパーティションによって、スレッド間のファイルアクセス競合のオーバーヘッドなしでデータを処理できます。各パーティションが1ファイルであるため、小さなパーティションサイズの代償として、オブザベーションを格納するためにファイル(UNIX iノードなど)の数の増加が必要になります。
PARTSIZE=を使用したスケーラビリティ制限は、DATAPATH=オプションで指定したファイルシステムを、どのように構成し、どのように複数のストライプボリュームに分散させるのかによって決まります。(個々のボリュームのストライピング構成を、ディスクアレイの複数のディスクコントローラまたはSCSIチャネルに分散させる必要があります。)ハードウェアレベルでの構成の目標は、データ取得時の並列処理を最大限にすることです。ディスクストライピングの詳細については、Scalability and Performanceの“SPD Engine”の下に示されている“I/O Setup and Validation” (http://support.sas.com/rnd/scalability)を参照してください。
PARTSIZE=の指定はSPD EngineシステムオプションMINPARTSIZE=によって制限されます。このシステムオプションは通常システム管理者によって保守されます。MINPARTSIZE=を使用すると、経験不足のユーザーが任意に小さなパーティションを作成し、その結果、多数のデータファイルが生成されるようなことは起こらなくなります。
パーティションサイズによって、データセット全体のスキャンを必要とする並列操作の多くの作業単位が決定されます。ただし、パーティションの増加が必ずしも処理の迅速化を意味するとは限りません。この折り合いをつけるには、データセットの格納に必要な物理ファイル(パーティション)の増加数と、パーティションの増加によって並列処理が可能になる作業量とのバランスをとる必要があります。パーティションが多くなると、データセットを処理するために開くファイルも多くなりますが、各パーティションのオブザベーション数は少なくなります。一般的なルールでは、パーティションは、1データパスにつき10以下、1CPUにつき3から4までとなります。(一部のオペレーティングシステムでは、使用可能な開いたファイルの数に制限がかかることもあります。)
新しいSPD Engineデータセットの適切なパーティションサイズを決定するには、次の点に注意する必要があります。
  • データに対して実行するアプリケーションの種類
  • データ量はどの程度か
  • アプリケーションで使用可能なCPUはいくつあるか
  • パーティションの格納に使用可能なディスクはどれか
  • そのディスクとCPUとの関係
たとえば、各CPUの制御するディスクが1つだけの場合、適切なパーティションサイズは、各ディスクにほぼ同じ量のデータが含まれるサイズです。各CPUの制御するディスクが2つの場合、適切なパーティションサイズは、負荷のバランスがとれているサイズです。各CPUで、ほぼ同じ量の作業が行われます。
注: データセットのPARTSIZE=値は、データセットの作成後は変更できません。PARTSIZE=を変更するには、データセットを再作成し、LIBNAMEステートメント内か、またはその新しい(出力)データセットに対して、異なるPARTSIZE=値を指定する必要があります。

比較

PARTSIZE=データセットオプションで、PARTSIZE= LIBNAMEステートメントオプションが上書きされます。

例: PROC SQLの使用

100GBのデータと8つのディスクがあり、1ディスクにつき12.5GBを格納できるとします。パーティションは1ディスクにつき3つから4つまでが最適です。3.125GBのパーティションサイズが適切です。そのため、PARTSIZE=3200Mを指定します。
data salecent.sw (partsize=3200m);
データ量は同じで、1年以内にデータ量が2倍になることが予想されるとします。その場合、同じPARTSIZE=を指定して1ディスクにつきおよそ7パーティションにするか、またはPARTSIZE=を5000Mに増やして1ディスクにつき5パーティションにします。
前のページ|次のページ|ページの先頭へ