大規模なデータテーブルのコピー効率を向上させる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はカルーセルの効果を実現します

推薦する

検索履歴を実装するjQueryプラグイン

毎日jQueryプラグイン - 検索履歴を作成するためのものです。参考までに、具体的な内容は次のとお...

バックエンド管理システムを構築するためのvue-element-adminの実装手順

最近、カンファレンスの健康申告システムに取り組んでいたとき、バックエンドを構築する必要があり、vue...

MySQL の遅いクエリの例

導入スロークエリログを有効にすると、MySQL は指定された時間を超えるクエリステートメントを記録で...

Ubuntu 基本チュートリアル: apt-get コマンド

序文apt-get コマンドは、Ubuntu システムのパッケージ管理ツールです。パッケージのインス...

mysql 8.0.18 mgr のインストールと切り替え機能

1. システムインストールパッケージ yum -y インストール make gcc-c++ cmak...

VMware での Ubuntu と Windows 間のファイル共有

この記事では、VMware 環境下で Ubuntu と Windows 間でファイルを共有する方法を...

Vueは左上と右上のスライドナビゲーションを実装します

ナビゲーションなどは日々の開発でよく使うので、記録として記事を書きます。ナビゲーションは終了/開始位...

Linux lsコマンドの使用

1. はじめにls コマンドはディレクトリの内容を表示するために使用され、Linux で頻繁に使用さ...

Reactはページの透かし効果の全プロセスを実現します

目次序文1. 使用例2. 実施プロセス3. コンポーネントコード要約する序文1. cavans では...

SSHを使用してDockerサーバーに接続する方法

初めて docker に触れたときは本当に戸惑いました。初心者向けのチュートリアルを長い間読みました...

Linuxシステムにおけるプロセス管理の詳細な説明

目次1. プロセスとスレッドの概念2. プロセス管理とは何ですか? 3. プロセス管理の役割4. L...

Linux コンパイル最適化で習得しなければならないいくつかの姿勢のまとめ

01. コンパイルオプションとカーネルコンパイルLinux カーネル (英語: linux kern...

キーボード上の各種特殊記号の英語読み方(知識の普及)

キーボード文字英語`バッククォート〜チルダ!叫ぶ@で#ナンバーサイン$ドル%パーセント^キャレット&...

MySQL 5.7 共通データ型

——「MySQL in Simple Terms (第 2 版)」からのメモ数値型整数型バイト最小最...

js は axios 制限リクエスト キューを実装します

目次背景は次のとおりです。何が起こるでしょうか?背景は次のとおりです。実際の開発では、ネットワークの...