MySQL の大きなデータ テーブルにフィールドを追加する方法

MySQL の大きなデータ テーブルにフィールドを追加する方法

序文

フィールドの追加は誰でもよく知っていると思います。簡単に記述できます。MySQL テーブルにフィールドを追加するには、次の SQL を実行するだけです。

ALTER TABLE tbl_tpl ADD title(255) DEFAULT '' COMMENT 'Title' AFTER id;

ただし、オンライン テーブルに大量のデータがある場合、フィールドを追加するとテーブルがロックされます。このプロセスには長い時間がかかったり、サービスがクラッシュしたりする可能性があるため、この操作は非常に危険です。

したがって、大きな MySQL テーブルにフィールドを追加するアイデアは次のとおりです。

① 一時的な新しいテーブルを作成し、まず古いテーブルの構造(インデックスを含む)をコピーします

old_table のようなテーブル new_table を作成します。

②新しいテーブルに新しいフィールドを追加する

③ 古いテーブルからデータをコピーする

新しいテーブルに挿入(フィールド1、フィールド2…) 古いテーブルからフィールド1、フィールド2、…を選択

④ 古いテーブルを削除し、新しいテーブルの名前を古いテーブルの名前に変更します。

ただし、3 番目のステップを実行する場合、このプロセスにも時間がかかる可能性があることに注意してください。このとき、新しいデータが入ってくるので、元のテーブルにデータが書き込まれた時間を記録するフィールドがあるのが最適です。このステップを実行した後、データを見つけて、データの差が非常に小さくなるまで繰り返し新しいテーブルにインポートすることができます。ただし、ごく少量のデータが失われる可能性があります。

したがって、テーブル内のデータが特に大きく、データの整合性を保証する必要がある場合は、操作をシャットダウンするのが最善です。

別の方法:

1. スレーブデータベースにフィールドを追加し、マスターとスレーブを切り替える

2. サードパーティのオンラインフィールド変更ツールを使用する

一般的に、数十万のデータ量の場合は、フィールドを直接追加できます。

要約する

上記は、大規模な MySQL テーブルにフィールドを追加する実装のアイデアです。この記事の内容が、皆さんの勉強や仕事に役立つことを願っています。ご質問がある場合は、メッセージを残してコミュニケーションを取ることができます。

以下もご興味があるかもしれません:
  • MYSQLは.frmを使用してデータテーブル構造を復元します
  • MySQLでテーブル構造をコピーする方法の概要
  • MySQL テーブル構造変更コマンドの概要
  • MySQL でテーブル構造を変更する方法の詳細な例
  • MySQLのテーブル構造を変更する際に注意すべき点
  • テーブル構造とテーブルデータをコピーするMySQLの方法
  • テーブル構造を変更するmysql alter tableコマンドの例
  • MySQL データ ソース テーブル構造図
  • MySQLのテーブル構造を変更する際に知っておきたいメタデータロックの詳しい解説
  • MySQL でストアド プロシージャを作成し、データ テーブルに新しいフィールドを追加する方法の分析
  • 特定のフィールド分類に従って出力されるmysqlデータテーブル
  • MySQLデータテーブルの基本操作:テーブル構造の操作、フィールド操作例の分析

<<:  node-media-serverを使用してシンプルなストリーミングメディアサーバーを構築する

>>:  Linux サーバーに埋め込まれた ddgs および qW3xT.2 マイニング ウイルスの対処の実践記録

推薦する

VirtualBox は CentOS7 仮想マシンと拡張ツールをインストールします (画像とテキスト)

コンピュータシステム: win7この記事は主に写真に基づいており、多くの写真が含まれていますCent...

MySQL 8.0.11 の新機能の紹介

MySQL 8.0 for Windows v8.0.11 公式無料バージョン 64 ビット1. デ...

VMware15.5でcentos8.1をインストールし、物理メモリが不足する問題に対処する最も完全なチュートリアル

1. 仮想マシンの準備1. 新しい仮想マシンを作成する 2. 仮想マシンのカスタマイズを選択する 3...

Nginx の add_header ディレクティブに注意する必要があるのはなぜですか?

序文ご存知のとおり、nginx 構成ファイルは add_header ディレクティブを使用して応答ヘ...

ウェブサイトのデザインでは色の階層感覚に注意を払う必要があります

最近、私はデザインには階層感覚が必要だと言っています。この階層感覚には、色の重ね合わせや要素の重ね合...

Vue ディレクティブ v-html と v-text

目次1. v-text テキストレンダリング命令2. v-html 1. v-text テキストレン...

シンプルなウェブ計算機を実装するJavaScript

背景私は新しいプロジェクト チームに配属されたので、プロジェクトでは js を使用する必要があります...

MySQLインストーラがコミュニティモードで実行されている場合の解決策

今日、リモートデスクトップを実行してログインしているときにこのプロンプトを見つけました「MySQL ...

vue+django でファイルをダウンロードする例

目次1. 概要2. Django プロジェクト3. Vueプロジェクト1. 概要プロジェクトで、ダウ...

HTML で JavaScript の全選択/全選択解除操作を実行するサンプル コード

コードをコピーコードは次のとおりです。 <html> <ヘッド> <m...

202 無料の高品質 XHTML テンプレート (1)

ここで 123WORDPRESS.COM はこれらのテンプレートの最初の部分を紹介します。各テンプレ...

ネイティブJSで実装されたギャラリー機能

目次最初2番目Native Js はギャラリー機能を実装します。画像をクリックすると、対応する拡大画...

Linux チェックアップ、Linux の状態 (ネットワーク IO、ディスク、CPU、メモリ) を把握

目次1. コアコマンド2. 共通コマンド3. コアコマンドの詳細な説明3.1、ps補助3.2 トップ...

XHTML 入門チュートリアル: テキストの書式設定と特殊文字

<br />このセクションでは、XHTML でテキストの書式設定と特殊文字を実装する方法...

Docker 可視化グラフィックツール portainer の詳細な説明

目次1. ポーテナーの紹介2. Portainer アーキテクチャの概要3. Portainerのイ...