mysql バッチで大量のデータを削除する 1000万件のレコードを持つテーブル(syslogs)があるとします。業務を停止せずに、statusid=1のレコードをすべて削除する必要があります。レコードは約600万件あります。DELETE FROM syslogs WHERE statusid=1を直接実行すると、ロック待機タイムアウト超過エラーのため削除が失敗することがわかります。 このステートメントにはレコードが多すぎるため、LIMIT パラメータを使用して、たとえば 10,000 レコードごとに削除するなど、バッチで削除します。 MySQL は次のステートメントで完了できます。 DELETE FROM syslogs WHERE status=1 ORDER BY statusid LIMIT 10000; その後、これを複数回実行することで、これらのレコードを正常に削除できます。 注記: 大規模な削除を実行する場合は、必ず limit を使用してください。制限を使用しない場合、大量のデータを削除するとデッドロックが発生する可能性が高くなります。 削除の where 句がインデックス上にない場合は、まず主キーを見つけて、主キーに基づいてデータベースを削除できます。 誤操作を防ぐために、更新および削除時に制限 1 を追加するのが最適です。 読んでいただきありがとうございます。お役に立てれば幸いです。このサイトをサポートしていただきありがとうございます。 以下もご興味があるかもしれません:
|
<<: Vue2.x - アンチシェイクとスロットリングの使用例
>>: Tomcatを自動的に開始するサービスとして設定するにはどうすればいいでしょうか?最も簡単な方法
MariaDB データベース管理システムは MySQL のブランチであり、主にオープンソース コミュ...
技術初心者として、初めて Linux システムをインストールするプロセスを記録しています。まず、Wi...
1. HTMLとは何かHTML (ハイパーテキスト マークアップ言語): ハイパーテキスト マーク...
目次マスターの後ろの秒数オリジナルの実装最終マスタータイムスタンプマスターとのクロック差他の実行時間...
必要:ハードコードされたデータの代わりに、セレクター内のオプション値の動的な表示を実装します。私のロ...
1. <dl>はリストを定義し、<dt>はリスト内の項目を定義し、<d...
注: ソフトウェアのインストールの基本ディレクトリ パスは /usr/local です。ソフトウェア...
目次1. 存在する1.1 説明1.2 例1.3 交差/2017-07-21 2. 除く2.1 説明2...
脆弱性の説明Apache Flink は、分散ストリームおよびバッチ データ処理用のオープン ソース...
目次序文議論の基本概念議論の役割実パラメータと仮パラメータの数を取得する実際のパラメータ値を変更する...
Navicat クライアントを通じてデフォルトの日時値を変更する際に問題が発生しました。データベース...
docker イメージを使用する場合、以下に示すように、REPOSITORY と TAG の両方が ...
「ウェブサイトを高級感のあるものにするにはどうすればいいでしょうか? それともデザイン重視にすればい...
Dockerでnginxをデプロイするのはとても簡単ですたった 1 行のコマンド: docker 実...
非同期レプリケーションMySQL レプリケーションは、デフォルトでは非同期です。マスター スレーブ ...