01 シナリオ分析今日の午後、開発仲間がオンラインでいくつかのデータレコードを削除するという要件を提案しました。データ分布をざっと見たところ、データテーブル内の2,700万件以上のレコードを削除する必要があると推定されました。データテーブル内のレコードの総数は2,800万件を超えており、削除対象のレコードがレコード総数の大部分を占めていることを意味します。2,700万件以上のデータレコードを削除すると、それらを使用するのに長い時間がかかり、オンラインビジネスに間違いなく影響します。ここでは、実際のアプリケーション ケースを次の方法で単純に再構築します。 mysql> test.tbl_a から date,count(*) を選択し、日付でグループ化します。 +----------+-----------+ | 日付 | カウント(*) | +----------+-----------+ | | 63103 | | 20190118 | | | | 125916 | | 20190120 | | | | 129198 | | 20190122 | | | | 5191247 | +----------+-----------+ セット内の行数 (13.21 秒) 上記は再構築されたテーブルの構造です。テストデータベースのテーブル tbl_b を日付別にグループ化すると、各グループのデータ量は少なくないことがわかります。要件は、日付が 20190118 と 20190123 のレコードを削除することです。この 2 種類のレコードは 2,000 万件以上あり、テーブル内のデータの大部分を占めていることがわかります。これらを直接削除すると、オンラインビジネスは間違いなくブロックされます。 操作方法は以下の通りです。なお、以下の操作方法を適用する前提は以下のとおりです。 削除されるデータは、データ テーブルの大部分を占めます。 02 操作方法分析により、残りのテーブル データはテーブル全体のごく一部であることがわかります。この操作は 4 つのステップに分かれています。 1. まず残りのデータを別のデータベース test1 に保存します。 テーブルtest1.tbl_b_newを作成します test.tbl_b から * を選択 日付は(,,,,); この操作には約 3 秒しかかかりません。 2. test1 データベースに同じ名前のテーブル tbl_b を作成します。その構造は、テスト データベースの tbl_b データ構造と一致します。 test.tbl_b のようなテーブル test1.tbl_b を作成します。 3. 次に、データベースの名前変更操作を使用して、テーブル test のテーブル tbl_b を test1 のテーブル tbl_b と交換します。これは、テスト データベースのテーブル内のすべてのデータをクリアすることと同じです。 テーブル名をtest.tbl_bからtest1.tbl_b_bakに変更します。 test1.tbl_b から test.tbl_b へ、 test1.tbl_b_bak を test1.tbl_b へコピーします。 4. 次に、最初の手順で保存した残りのデータを次のように新しいテーブルに入力します。 test.tbl_b に挿入します。test1.tbl_b_new から * を選択します。 03 結果分析問題を複雑にしてしまったようです。直接削除にいくつかの手順を追加しました。しかし、そうではありません。この一連の操作により、数分間の節約が可能になり、オンライン ビジネスへの影響も少なくなります。その理由は次のとおりです。
2 番目の機能は、私たちにアイデアを提供します。非常に緊急の業務では、テーブルを使用する必要がある場合、テーブルをバックアップする時間が十分にないことがよくあります。大きなテーブルのデータを削除し、関連するバックアップを作成する必要がある場合は、名前変更操作を通じてすばやく処理し、名前変更後にテーブルをバックアップする方法を見つけることができます。 上記の例では、テーブルを複製する 2 つの方法 (create table as と create table like) を使用しています。注意すべき点がいくつかあります。 create table のようなメソッドはテーブル構造を完全に複製しますが、データは挿入しません。データを個別にロードするには、insert into または load data メソッドを使用する必要があります。 興味があれば、実験を行って検証してみるのも良いでしょう。 上記は、MySQLオンラインデータベースのデータをクリーニングする方法の詳細な内容です。MySQLオンラインデータベースのデータをクリーニングする方法の詳細については、123WORDPRESS.COMの他の関連記事に注目してください。 以下もご興味があるかもしれません:
|
<<: jquery+springbootでファイルアップロード機能を実現
目次スロークエリログとは何ですか?スロークエリを有効にする方法ログ分析ツール mysqldumpsh...
1. 計算プロパティとリスナー1.1 計算プロパティ <!DOCTYPE html> &...
まず、transform-origin 属性を使用する必要があります。transform 属性は必ず...
1. インデックスはnull値を保存しないより正確に言うと、単一列インデックスには null 値は格...
login.html 部分: <!DOCTYPE html> <html lang...
今日この問題に遭遇しました。サーバー側でiframeのsrc値を再割り当てし、iframeにIDを追...
この文書はMySQL Server 8.0.3のインストールと設定方法を参考のために記録したものです...
HTML テーブルを使用する場合、行間隔を変更する必要がある場合がありますが、余白、パディング、折り...
この記事では、スライド選択効果を実現するピッカーをシミュレートするjQueryの具体的なコードを参考...
問題の説明:フロントエンドがデータの一部を削除したり、新しいデータを追加したりすると、バックエンドの...
序文負荷分散には nginx を使用します。アーキテクチャのフロントエンドまたは中間層として、トラフ...
1. まず、純粋なHTMLファイルにはindex.htmlというエントリが必要です。 2. Tomc...
序文この友人がどれくらいDockerを使っていなかったのかは分かりませんが、突然Dockerコマンド...
目次問題の概要問題の再現問題の拡大結論は問題の概要今日、仕事中に、DBA が突然、SQL に暗黙的な...
GreaseMokey (中国語では Grease Monkey Script と呼んでいます) は...