mysql バッチで大量のデータを削除する

mysql バッチで大量のデータを削除する

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 を追加するのが最適です。

読んでいただきありがとうございます。お役に立てれば幸いです。このサイトをサポートしていただきありがとうございます。

以下もご興味があるかもしれません:
  • PHP で MySQL 内の同じプレフィックスを持つデータ テーブルを一括削除するコード

<<:  Vue2.x - アンチシェイクとスロットリングの使用例

>>:  Tomcatを自動的に開始するサービスとして設定するにはどうすればいいでしょうか?最も簡単な方法

推薦する

MySQLはテーブルデータを復元するためにfrmファイルとibdファイルを使用します

目次frm ファイルと ibd ファイルの紹介frm ファイル回復テーブル構造ibd ファイル回復テ...

Linux echo テキスト処理コマンドの使用法と例

Linux ヘルプ ドキュメントでの echo の説明は、Python や Java などのプログラ...

Docker デプロイメント Springboot プロジェクト例の分析

この記事は主に、docker デプロイメント springboot プロジェクトのサンプル分析を紹介...

HTML から PDF への変換事例の概要 (複数の画像を推奨)

仕事の都合上、最近 HTML を PDF に変換する機能について調べることに時間を費やしました。 H...

HTML の基本 - CSS スタイルシート、スタイル属性、フォーマット、レイアウトの詳細

1.位置:固定一部の Web サイトの右下隅にあるポップアップ ウィンドウなどの、ブラウザーを基準と...

セマンティック HTML タグの紹介

ここ数年、ウェブサイト開発では DIV+CSS が非常に人気があり、当時は大きな騒動を引き起こしまし...

入力ボックスのコンテンツプロンプトと非表示機能を実装する JavaScript

入力ボックスが小さい場合、内容を入力した後に、入力内容が拡大されたプロンプト ボックスを表示したいこ...

8桁の割引コードをランダムに生成し、MySQLデータベースに保存します。

現在、多くの企業が割引コードを通じてプロモーションを行っています。今では、8桁の割引コードを実装して...

WeChatアプレット開発によりホームページポップアップボックスアクティビティガイダンス機能が実現

目次1. 需要2. データベース設計3.Javaバックグラウンド構成の実装4. WeChatアプレッ...

jQueryはすべての選択と逆選択操作ケースを実装します

この記事では、全選択と逆選択操作を実装するためのjQueryの具体的なコードを参考までに共有します。...

Dockerコンテナとローカルマシン間でファイルを転送する方法

ホストとコンテナ間でファイルを転送するには、コンテナの完全な ID が必要です。取得方法は以下の通り...

MySQL シリーズ 13 MySQL レプリケーション

目次1. MySQLレプリケーション関連の概念2. シンプルな1マスター1スレーブアーキテクチャの実...

MySql のサブクエリ内のクエリ例の詳細な説明

北西を見ると私の故郷はどこにあるでしょうか。南東の満月を何度見たことがあるでしょうか。月が再びゆっく...

Ubuntu 16.04 mysql5.7.17 リモートポート 3306 を開く

MySQLへのリモートアクセスを有効にするデフォルトでは、MySQL ユーザーにはリモート アクセス...

フローチャートとUIフローの違い

UI デザインにおける多くの概念は言葉で言えば似ているように見えるかもしれませんが、実際には大きく異...