2016-04-28 16 views
0

SSISを使用してSQL Server 2008 R2からOracle Exadataに大きなテーブル(2 TB以上)をロードする必要があります。それは特定の順序で(1または2列に基づいて)読み込むことは可能ですか?特定の順序でテーブルをロード

+2

2つのDB間でレコードが受け渡される順序を制御することはできますが、これはOracleがレコードを格納する順序とは異なる可能性があります。 –

+0

ストレージ索引のために、特定の順序(ほとんどの場合は主/外部キー)でデータをロードすると、Exadataがより速く(高速に)機能します。 – PNPTestovir

+1

データフロー内で、SQLコマンドを使用して、必要な順序でソースデータを返すことができます。 * OLE DB *または* ADO NET *ソースを使用すると、*データアクセスモード*ドロップダウンが検索されます。 –

答えて

3

ORDER BYをデータソースのクエリに配置する必要があります(ソースがSQL2008R2の場合はおそらくOLEDBソース)。これにより、データベースエンジンは作業を実行できます。

SSISソートデータ変換はパフォーマンスのボトルネックで、メモリ内で操作しようとしますが、行を出力する前に必ずデータセット全体をロードする必要があります。あなたが話しているデータ量が膨大なので、パフォーマンスはひどくなります。

+0

私はそれを行うのに十分なRAMがありません(それは、記録の百万以上です)。クラスタードインデックスを利用できますか? – PNPTestovir

+1

ORDER BYがクエリ内にある場合は、* server * RAM/tempdbのスペースが制限要因になります。サーバーに実際にRAMが不足していますか? SSISパッケージ内でソートせずにメモリが不足している場合は、パッケージ内の完全にブロックされたコンポーネントが存在し、クライアント(dev)マシンにデータセット全体を強制的にロードさせる可能性があります。 http://sqlblog.com/blogs/jorg_klein/archive/2008/02/12/ssis-lookup-transformation-is-case-sensitive.aspx – SebTHU

+1

BIDSを使用している間は、ローカルPCのメモリになります(et。 al。)私は推測するだろうか? – BIDeveloper

関連する問題