大規模なデータテーブルのコピー効率を向上させるMySQLソリューション

大規模なデータテーブルのコピー効率を向上させるMySQLソリューション

序文

この記事では主に、MySQL で大規模なデータ テーブルのコピーの効率を向上させることに関する関連コンテンツを紹介し、参考と学習のために共有します。仕事で大規模なデータ テーブルに遭遇することはよくあります。

シナリオ: フィールドの追加や削除など、データ テーブルを変更する必要があります。これは、数万件のデータを含むデータ テーブルでは直接実行できますが、1,000 万件近くのデータを含むデータ テーブルでは実行するのは簡単ではありません。

考えられる状況:

1. データベースをクラッシュまたはフリーズさせる

2. 他のプロセスがデータベースの読み取りおよび書き込みI/Oを遅くする

3. 別の可能性としては、データ形式が不一致でデータを書き込めないということがあります(たとえば、varchar 型を int 型に変更する必要があり、データ長が大きすぎるとエラーが報告されます)。

解決: -

1. データ テーブルを再作成します。create new_table create new_table select * from old_tableこの形式は、新しいデータ テーブルをコピーするのと同じです ----(非推奨): データ テーブルのフィールドとデータのみがコピーされ、テーブル構造の主キー、インデックス、および既定値はコピーされません。

2. 2つのステップに分ける

1). create new_table create new_table like old_table

2). insert into new_table insert into new_table select * from old_table

----(データ量が少ない場合は、このソリューションを使用することをお勧めします。データ量が数百万または数千万に達すると、このソリューションは適用できません。)

拡張: データ テーブルの一部のみをコピーする場合は、 insert into new_table (field1, field2) select field1, field2 from old_table [limit n,m]; を指定できます。

3.

1). select from into outfileコマンドを使用してデータテーブルデータをエクスポートします。

2). load data infile into

では、早速図を見て、データ量が約 100 万の場合のソリューション 2 とソリューション 3 の処理速度がどの程度異なるかを見てみましょう。

>money_info から * を選択して、出力ファイル '/var/lib/mysql-files/money.txt' に格納します。 
> money_info のようなテーブル money_info_cyq11 を作成します。
>ファイル '/var/lib/mysql-files/money.txt' のデータをテーブル money_info_cyq11 にロードします。
> money_info のようなテーブル money_info_cyq22 を作成します。
> money_info_cyq22に挿入 money_infoから*を選択します。 

速度は4倍くらいで、ネットで言われている20倍の速度はまだ体験していない[顔を隠す]

注: まだ問題があります

出力ファイルディレクトリは必須です

> '%secure%' のような変数を表示します。

このコマンドを使用すると、secure_file_priv の out_file に対応するディレクトリの場所を確認し、この場所を指定してエクスポートすることができます。


要約する

上記はこの記事の全内容です。この記事の内容が皆さんの勉強や仕事に一定の参考学習価値を持つことを願っています。ご質問があれば、メッセージを残してコミュニケーションしてください。123WORDPRESS.COM を応援していただきありがとうございます。

以下もご興味があるかもしれません:
  • データファイルのコピーによる MySQL データベースの移行例
  • MySQL バックアップとリカバリのホットコピー (4)
  • MySQL の大きなデータ テーブルにフィールドを追加する方法

<<:  geo モジュールを使用して Nginx でホワイトリストを設定する例

>>:  Bootstrapはカルーセルの効果を実現します

推薦する

Linux chkconfig コマンドの使用

1. コマンドの紹介chkconfig コマンドは、システム サービスの実行レベル情報を更新および照...

MySQL最適化ソリューション: スロークエリログを有効にする

目次序文スロークエリログの設定テスト付録: ログ解析ツール mysqldumpslow要約する序文こ...

CSS を使用して、左側に固定幅、右側に適応幅を持つ 2 列レイアウトを実装する複数の方法

CSS を使用して、左側に固定幅、右側に適応幅を持つ 2 列レイアウトを実装する 7 つの方法。コー...

JavaScript のクロージャの問題の詳細な説明

クロージャは、純粋関数型プログラミング言語の伝統的な機能の 1 つです。クロージャをコア言語構造の不...

MySQLでデータベースのインストールパスを表示する方法

mysql コマンドを使用して、mysql のインストール パスを表示できます。 # 次の 2 つの...

VMware仮想マシンにdeepin20をインストールする最も完全で詳細なプロセス

仮想マシンソフトウェア: VMware Workstationイメージ: deepin-deskto...

HTML 文法百科事典_HTML 言語文法百科事典 (必読)

ボリュームラベル、プロパティ名、説明002 <! - - ... - -> コメント00...

Linux のさまざまなロックメカニズムの使用方法と違いについて詳しく説明します

序文:この知識を理解する必要がある人は、すでにプロセス間通信とスレッド間通信の基本的な理解を持ってい...

Mysqlツリー再帰クエリの実装方法

序文部門テーブルなどのデータベース内のツリー構造データの場合、部門のすべての従属部門または部門のすべ...

Javascriptのクロージャとアプリケーションの詳細な説明

目次序文1. クロージャとは何ですか? 1.1 クロージャは条件コードを満たす1.2 クロージャ生成...

MySQL の重要なログファイルの包括的なインベントリ

目次導入ログ分類パラメータファイルエラーログファイル完全なログファイルスロークエリログバイナリログフ...

Java は Apache.POI を使用して HSSFWorkbook を Excel にエクスポートします

Apache.POI の HSSFWorkbook を使用して Excel にエクスポートします。具...

HTML初心者や初級者向けの提案。専門家は無視してかまいません。

感想:私はバックエンド開発者です。静的 (HTML) ページを取得すると、ページ構造と命名規則が極端...

CSSの省略記号とパディングを組み合わせた場合の問題の詳細な説明

CSS によるテキストの切り捨てテキストを自動的に切り捨てるスタイル コードを実装するには、次のコー...

JavaScript によるダイナミッククリスマスツリーの詳細な説明

目次1. CSS のみを使用して作成したアニメーションのクリスマスツリー2. CSS のみを使用して...