私はたくさんのソリューションを試しましたが、私はまだ何かを理解していません。私は単純な挿入を持っています(別の種類の40列のものがあります)各パラメータの値の配列)は、C#1からODACを使用する。Oracleのバルク挿入パフォーマンス
結果が問題ない要素のあまり最後の3時間で、このインサートということである、多かれ少なかれ4000rowsためのExecuteNonQueryの単一の呼び出しである。
どれでも提案?データソースはソフトウェアからのものであり、db、そのメモリデータにリンクすることはできません。それらを配列に入れて、oracleコマンドの入力パラメータとして渡して実行します。
この場合、ストアドプロシージャを使用して差をつけますか?どうして?
実際に挿入されたインサートは、テーブルには全くインデックスがありません。挿入しようとすると、100個のテーブルを持つOracle XEの通常のインストールにトランザクションが挿入されます。大きい。トランザクションはすなわち1000elements、パフォーマンスとスピードイマイチ直線的に影響を与えないようだ= 10分、4000element = 3時間:私は挿入しようとする 合計データは、100 Mbの最大...私は再びチェックすべきか知っている:(
再びいけないです..CPU 100%とメモリの大量使用で全部
私たちは解決策と理由を排除/調査することができるように気をつけてください。 – Ollie
いくつかの可能性があります:1.複雑な/多数の(データベース管理者に)各挿入後に更新する必要があるインデックス(後で挿入+再作成中に無効にすることを検討してください)2.挿入された各行の後にトリガーされるオン・インサート・トリガー –
はトランザクション中にコミットしていますか?例=> OracleTransaction trans ... cmd.ExecuteNonQuery(); trans.Commit(); trans.Dispose();プロシージャはコミットしていますか? – tbone