私は現在、アカデミックベンチマークであるTPC-Hを実行しており、ダイレクトパス(非常にうまく機能し、非常に高速でした)と従来のパスを使用してロードしたいいくつかの大きなテーブルがあります。
そのために、私はこのバッチスクリプトを使用しました:
for /F "tokens=1,2" %%A in (table4_records.txt) do (
sqlldr userid='tpch/tpch' control=%%A.ctl rows=%%B bindsize=? readsize=? SILENT=HEADER log=bulkload_logs\sf4\bulk_%%A%1.log
)
問題は、bindsizeやreadsizeオプションにどのような値を指定しても、常に65534から65534の行にコミットすることです。テーブルごとの正確な行数である%%Bサイズをすでに渡しました。
直接ロードでは、ホールテーブルがロードされた後に実際に行われたように行とコミットを使用しました。
私はそのようなことをしたいのですが、従来のロードパスでは、それが速くないことはわかっていますが、それがポイントです。
正しいパラメータを指定して、次のことができるようにする方法を教えてください。1-一度にできるだけ多くのデータをロードする。
2-コミットの頻度を減らし、できればテーブルのロードの最後にコミットします。
テーブルの名前と行数は次のとおりです。
lineitem 23996604->が最大で、約があります。ディスク上の3GBの
注文6000000
パーツアップ3200000
パーツ800000
顧客600000
サプライヤー40000
国25
地域5