-2

約1.8GBのデータベースからデータを削除しています。(C# アプリ経由)

小さなデータベース(〜600MB)での同じ操作は問題なく実行されますが、大きなデータベースでは次のようになります。

ロック待機タイムアウトを超えました。トランザクションを再開してみてください。

問題を解決しますinnodb_lock_wait_timeoutか、それとも別の方法がありますか?

クエリを単純化する方法がないため、クエリを最適化することは解決策ではないと思います。


すべてのデータではなく、条件と関係に関するデータの一部を削除しています。

4

4 に答える 4

0

あなたは、「すべてのデータではなく、いくつかの条件と関係に基づいてデータの一部を削除している」と述べました。削除するデータをフィルタリングするために使用しているすべてのキーに適切なインデックスがあることを確認します。

スキーマと where 句を見せていただければ、役立つ可能性のあるものを提案できます。

また、削除を少数の行の複数のバッチに分割することも検討する必要があります。

もう 1 つの方法は、別のテーブルに保持したいデータのみを使用して SELECT INTO を実行し、元のデータを削除してから、この新しいテーブルの名前を変更することです。

于 2016-06-24T09:54:24.287 に答える