0

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

しかし、バッチ挿入が失敗すると、その特定のバッチの 1200 レコードすべてに対して失敗します。

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

そしてもう1つ質問です。

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

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

どんな助けでも大歓迎です。

ありがとう

4

1 に答える 1

2

ボトルネックはサーバーであるため、パフォーマンスを向上させるツールはありません...サーバーの負荷を下げるためにできることは、トランザクションを使用するか、「遅延挿入」を使用することです。

トランザクション: [ http://dev.mysql.com/doc/refman/4.1/...-commands.html ] データベースがサポートしている場合 (mysql のバージョンによっては、サポートするために特定のバックエンドが必要になる場合があります)、 「start tansaction」を送信してトランザクションを開始し、すべての挿入を次々に送信し、「commit」または「rollback」でトランザクションを終了します。この方法には、コミットを行う前にインデックスを再計算する必要がないことをデータベースが認識しているという大きな利点があります。

挿入遅延: [ http://dev.mysql.com/doc/refman/4.1/...t-delayed.html ] これは特別な mysql コマンドで、データベースの重要性についてヒントを与えることができます。入れる。挿入の遅延は、データベースが他の処理で占有されていない場合に常に処理されます。標準の挿入/更新に比べて優先度が低くなります。

于 2011-12-08T09:18:09.913 に答える