適切なエンジンを選択するにはどうすればよいですか?簡単な要約は次のとおりです: 「 InnoDB にない機能を使用する必要があり、それを置き換える他に方法がない場合を除き、InnoDB エンジンを優先する必要があります。」
絶対に必要な場合を除き、複数のストレージ エンジンを混在させることはお勧めできません。そうしないと、一連の複雑な問題や潜在的なバグが発生する可能性があります。
さまざまなエンジンを使用するときに考慮すべき主な要素がいくつかあります:
1. トランザクション
トランザクションのサポートが必要な場合、現時点では InnoDB または XtraDB が最も安定しています。トランザクションが必要なく、主な操作が SELECT と INSERT である場合は、MyISAM が適しています。
2. バックアップ
オンラインホットバックアップが必要な場合は、InnoDB が基本的な選択肢です。
3. クラッシュ回復
データの量が比較的大きい場合、システムクラッシュ後にどのように迅速に回復するかは考慮する必要がある問題です。これが、多くの人が InnoDB を選択する理由です。トランザクションサポートが必要です。
テーブルを変換するエンジン:
1.ALTER TABLE
最も簡単な方法は ALTER TABLE ステートメントです: mysql> mytable ENGINE = InnoDB; この構文はあらゆるストレージに適用されますエンジンですが、実行に時間がかかります。
変換テーブルのストレージ エンジンは、元のエンジンに関連するすべての機能を失います。
2. エクスポートとインポート
mysqldump ツールを使用してデータをファイルにエクスポートし、ファイル内の CREATE TABLE ステートメントのストレージ エンジンを変更することができます。テーブル名の変更に注意してください。 。 同時に、データ損失に注意するために、mysqldump ツールはデフォルトで CREATE TABLE ステートメントの前に DROP TABLE ステートメントを自動的に追加することに注意してください。
3. 作成とクエリ
最初と 2 番目の方法を組み合わせて、最初に新しいストレージ エンジン テーブルを作成し、次に INSTER...SELECT 構文を使用してデータをインポートします mysql> CREATE TABLE innodb_table LIKE myisam_table;
mysql>ALTER TABLE innodb_table ENGINE=InnoDB;
mysql>INSTER INTO innodb_table SELECT * FROM myisam_table;
サイズが大きい場合は、バッチで処理し、データごとにトランザクション送信操作を実行して、大規模なトランザクションによる元に戻すことを回避できます。 Percona Toolkit は、手動操作によるエラーを回避するために簡単かつ便利に実行できる pt-online-schema-change ツールを提供します。
以上がMySQL の適切なエンジンの選択とエンジン変換の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。