2012-04-19 12 views
2

MySQLサーバへのリモート接続(MySQLコマンドラインフロントエンドを使用)を確立した後、私は非常に長いストアドプロシージャを実行し始めました(私はそれが7時間以上かかるかもしれないと推測します)エラー:接続中に接続が失われた場合、クエリは正しいですか?

ERROR 2013(HY000):クエリ

中のMySQLサーバーへの失われた接続は、だから、私は、クエリがタイムアウトを得たことを推測します。このプロシージャは、単に空のテーブル にいくつかの値を格納します。

このエラーを受けてサーバーへの接続を再確立した後で、私は という手順で何らかの形で実行が継続していることを確認できます。そして、しばらくして、私は に、以前空のテーブルにいくつかの行があることを確認しました。

私の質問は、 接続が失われても、プロシージャの実行が正しいと信じることができますか?

+3

7時間は超長時間です。それを少しでも最適化できないのですか? –

+0

@SoboLAN - 遅いSQLだけでなく、リモートサーバーへのネットワーク待ち時間になる可能性があります。いずれにしても、この状況は準最適と言えます。 –

+0

私がしようとしていることは、それが長いことです。私は300000rowsと8列のテーブルを持っています。もし(1,2,3,4,5)と(1,2,5,4) 、3)表では、私はちょうどそれらの行の1つを保持し、他の行を削​​除したい。 – user1261701

答えて

0

まず、7時間が長すぎるようです。 incompolete結果が気になる場合は、N個のクエリが完了したときにセーブポイントを追加し、N個のクエリを1つのトランザクションに結合することができます。その後、プロシージャが例外的に停止するたびに、最後に保存したポイントをロードできます。

私はまたあなたのローカルPCにソースデータを選択し、結果を得るためにいくつかのスクリプトを作成して、それをターゲットテーブルにアップロードしようとすることをお勧めします。これにより、dbサーバーのオーバーヘッドが削減されます。

関連する問題