0

私は多くの解決策を試しましたが、まだ何かを理解していません:単純な挿入 (異なる種類の 40 列 (ブロブを含む) を使用) を取得し、この種のデータ受け渡しを挿入しようとしています (私は C# から Odac を使用します) 値の配列パラメータごとに。

結果は、多かれ少なかれ4000行のExecuteNonQueryの1回の呼び出しです。問題は、要素があまりないこの挿入が3時間続くことです。

なにか提案を?データソースはソフトウェアからのものであるため、db、そのメモリデータにリンクすることはできません。それらを配列に入れて、実行する oraclecommand の入力パラメーターとして渡すだけです。

この場合、ストアドプロシージャを使用すると違いがありますか? なぜ?

挿入は実際にはトランザクションにありますが、挿入しようとしているテーブルにはまったくインデックスがありません.dbは100個のテーブルを持つOracle XEの通常のインストールであり、トランザクションにはこの挿入だけが含まれ、それほど大きくない他のいくつかのアクションが含まれます. 挿入しようとするデータの合計は最大 100 Mb です...何をもう一度確認すればよいかわかりません:(

繰り返しますが、トランザクションはパフォーマンスに影響を与えていないようで、速度は線形ではありません。つまり、1000 要素 = 10 分、4000 要素 = 3 時間..すべて CPU 100% でメモリを大量に使用します。

4

1 に答える 1

1

4,000 行を挿入するのに 3 時間かかる? それが問題ですか?各行が数 GB の長さでない限り、このようなパフォーマンスの正当な理由はありません。C# コードではなく、データベースを確認する (または DBA に確認させる) 必要があります。

于 2012-03-16T15:24:24.213 に答える