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を自動的に開始するサービスとして設定するにはどうすればいいでしょうか?最も簡単な方法
目次frm ファイルと ibd ファイルの紹介frm ファイル回復テーブル構造ibd ファイル回復テ...
Linux ヘルプ ドキュメントでの echo の説明は、Python や Java などのプログラ...
この記事は主に、docker デプロイメント springboot プロジェクトのサンプル分析を紹介...
仕事の都合上、最近 HTML を PDF に変換する機能について調べることに時間を費やしました。 H...
1.位置:固定一部の Web サイトの右下隅にあるポップアップ ウィンドウなどの、ブラウザーを基準と...
ここ数年、ウェブサイト開発では DIV+CSS が非常に人気があり、当時は大きな騒動を引き起こしまし...
入力ボックスが小さい場合、内容を入力した後に、入力内容が拡大されたプロンプト ボックスを表示したいこ...
現在、多くの企業が割引コードを通じてプロモーションを行っています。今では、8桁の割引コードを実装して...
目次1. 需要2. データベース設計3.Javaバックグラウンド構成の実装4. WeChatアプレッ...
この記事では、全選択と逆選択操作を実装するためのjQueryの具体的なコードを参考までに共有します。...
ホストとコンテナ間でファイルを転送するには、コンテナの完全な ID が必要です。取得方法は以下の通り...
目次1. MySQLレプリケーション関連の概念2. シンプルな1マスター1スレーブアーキテクチャの実...
北西を見ると私の故郷はどこにあるでしょうか。南東の満月を何度見たことがあるでしょうか。月が再びゆっく...
MySQLへのリモートアクセスを有効にするデフォルトでは、MySQL ユーザーにはリモート アクセス...
UI デザインにおける多くの概念は言葉で言えば似ているように見えるかもしれませんが、実際には大きく異...