質問は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 に変更する方法
CSS3 を学ぶということは、新しい機能と基本的な理論に慣れることを意味します。この記事では、ケー...
目次背景MySQLが完全に起動したかどうかを確認する方法事故最初の変更2回目の改訂要約するMySQL...
ただし、デフォルトの src を持つ <img> 要素を使用してスクロール読み込み効果を...
Vueのメソッドとプロパティ1. 方法使用法 1メソッド: {メソッド名: function(){}...
目次rocketmqイメージを取得する名前rvを作成する単一のブローカーノードを作成するrocket...
目次Vueプロジェクトのパッケージ化、起動、最適化Vueプロジェクトのパッケージ化プロジェクトホステ...
1. 対象環境Windows 7 64ビット2. 材料(1)VC++2010リリースパッケージ(64...
目次1. DOM の違い2. 同じレイヤーの同じタイプの要素にキー属性を追加する3. キーはインデッ...
目次1. 基本的な文法2. 条件式によるフィルタリング3. 論理式によるフィルタリング4. あいまい...
問題現象最近、sysbench を使用して MySQL をテストしました。テストに長い時間がかかった...
この記事の例では、画像切り替え効果を実現するためのVueの具体的なコードを参考までに共有しています。...
目次vue2.xプレコンセプト:ルーティングフックのカテゴリルーティングとコンポーネントの概念(フッ...
序文MRR は Multi-Range Read の略で、ランダム ディスク アクセスを削減し、ラン...
シミュレーションテーブルとデータスクリプト次の SQL ステートメントをコピーして、sys_dept...
1. はじめにスロークエリログを有効にすると、MySQL は指定された時間を超えるクエリステートメン...