リファレンス ガイド: MySQL および MariaDB オンライン DDL
MySQL チュートリアル このコラムでは、MySQL と MariaDB Online DDL を紹介し、ガイドします。
概要
初期の MySQL バージョンでは、DDL 操作 (インデックスの作成など) には通常、データ テーブルをロックする必要がありました。プロセス中にブロックされ、通常のビジネスに影響します。 MySQL 5.6 および MariaDB 10.0 は、DML の通常の実行に影響を与えることなく DDL 操作を実行できるオンライン DDL のサポートを開始します。オンラインでの DDL 操作の直接実行は、基本的にユーザーには見えません (一部の操作はパフォーマンスに影響します)。
データベースのバージョンが異なると、さまざまな DDL ステートメントのサポートに特定の違いがあります。この記事では、オンライン DDL に対する MySQL と MariaDB のサポートについて要約します。DDL 操作を実行する必要がある場合は、この記事を参照してください。 オンライン DDL サポートセクション。
この記事は今後も改訂および更新されます。最新の内容については、GITHUB 上の私のプログラマー成長計画プロジェクトを参照してください。スターは大歓迎です。さらにエキサイティングなコンテンツについては、フォローしてください。
ALTER TABLE
ステートメントでは、オンライン DDL は ALGORITHM
ステートメントと LOCK
ステートメントを通じてサポートされています。
- - DDL 操作の実行方法と使用するアルゴリズムを制御します。
-
LOCK
- DDL -
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">ALTER TABLE tab ADD COLUMN c varchar(50), ALGORITHM=INPLACE, LOCK=NONE;复制代码</pre><div class="contentsignin">ログイン後にコピー</div></div> の実行時に許可されるテーブル ロックのレベルを制御します。
ALGORITHM サポートされるアルゴリズム
COPY | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
テーブルのコピーと再構築をできるだけ避けてください。より正確な名前は、 | ENGINE | アルゴリズムである必要があります。|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
NOCOPY このアルゴリズムは、INPLACE アルゴリズムのサブセットであり、 | に使用されます。テーブル全体の再構築を引き起こすクラスター化インデックス (主キー インデックス) の再構築を回避します ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
INSTANT は、INPLACE を回避するために使用されます。データ ファイルを変更する必要がある場合、このアルゴリズムは非常に非効率的です。 | テーブルのコピーと再構築を伴うすべての操作禁止されます||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
# |
説明 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
現在の操作でサポートされる最小の粒度ロック ポリシー | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
テーブル ロックを取得せず、すべての DML 操作を許可します | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
共有ロック (読み取りロック) をテーブルに追加し、読み取り専用の DML 操作のみを許可します | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
排他ロックをテーブルに追加します。テーブル (書き込みロック)、DML 操作は許可されません |
操作 | INSTANT | INPLACE | テーブルの再構築 | 同時実行DML | メタデータのみを変更します |
---|---|---|---|---|---|
セカンダリ インデックスを作成または追加します | ❌ | ✅ | ❌ | ✅ | ❌ |
インデックスを削除 | ❌ | ✅ | ❌ | ##✅✅ | |
#❌ | ✅ | ❌ | ✅ | ✅ | |
インデックスを追加 ❌ |
✅ ① | ❌ ① | ❌ | ❌ | |
インデックス (⚠️MySQL 5.7、MariaDB 10.2.2) ❌ |
✅ | ❌ | ❌ | ❌ | #インデックス タイプの変更 |
✅ | ##❌ | ✅ | ✅ | 手順: |
- 主キー
INPLACE | テーブルの再構築 | 同時 DML | #メタデータのみの変更#主キーの追加 | ||
---|---|---|---|---|---|
✅ ② | #✅❌ | #プライマリキーを削除 | ❌ | ❌ | |
❌ | ❌ | #主キーを削除し、新しいキーを追加します | ❌ | ✅ | ✅ |
❌ | ##手順: | クラスター化インデックスの再構築には常にテーブル データのコピーが必要です (InnoDB は「インデックス構成テーブル」です)。したがって、テーブルの作成時に主キーを定義することが最善です。主キーを指定せずにテーブルが作成された場合、InnoDB は最初の | NOT NULLUNIQUE |
INPLACE
モードを使用します。- COPY
- モードよりも効率的です。 undo ログ
- および
redo ログ
は生成されず、セカンダリ インデックスは順序付けされているため、順番にロードできます。変更バッファを使用する必要はありません。 通常の列 -
操作 INSTANTINPLACE
# #列を追加 | ✅ ③ | ##✅ | ❌ ③ | #✅ ③❌ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
❌ ④ | ✅ | ✅ | ✅ | ❌ | 列名の変更 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
✅ | ❌ | #✅ ⑤ | ✅ | #列の順序を変更します | ❌ ⑫ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
✅ | ✅ | ❌ | デフォルト値を設定します | ✅ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
❌ | ✅ | ✅ | データ型の変更 | ❌ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
✅ | ❌ | ❌ | 拡張子 | VARCHAR | 長さ (⚠️MySQL 5.7、MariaDB 10.2.2)|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
✅ | ❌ ⑥ | ✅ | ✅ | #列のデフォルト値を削除 | ##✅|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
##❌# #✅
| ✅自己インクリメント値の変更 | ❌ | ✅ | ❌ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
❌ ⑦ | 列を NULL に設定します | ❌ | ✅ | ✅ ⑧ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
❌ | 列を NOT NULL | ❌ | ✅ ⑨ | ✅ ⑨ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
❌ | #ENUM | および | SET の定義を変更します。列 | ✅ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
❌ ⑩ | ✅ | ✅ |
説明:
⑮⑯ 文字セットが異なる場合、テーブルを再構築する必要があります。
(ビデオ) |
以上がリファレンス ガイド: MySQL および MariaDB オンライン DDLの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Laravelは、Webアプリケーションを簡単に構築するためのPHPフレームワークです。次のような強力な機能を提供します。インストール:Laravel CLIを作曲家にグローバルにインストールし、プロジェクトディレクトリにアプリケーションを作成します。ルーティング:ルート/web.phpのURLとハンドラーの関係を定義します。ビュー:リソース/ビューでビューを作成して、アプリケーションのインターフェイスをレンダリングします。データベース統合:MySQLなどのデータベースとのすぐ外側の統合を提供し、移行を使用してテーブルを作成および変更します。モデルとコントローラー:モデルはデータベースエンティティを表し、コントローラーはHTTP要求を処理します。

MySQLとPHPMyAdminは、強力なデータベース管理ツールです。 1)MySQLは、データベースとテーブルを作成し、DMLおよびSQLクエリを実行するために使用されます。 2)PHPMyAdminは、データベース管理、テーブル構造管理、データ操作、ユーザー許可管理のための直感的なインターフェイスを提供します。

他のプログラミング言語と比較して、MySQLは主にデータの保存と管理に使用されますが、Python、Java、Cなどの他の言語は論理処理とアプリケーション開発に使用されます。 MySQLは、データ管理のニーズに適した高性能、スケーラビリティ、およびクロスプラットフォームサポートで知られていますが、他の言語は、データ分析、エンタープライズアプリケーション、システムプログラミングなどのそれぞれの分野で利点があります。

記事の概要:この記事では、Laravelフレームワークを簡単にインストールする方法について読者をガイドするための詳細なステップバイステップの指示を提供します。 Laravelは、Webアプリケーションの開発プロセスを高速化する強力なPHPフレームワークです。このチュートリアルは、システム要件からデータベースの構成とルーティングの設定までのインストールプロセスをカバーしています。これらの手順に従うことにより、読者はLaravelプロジェクトのための強固な基盤を迅速かつ効率的に築くことができます。

MySQLでは、外部キーの機能は、テーブル間の関係を確立し、データの一貫性と整合性を確保することです。外部キーは、参照整合性チェックとカスケード操作を通じてデータの有効性を維持します。パフォーマンスの最適化に注意し、それらを使用するときに一般的なエラーを避けてください。

MySQLとMariaDBの主な違いは、パフォーマンス、機能、ライセンスです。1。MySQLはOracleによって開発され、Mariadbはフォークです。 2. Mariadbは、高負荷環境でパフォーマンスを向上させる可能性があります。 3.MariaDBは、より多くのストレージエンジンと機能を提供します。 4.MySQLは二重ライセンスを採用し、MariaDBは完全にオープンソースです。既存のインフラストラクチャ、パフォーマンス要件、機能要件、およびライセンスコストを選択する際に考慮する必要があります。

記事の最初の段落の要約:YIフレームワークアプリケーションを開発するソフトウェアを選択する場合、複数の要因を考慮する必要があります。 XcodeやAndroid Studioなどのネイティブモバイルアプリケーション開発ツールは、強力な制御と柔軟性を提供できますが、Reactネイティブやフラッターなどのクロスプラットフォームフレームワークは、一度に複数のプラットフォームに展開できる利点にますます人気が高まっています。モバイル開発を新しい開発者向けに、AppsheetやGlideなどの低コードまたはノーコードプラットフォームは、アプリケーションをすばやく簡単に構築できます。さらに、AWS AmplifyやFirebaseなどのクラウドサービスプロバイダーは包括的なツールを提供します

SQLはリレーショナルデータベースを管理するための標準言語であり、MySQLはSQLを使用するデータベース管理システムです。 SQLは、CRUD操作を含むデータベースと対話する方法を定義しますが、MySQLはSQL標準を実装し、ストアドプロシージャやトリガーなどの追加機能を提供します。
