7

私は Mysql が初めてです。mysql エンジンを Myisam から innodb に変更すると、サーバー上のデータに影響しますか。

ありがとう

4

2 に答える 2

11

エンジンを から に変更してもデータには影響MyISAMINNODBませんが、エンジンを変更する前にテーブルのバックアップを簡単に取ることができます。

  1. バックアップを取る:

    CREATE TABLE backup_table LIKE your_table;
    
    INSERT INTO backup_table SELECT * FROM your_table;
    
  2. クエリのパフォーマンスに影響を与える可能性があります。Innodb 固有のシステム変数を構成する必要があります。例えば

    innodb_buffer_pool_size = 16G
    innodb_additional_mem_pool_size = 2G
    innodb_log_file_size = 1G
    innodb_log_buffer_size = 8M
    
  3. エンジンの変更INNODB:

    ALTER TABLE table_name ENGINE=INNODB;
    
于 2012-08-27T10:25:55.017 に答える
7

MyISAM テーブルを InnoDB に変換する際に 2 つの注意点が見つかりました: 行サイズとフルテキスト インデックスのサポートです。

最大レコード サイズが原因で、MyISAM から InnoDB に市販のアプリケーションから一部のテーブルを変換する際に問題が発生しました。MyISAM は InnoDB よりも長い行をサポートします。デフォルトの InnoDB インストールの最大値は約 8000 バイトです。失敗したテーブルを TRUNCATE することでこれを回避できますが、これは後で INSERT を実行する際に問題になります。データを複数のテーブルに分割するか、TEXT などの可変長の列タイプでデータを再構築する必要がある場合があります (これは遅くなる可能性があります)。

ストック Innodb インストールは、FULLTEXT インデックスをサポートしていません。これは、アプリケーションに影響する場合としない場合があります。私が変換していた 1 つのアプリケーションのテーブルについて、全文スキャンを行うのではなく、必要なデータを他のフィールドで探すことにしました。(InnoDB に変換する前に FULLTEXT インデックスを削除するために、"ALTER TABLE DROP INDEX..." を実行しました。)とにかく、書き込みの多いテーブルにはフルテキスト インデックスをお勧めしません。

「ALTER TABLE...」を使用してデータでいっぱいの大きなテーブルを最初の試行で変換できる場合は、おそらく問題ありません。

http://dev.mysql.com/doc/refman/5.5/en/innodb-restrictions.html

最後に、読み取り負荷が高い実行中のシステム (UPDATE と INSERT はまれです) で MyISAM から InnoDB に変換する場合、ユーザーの作業を中断することなくこれを実行できます。(RENAME は原子的に実行されます。変更のいずれかが機能しない場合、すべての変更が取り消されます。)

CREATE TABLE mytable_ind AS SELECT * FROM mytable;
ALTER TABLE mytable_ind ENGINE=InnoDB;
RENAME TABLE mytable TO mytable_myi, mytable_ind TO mytable;
DROP TABLE mytable_myi;
于 2012-09-25T14:20:41.147 に答える