質問はhttps://www.zhihu.com/question/440066129/answer/1685329456から参照されています。MySQLでは、テーブルに3億のデータがあり、テーブルに分割されていません。フィールドの1つは企業タイプです。企業タイプは一般企業と自営業者です。自営業者のデータ量は約50%を占めています。条件に従って、自営業者の行はすべて削除されます。どうすればいいですか?答えはオリジナルです テーブルエンジンはInnodb、MySQL 5.7以降であると仮定します。 レコードを削除するには、まずレコードをロックし、元のデータを破棄し、主に削除マークを追加してレコード ヘッダーを変更します。つまり、元のデータのdeleted_flagが1になり、データが削除されたことを示します。ただし、データはクリアされず、新しい行のデータのサイズがこの行のサイズよりも小さい場合は、この行を占有する可能性があります。これは実際にはストレージの断片化です。 その後、データをクリアするには、関連データのインデックスを更新する必要があります。さらに、対応する binlog および redolog ログが生成されます。
解決削除後に制限を追加することで削除回数を制御できると考えるのは簡単です。この回数はインデックスを通過するため、テーブル全体がロックされることはありません。 しかし、ストレージの断片化、マスターとスレーブの同期、スペースの占有などの問題は解決されていません。削除が完了したら、次のステートメントを使用してテーブルを再構築できます。 テーブルを変更します。engine=InnoDB、ALGORITHM=INPLACE、LOCK=NONE; この文は実際にテーブルを再構築することに注意してください。テーブルのエンジンはすでに InnoDB ですが、最後に ALGORITHM=INPLACE, LOCK=NONE を追加すると、テーブルをロックせずに再構築できます。 別の解決策としては、同じ構造を持つ新しいテーブルを作成し、元のテーブルにトリガーを追加することです。 各行の元のテーブルに更新後にトリガー person_trigger_update を作成します。 begin set @x = "トリガーUPDATE"; 新しいテーブルに置き換えます。SELECT * from original table where new table.id = original table.id; 終了の場合; 終わり; これにより、オンライン ビジネスの新しいデータが同期されるようになります。その後、すべてのエンタープライズ タイプのデータを新しいテーブルに挿入します。データがすでに存在する場合、更新同期が行われていれば挿入されません。業務変更により、このテーブルでは各世帯のデータが更新されないため、テーブルロックなしの同期によって大規模テーブルのデータクリーニングが実現されます。 これで、MySQL テーブル内の大量データの一括削除の実装方法についての記事は終了です。MySQL テーブル内の大量データの一括削除の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
>>: nginx で http でアクセスする Web サイトを https に変更する方法
1. MySQL 8.0.16を解凍する次の図に示すように、解凍後にdadaフォルダとmy.ini構...
VNodeとはvue.js には VNode クラスがあり、これを使用してさまざまな種類の vnod...
目次1. シナリオ例1.1. 抽選の賞品名を設定する1.2. 各賞の重みを設定する1.3. ラッキー...
React コンポーネントのライフサイクル機能とは何ですか?ライフサイクル関数は、ES6 構文クラス...
Linux の seq コマンドは、数字のリストを非常に高速に生成でき、使いやすく柔軟性に優れてい...
目次ログインビジネスプロセスログイン機能の実装要約するまず、エフェクトの実装プロセスを見てみましょう...
この記事では、MySQL 8.0.12 の解凍版のインストールと設定方法を記録し、皆様と共有します。...
この記事では、ページ印刷の自動ページングを実現するためのVueの具体的なコードを例として紹介します。...
トムキャット公式サイトtomcatはローカルサーバーと同等であり、Webページを開くことができます設...
目次1. 概要2. MySQLデータ型の詳細な説明1) 文字列型2) 整数型3) 浮動小数点型4) ...
概要バックグラウンド管理システムには多くのフォーム要件があります。データをjson 形式で書き込み、...
HTML イベント リスト一般イベント: onClick HTML: マウスクリックイベント。主にオ...
1行のコマンド docker run -d \ -v /share:/home/vsftpd \ -...
チェーンプログラミングの実装原理jQuery を使用すると、開発者は常にドット構文を使用して独自のメ...
1. ポート 80 が占有されているかどうかを確認します。通常、ポート 80 は Apache サー...