バッファを使用したデータのロード
関連するMaxL文
複数の「Import Data (集約ストレージ)」文を使用してデータ値を集約ストレージ・データベースにロードする場合、最初に一時データ・ロード・バッファに値をロードし、すべてのデータ・ソースの読取り後にストレージへの最終書込みを行うことで、パフォーマンスを大幅に向上させることができます。
データ・ロード・バッファがメモリーに存在している間は、集計やマージ・スライスを作成できません。これらの操作はリソース集中型であるためです。 ただし、他のデータ・ロード・バッファにデータをロードし、データベースで問合せやその他の操作を実行できます。 完全なデータ・セットがデータベースにコミットされて集計が作成されるまで、問合せの待機が短い場合があります。
データ・ロード・バッファは、バッファの内容がデータベースにコミットされるか、アプリケーションが再起動されるまでメモリー内に存在し、そこでバッファが破棄されます。 コミット操作が失敗した場合でも、バッファは破棄され、データはデータベースにロードされません。
単一の集約ストレージ・データベースに複数のデータ・ロード・バッファが存在できます。 時間を節約するために、個別のMaxL Shellセッションを使用して、複数のデータ・ロード・バッファにデータを同時にロードできます。 データベースでアクティブにできるデータ・ロード・コミット操作は一度に1つのみですが、同じコミット操作で複数のデータ・ロード・バッファをコミットできます。これは、バッファを個別にコミットするよりも高速です。
集約ストレージ・データベースに存在するデータ・ロード・バッファのリストおよび説明をデータベースに問い合せることができます。 「集約ストレージ・データ・ロード・バッファの使用」を参照してください。
例:
例: 単一のデータ・ロード・バッファへの複数のデータ・ソースのロード
インポートする必要があるデータ・ファイルが3つあるとします。 集約ストレージ・データベースでは、すべてのデータ・ファイルが単一のインポート操作を使用してロードされる場合、データ・ロードが最も効率的です。 したがって、ロード・バッファは複数のデータ・ファイルをロードする場合に便利です。
-
「Alter Database (集約ストレージ)」を使用して、ロード・バッファを作成します。
alter database ASOsamp.Sample initialize load_buffer with buffer_id 1;
-
「Import Data (集約ストレージ)」文を使用して、データをバッファにロードします。
import database ASOsamp.Sample data from server data_file 'file_1' to load_buffer with buffer_id 1 on error abort; import database ASOsamp.Sample data from server data_file 'file_2' to load_buffer with buffer_id 1 on error abort; import database ASOsamp.Sample data from server data_file 'file_3' to load_buffer with buffer_id 1 on error abort;
-
バッファからデータベースにデータを移動します。
import database ASOsamp.Sample data from load_buffer with buffer_id 1;
データ・ロード・バッファは暗黙的に破棄されます。
-
ステップ2で、file_2をロード・バッファにロードした後、データをロードしないことを決定したとします。 データはバッファにあり、まだデータベースにはないため、「Alter Database (集約ストレージ)」を使用するだけで、データをデータベースに移動せずにバッファを破棄できます。
alter database ASOsamp.Sample destroy load_buffer with buffer_id 1;
例: 複数のデータ・ロードのパラレル実行
-
あるMaxL Shellセッションで、IDが1のバッファにデータをロードします:
alter database ASOsamp.Sample initialize load_buffer with buffer_id 1 resource_usage 0.5;
import database ASOsamp.Sample data from data_file "dataload1.txt" to load_buffer with buffer_id 1 on error abort;
-
同時に、別のMaxL Shellセッションで、IDが2のバッファにデータをロードします:
alter database ASOsamp.Sample initialize load_buffer with buffer_id 2 resource_usage 0.5;
import database ASOsamp.Sample data from data_file "dataload2.txt" to load_buffer with buffer_id 2 on error abort;
-
データがデータ・ロード・バッファに完全にロードされたら、次のいずれかのMaxL文を使用して、バッファIDのカンマ区切りリストを使用して両方のバッファの内容をデータベースにコミットします:
import database ASOsamp.Sample data from load_buffer with buffer_id 1, 2;