テーブル ロックを使用せずに大規模な MySQL 本番テーブルにインデックスを作成する方法
問題の背景:
大規模な MySQL テーブルにインデックスを作成することは、特に本番環境では困難な作業になる可能性があります。中断のないアクセスが重要です。従来の CREATE INDEX ステートメントでは、テーブルが完全にロックされ、すべての同時操作がブロックされる可能性があります。
MySQL バージョンの考慮事項:
- MySQL 5.6 以降では、インデックスが更新されます。オンラインで実行されるため、インデックス作成中に読み取りおよび書き込み操作を継続できます。
- ただし、MySQL ではInnoDB および MyISAM テーブルを含む 5.5 以前では、インデックスの更新によりテーブルへの書き込みがブロックされます。
循環マスター アプローチ:
5.6 より前の MySQL バージョンの場合効果的なアプローチの 1 つは、循環マスター手法です。
- セカンダリをセットアップするプライマリ マスター (マスター A) から複製するマスター (マスター B)。
- マスター B でスキーマの更新を実行します (アップグレード中の遅れを許容します)。
- スキーマが変更されていることを確認します。マスター A 上のダウンバージョン スキーマからのコマンドの複製と互換性があります。
- すべてのクライアントをマスター A からマスターに自動的に切り替えますB.
- マスター A のスキーマを更新し、セカンダリ マスターにします。
Percona の pt-online-schema-change ツール:
このツールは循環マスターアプローチを自動化します方法:
- 更新されたスキーマを使用して新しいテーブルを作成します。
- トリガーを使用して、新しいテーブルと元のテーブルの同期を維持します。
- 行をバッチでコピーします元のテーブルから。
- 元のテーブルを新しいテーブルに置き換えます。 table.
AWS RDS の考慮事項:
Amazon の RDS でホストされている MySQL データベースの場合、「リードレプリカ プロモーション」機能を使用すると、スキーマの変更を容易にすることができます。テーブルのロック。これには、読み取り専用スレーブに変更を加え、それを新しいマスターに昇格させることが含まれます。
代替テクニック:
- 一時的なスレーブを使用するtable: 新しいインデックスを使用して一時テーブルを作成し、元のテーブルからデータを挿入し、元のテーブルを一時テーブルに置き換えます。 table.
- テーブルのパーティション化: テーブルを小さなパーティションに分割し、各パーティションに個別にインデックスを作成してから、パーティションをマージして戻します。
- バックグラウンド プロセスを使用する: テーブルが通常の操作でアクセス可能なままである間に、インデックスを段階的に作成する別のバックグラウンド プロセスを作成します。このアプローチは、すべての MySQL バージョンでサポートされているわけではありません。
以上がテーブルをロックせずに大規模な MySQL 本番テーブルにインデックスを作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

mysqlstringTypesimpactStorageandperformanceAseasfollows:1)churisfixed-regents、whuscanbasterbutlessspace-efficient.2)varcharisvariaible、morespace-efficient-butpotentiallyslower.3)Textisforgergetext、storedoutext、

mysqlstringTypesincludevarchar、テキスト、char、列挙、およびセット。1)varcharisSatileforvariaible-lengthstringsuptoaspoecifedlimit.2)TextisidealforLargetExtStorageWithDeinLength.3)charispixed-consinterconsistentalikodes.4)

mysqloffersvariousstringdatatypes:1)charfixed-lengthstrings、2)varcharforvariable-lengthtext、3)binaryandvartyforbinarydata、4)blobandtextforlargedata、and5)enumandsetforControlledinput.

tograntpermissionstonewmysqlusers、フォローステープ:1)Accessmysqlasauserwithsufthiveerprivileges、2)createanewuser withthecreateusercommand、3)usethegrantcommandtospecifypermissionsionsionsionsionsionsionsionsionsionsionselect、挿入、挿入、挿入、更新、4)

toadduusersinmysqucrectivally andcurally、soflowthesteps:1)usethecreateuserstatementtoaddanewuser、指定するhostandastrongpassword.2)補助金を使用して、補助金を使用して、補助すること、

toaddanewuserwithpermissionsinmysql、followthesesteps:1)createtheuserwithcreateuser'newuser '@' localhost'identifiedifiedifiedifiedby'pa ssword ';。2)grantreadacestoalltablesin'mydatabase'withgrantselectonmydatabase.to'newuser'@'localhost';。3)grantwriteaccessto '

MySQLの文字列データ型には、CHAR、VARCHAR、バイナリ、Varbinary、BLOB、およびテキストが含まれます。照合は、文字列の比較とソートを決定します。 1.Charは固定長の文字列に適しており、Varcharは可変長文字列に適しています。 2.バイナリとVarbinaryはバイナリデータに使用され、BLOBとテキストは大規模なオブジェクトデータに使用されます。 3. UTF8MB4_UNICODE_CIなどのルールのソートは、高度と小文字を無視し、ユーザー名に適しています。 UTF8MB4_BINは症例に敏感であり、正確な比較が必要なフィールドに適しています。

最適なMySQLVarcharの列の長さの選択は、データ分析に基づいており、将来の成長を検討し、パフォーマンスの影響を評価し、文字セットの要件を評価する必要があります。 1)データを分析して、典型的な長さを決定します。 2)将来の拡張スペースを予約します。 3)パフォーマンスに対する大きな長さの影響に注意してください。 4)ストレージに対する文字セットの影響を考慮します。これらの手順を通じて、データベースの効率とスケーラビリティを最適化できます。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

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