文章オンライン 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 サンプル プロジェクトでの虫眼鏡効果の実装プロセス
この記事では、写真の自動再生効果を実現するためのJSの具体的なコードを参考までに紹介します。具体的な...
この記事では、参考までにVue More Filter Itemウィジェットの実装方法を例として紹介...
今日、null 値をテストしていたところ、小さな問題が見つかりました。ここに記録しました。以前にも遭...
この記事は、参考のためにMySQL 8.0.18のインストールと設定のグラフィックチュートリアルを記...
とても嬉しいです。この問題に遭遇したとき、私はDockerコンテナのプロセス原理について話さなければ...
1. ダウンロードアドレスhttps://dev.mysql.com/downloads/mysql...
目次回避策Vue2.0 で 2 つの配列の変更を監視できないのはなぜですか?ソースコード分析ヴュー3...
今日、突然、自分のウェブページで Google や Baidu のような強力な検索エンジンを呼び出す...
方法 1: readonly 属性を true に設定します。入力値=読み取り専用 readOnly...
最近、自宅サーバーにクラウドディスクを導入する予定なので、一連の環境構築作業を始めました。MySQL...
目次環境まとめモジュール機能関連文書ソースコード分析CCGame.js CCInputManager...
今日、ディスクアラーム例外を受け取りました。50G ディスクが爆発しました。分析と解決のプロセスは次...
1. MySQL のインデックスの使用方法インデックスは、特定の列の値を持つ行をすばやく見つけるため...
1. Dockerに適したRedisのバージョンを見つけるdocker hubで見つけることができ...
序文起源は質問 1 です: umask が 022 に設定されている場合、作成するファイルのデフォル...