1

我有一个相对较大的表(几百万条记录),多个网站正在查询该表,并且从一开始该表的引擎是 MyISAM,目前我遇到了表锁的困难。

所以。我决定将表引擎从 MyISAM 更改为 InnoDB。

问题是:里面有隐藏的石头吗?数据库是实时的。所以我需要确保它不会影响任何网站的功能。

此表中当前没有设置全文索引。

4

1 回答 1

1

基本上,你必须这样做:

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

于 2012-09-14T19:49:54.623 回答