私は比較的大きなテーブル(数百万のレコード)を持っており、複数のWebサイトがこのテーブルをクエリしています。最初から、テーブルのエンジンはMyISAMでしたが、現在、テーブルのロックで問題が発生しています。
それで。テーブルエンジンをMyISAMからInnoDBに変更することにしました。
質問:その中に隠された石はありますか?DBはライブです。したがって、Webサイトの機能に影響を与えないことを確認する必要があります。
現在、このテーブルにはフルテキストインデックスは設定されていません。
基本的に、これを行う必要があります。
ALTER TABLE t1 ENGINE=InnoDB;
またはこれ:
INSERT INTO my_innodb_table SELECT * FROM my_myisam_table
これを確認してください:この問題に関する考慮事項については、他のストレージエンジンからInnoDBへのテーブルの変換、特に:
InnoDBには、MyISAMストレージエンジンのように個別のインデックスを作成するための特別な最適化はありません。したがって、テーブルのエクスポートとインポート、および後でインデックスを作成するための費用はかかりません。テーブルをInnoDBに変更する最も速い方法は、InnoDBテーブルに直接挿入することです。つまり、ALTER TABLE ... ENGINE = INNODBを使用するか、同じ定義で空のInnoDBテーブルを作成し、INSERT INTO ... SELECT *FROM...で行を挿入します。
また、これら: http ://dev.mysql.com/doc/refman/5.1/en/alter-table.htmlhttp: //dev.mysql.com/doc/refman/5.1/en/forcing-innodb-recovery。 html