文章オンライン DDL は MySQL 5.6 でのみサポートされています。バージョン 5.5 以前では、alter table/create index などのコマンドを使用してテーブル構造を変更するとテーブルがロックされますが、これは明らかに実稼働環境では受け入れられません。 MySQL 5.7では、オンラインDDLはパフォーマンスと安定性の面で継続的に最適化されています。パフォーマンス上の利点が大きく、業務負荷への影響が少なく、ダウンタイムを制御できます。pt-osc/gh-ostと比較して、サードパーティの依存パッケージのインストールは不要です。また、インプレースアルゴリズムのオンラインDDLもサポートしています。テーブルをコピーする必要がないため、必要なディスク容量も小さくなります。 まず、一般的な DDL ステートメントを見てみましょう。 ALTER TABLE tbl_name ADD PRIMARY KEY (列)、ALGORITHM=INPLACE、LOCK=NONE; このうち、LOCK は DDL 操作時の同時実行の度合いを記述し、ALGORITHM は DDL の実装方法を記述します。 LOCKパラメータ
アルゴリズムパラメータ
COPY TABLE プロセス
同時に、この処理中にデータの一貫性を保つために、中間データのコピー(Copy Table)中はテーブルがロックされ、読み取り専用になります。書き込み要求が来た場合、サービスが提供できなくなり、接続数が爆発的に増加します。 IN-PLACEプロセス
このプロセスでは、ALTER ステートメントは開始時に MDL 書き込みロックを取得しますが、この書き込みロックは、データが実際にコピーされる前に読み取りロックに退化します。つまり、最も時間のかかる一時ファイルにデータをコピーするプロセス中に、元のテーブルを DML で操作できます。ロックされるのは、古いテーブルと新しいテーブル間の最終切り替えフェーズ中のみです。この名前変更プロセスは非常に高速です。 DMLとDDLの同時操作を許可する
オンライン DDL は、コストが高いとマークされた操作には使用できますが、サーバーの IO と CPU に大きな負荷がかかります。また、レプリケーションのブロックも発生し、スレーブ レプリケーションの遅延という別の形を引き起こします。したがって、テーブルが大きい場合は、オフピーク時に実行することをお勧めします。 同時DMLを許可しないDDL操作
上記はMySQL Online DDLの使用に関する詳細な説明の詳細な内容です。MySQL Online DDLの使用に関する詳細については、123WORDPRESS.COMの他の関連記事に注目してください。 以下もご興味があるかもしれません:
|
>>: Javascript サンプル プロジェクトでの虫眼鏡効果の実装プロセス
1. HTMLファイルでechartをインポートする <!-- echarts をインポート ...
** CentOS7 で yum ソースをインストールし、rz および sz コマンドをアップロー...
目次1 nginxの紹介1 nginxとは何か2 つのアプリケーション シナリオ2 nginxのイン...
Web ページのアクセシビリティは、フロントエンドでのみ評価および実装できるもののようです。ユーザビ...
SecureCRT が文字化けした文字を表示する状況を見てみましょう。例えば: ではリセットしてみま...
最近、cronスケジュールタスク用のdockerを作りたいと思っており、Dockerfileで次のよ...
1. QTからJSへのデータフロー1. QTはJS関数を呼び出し、JSはパラメータを通じてQTの値を...
目次システムアップデート構成Windows Update サーバーの変更自動更新を有効にして許可する...
1. MySQLを削除する a. sudo apt-get autoremove --purge m...
MySQLマスタースレーブを設定した後、スレーブの状態が正常かどうかわからないことが多く、例外が発生...
MySQL交換パーティションの詳細な例序文exchange パーティションを紹介する前に、まず my...
1) キャッシュメカニズムの紹介Linux システムでは、ファイルシステムのパフォーマンスを向上させ...
Mac 用 MySQL をダウンロード: https://downloads.mysql.com/a...
この記事の例では、ユーザー登録インターフェース機能を実装するためのJSの具体的なコードを参考までに共...
React Native は、2015 年 4 月に Facebook によってオープンソース化され...