2011-12-08 28 views
0

バッチごとに80kレコードと1200レコードを挿入するためのバッチインサートを実行しています。 クエリが正常に実行されています。問題は、mssqlサーバーからデータを取得し、バッチ配列を作成していることです。そのため、バッチインサートの何らかの理由で変更が発生しています。mysqlバッチ挿入

しかし、バッチインサートが失敗すると、そのバッチのすべての1200レコードに対して実行されます。

したがって、バッチ挿入に失敗した1200レコードのバッチから正確なレコードを取得する方法を見つける方法はありますか。

もう1つ質問があります。

これらの挿入を行っている間、Webサイトは更新時に停止します。

この間もサイトがダウンしていない方法はありますか?

ご協力いただければ幸いです。あなたのボトルネックがサーバーであるよう

おかげ

+0

...ログファイルをチェックし、返信用 – ComputerSaysNo

+0

おかげではなく、ファイルをバッチクエリはテーブルに(列)の値()、()、()....を挿入意味が表示されます記録されます。どの特定の挿入がバッチを失敗させたかはわかりません。 –

+0

バッチを見つけて問題を見つけることができるということに基づいて、ログファイルのどこかにエラーラインがなければなりません。 – ComputerSaysNo

答えて

2

ないツールを使用すると、サーバーの負荷がトランザクションを使用するか、または「遅延挿入」を使用するかのいずれかである下げるために何ができるか ...、あなたがより高いパフォーマンスが得られます。

取引:[http://dev.mysql.com/doc/refman/4.1/...-commands.html] あなたのDBのサポートは、(mysqlはMySQLのバージョンに依存し、それをサポートするために、特定のバックエンドを必要とする場合があります)、あなたは、すべてあなた挿入した後、1を送り、「tansactionを起動し、」送信することによって、トランザクションを開始した場合もう一方は「コミット」または「ロールバック」でトランザクションを終了します。 このメソッドは、dbがコミットを行う前にインデックスを再計算する必要がないことを知っているという大きな利点があります。

insert delay:[http://dev.mysql.com/doc/refman/4.1/...t-delayed.html] これは特別なmysqlコマンドで、挿入物の重要性についてヒントを与えることができます。 dbが占有されていないときには、挿入された遅延が常に処理されます。これは、標準の挿入/更新と比較して優先順位が低くなります。

+0

お返事ありがとうございました。トランザクションに問題があり、使用できません。遅ればせながら、私のサイトは商品販売とオークションサイトです。インサートディレイは実際のインサートが行われる時間を保証するものではありませんので、製品コストやオークションへの変更は即座に反映されません。だから私はそれのために行かなかった。 –

+0

もちろん、mysqlサーバの負荷と時間などを表示するツールはありません –

+0

これは、使用しているプログラミング言語のスクリプトで行います。適切なチェックを適用し、エラーを処理します。 –