0

大量のデータ(数百万)を挿入する必要があり、すばやく実行する必要があります。 .NETとJAVA上でODBC経由でバルク挿入を読みましたが、データベース上で直接実行する必要があります。Sybase SQLで一括挿入を実行する方法

私もおよそバッチ挿入を読むが、私が試してみましたが、私はINSERT SELECTを実行していますが、それは行ごとに0,360sのようなものを取って Batch InsertExample

を動作するように見えていない、これは非常に遅く、私はここでいくつかの改善を行う必要があります。

可能であれば、例とドキュメントを参考にしていただきたいと思います。 DATABASE

:コメントの一部に拡大SYBASE ASE 15.7

+1

あなたは、時間が費やされている場所を追跡することから始める必要があります...インデックスの更新? RI制約をチェックしていますか?トリガー処理?ブロッキング?過度のディスクIO時間(ディスクからのソースデータの読み取り、ログ/データページのディスクへの書き込みなど) – markp

+0

こんにちはMarkp、私は今朝のインデックス作業の後、最後のレコードが8時間で15kのアップデートと15kのインサートであったのですが、これも十分に速いかどうかはわかりません。すべてのものをチェックすることを助けるのは大変助けになります。あなたはブロックして何をしますか? – Nelssen

+0

はい私はディスクにログを書き込んでいます!このアクティビティをログに記録するのは悪い習慣ですが、 – Nelssen

答えて

1

...

  • ブロッキング、遅いディスクIO、およびその他の '待つ' イベント(すなわち、実際の挿入以外/更新アクティビティ)がmaster..monProcessWaitsテーブル(where SPID = spid_of_your_insert_update_process)から確認することができるカレンための論理/物理Oを示すであろう
  • master..monProcessObjectmaster..monProcessStatement [表(別名MDAテーブル)を監視するためのP & Tマニュアルを参照] TLY実行中のクエリ[再び、MDAテーブルのP & Tのマニュアルを参照してください]
  • master..monSysStatementUPDATE文に
  • [MDAテーブルのP & Tのマニュアルを参照してください、もう一度] 最近完了したクエリの論理/物理のIOが表示されますクエリプランを見て、結合順序が悪いかどうかを確認することをお勧めします。また重要なのは... direct(速い/いい)アップデート対deferred(遅い/悪い)アップデート; deferred多くの理由で更新が発生する可能性があります。修正可能なものもあれば、更新されないものもあります。インデックス付き列の更新、結合順序の不良、ページ分割や行転送の原因となる更新
  • RI(PK/FK)制約はsp_helpconstraint table_name;クエリプランには、挿入/更新/削除中にRI(PK/FK)検証を実行する際に必要となるアンダーザカバーの結合も表示されます。
  • トリガーを見つけるのは少し難しいです(sp_helptriggerはASE 16 ); sysobjects.[ins|upd|del]trig where name = your_tableを確認してください。これは、表の挿入/更新/削除トリガーのオブジェクトIDを表します。 sysobjectsのレコードを確認してくださいtype = 'TR' and deltrig = object_id(your_table) - 追加の挿入/更新/削除トリガーをサポートしています(ASE 16+の場合は瞬間にリコールしません)
  • トリガーが発生している場合は、 inserteddeletedテーブルが(参照されている場合)、これらの疑似テーブルは永久テーブル
  • 接合されている任意のクエリを運転していることを確認

あり、私は(私の頭の上から)忘れてる可能性が高いいくつかの領域がある...キー「遅い」DMLステートメントには多くの理由がある可能性があります。


RI(PK/FK)制約またはトリガーが再生されているかどうかを簡単に調べる方法です。

set showplan on 
go 
insert/update/delete statements 
go 

次に、結果のクエリプランを確認します。 insert/update/deleteステートメントに明示的にリストされているテーブル以外のテーブルへの参照があれば、RI制約やトリガーを扱う可能性が高いです。

+0

こんにちはmarkp、私にそのような素晴らしいコンセプトを見て、説明してくれてありがとう。このスレッドは私の側からの前例のない探求を生み出しました。そして今、私はこれをもっとよく知っています。私のパフォーマンスは大幅に改善され、バルク挿入コードが大幅に変更されました。ご協力ありがとうございました! – Nelssen

+0

あなたが言ったことから、私はちょうど直接対遅延の詳細を探る必要があります更新 – Nelssen

+1

いくつかの遅延更新を排除することはできません(例えば、インデックスの列を更新するUPDATEと可変長列を更新するUPDATEページ分割などの原因となるより大きな値に)。 – markp

関連する問題