文章オンライン 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. JSで関数を書く方法1. 通常の関数の書き方2. 矢印関数の書き方2. 通常の関数でこ...
1. golang:最新のベースイメージ mkdir gotest タッチメイン.go Docker...
モバイル アプリを開発する場合、Web サイトが特定の高さまでスクロールしたときにコンテンツの一部を...
最近、プロジェクトで作業しているときに webSocket プロトコルを使用し、WeChat アプレ...
今日は、いくつかの一般的なテキスト処理コマンドとvimテキストエディタを紹介します。 3日目 - 一...
mysql ストアド プロシージャの概念:特定のタスク (クエリと更新) を実行できる、データベース...
親ノードの親ノード、例えば、このような段落がありますHTML:コードをコピーコードは次のとおりです。...
Linux サーバー A と B が 2 台あり、一方のサーバーから SSH 経由でパスワードなしで...
Dockerfile の設定に問題はありませんが、ENTRYPOINT コマンドを実行するとエラー...
目次問題の説明:インストール手順1. 準備2. サーバーにリモート接続する3. 証明書と秘密鍵ファイ...
場合によっては、ページにプロンプト ボックスやバブル ボックスが必要になることがあります。CSS...
Nginxを使用する目的Alibaba Cloud ECS クラウド サーバーを使用して、まずは著者...
目次文章1. 機械を準備する2. Dockerをインストールする1. 依存パッケージをインストールす...
opencv2 の簡単なインストール: conda インストール --channel https:/...
目次1. 画像のバイナリデータを表示する方法2. 絵の種類の見分け方3. 画像の種類を検出する方法3...