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 マイニング ウイルスの対処の実践記録

推薦する

トークンの有効期限が切れたときにページを更新するときに繰り返しプロンプトが表示されないようにする Vue について

トークンの有効期限が切れたら、ページを更新します。ページの読み込み時にバックエンドに複数のリクエスト...

MySql ログイン パスワードを忘れた場合とパスワードを忘れた場合の解決策

方法1: MySQL では、次のコマンド ラインで MySQL サーバーを起動することにより、アクセ...

K3s 入門ガイド - Docker で K3s を実行するための詳細なチュートリアル

k3dとは何ですか? k3d は、Docker で K3s クラスターを実行するための小さなプログ...

Vue3 のリアクティブ関数 toRef 関数 ref 関数の紹介

目次リアクティブ機能使用法: toRef 関数 (理解するだけ)使用法: ref関数レスポンシブデー...

ffmpeg 中国語パラメータの詳細な説明

FFMPEG 3.4.1 バージョンパラメータの詳細使用方法: ffmpeg [オプション] [[入...

このような大画面のデジタルスクロール効果が必要になる場合があります

大画面のデジタル スクロール効果は、最近の作業における大画面 UI ダイアグラムから生まれました。U...

MySQL シリーズ II マルチインスタンス構成

チュートリアルシリーズMySQL シリーズ: MySQL リレーショナル データベースの基本概念My...

React+axios は github 検索ユーザー機能を実装します (サンプル コード)

負荷リクエスト成功リクエストに失敗しました cmdをクリックし、ファイルパスでEnterキーを押しま...

Linux lsof コマンドの使用方法の詳細な説明

lsof (開いているファイルのリスト) は、プロセスによって開かれたファイルを表示するツールです。...

MySQL 8.0 のインストール中に発生した 3 つの小さなエラーの概要

序文これまで当社ではMySQLの5.7シリーズを使用していましたが、バージョン8.0のリリースに合わ...

クロスブラウザ開発体験のまとめ(I)HTMLタグ

ページにDOCTYPEを追加するブラウザによってタグやスタイルシートの解釈が異なるため、さまざまなブ...

VMware ワークステーション 12 に Ubuntu 14.04 (64 ビット) をインストール

1. インストール環境コンピュータモデル: Lenovo Y471a (i5) ノートパソコンシステ...

WeChatアプレットキャンバスが署名機能を実装

WeChatアプレットプロジェクトでは、開発モジュールに手書き署名機能が含まれ、WeChatアプレッ...