我有一个相对较大的表(几百万条记录),多个网站正在查询该表,并且从一开始该表的引擎是 MyISAM,目前我遇到了表锁的困难。
所以。我决定将表引擎从 MyISAM 更改为 InnoDB。
问题是:里面有隐藏的石头吗?数据库是实时的。所以我需要确保它不会影响任何网站的功能。
此表中当前没有设置全文索引。
基本上,你必须这样做:
ALTER TABLE t1 ENGINE=InnoDB;
或这个:
INSERT INTO my_innodb_table SELECT * FROM my_myisam_table
检查这个:Converting Tables from Other Storage Engines to 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.html http://dev.mysql.com/doc/refman/5.1/en/forcing-innodb-recovery。 html