使用ALTER进行表优化(MySql)

时间:2014-07-23 08:58:52

标签: mysql optimization innodb alter

ALTER TABLE [tbl_name] TYPE=innodb

我刚刚读过某个地方,使用上面的alter table语句将优化现有的表。我不太确定这会起作用,如果是的话,即使表类型已经是InnoDB,它是否也能正常工作?

3 个答案:

答案 0 :(得分:1)

InnoDB的:

MySQL中的InnoDB存储引擎。

  • 支持交易(支持ACID属性)。
  • 行级锁定。与例如MyISAM相比,具有更细粒度的锁定机制可以提供更高的并发性。
  • 外键约束。允许您让数据库确保数据库状态的完整性以及表之间的关系。
  • InnoDB比MyISAM更能抵抗表损坏。
  • 支持数据和索引的大缓冲池。 MyISAM密钥缓冲区仅用于索引。
  • 另一点是MyISAM停滞不前;所有未来的改进都将在InnoDB中进行。

InnoDB限制:

  • 没有全文索引(低于5.6的mysql版本)
  • 无法快速压缩,只读

有关此内容的更多信息:

如果您的数据库已经是innoDB,则无需再次发出该声明。至于其他建议,你应该使用ENGINE而不是TYPE。

ALTER TABLE `table_name` ENGINE = InnoDB;

答案 1 :(得分:0)

我不确定优化现有表格,但我可以更正您的查询。

ALTER TABLE `mytable` ENGINE = InnoDB;

答案 2 :(得分:0)

使用ENGINE关键字,因为不再支持TYPE

  

从MySQL 5.1.8开始,仍然接受TYPE = engine_name作为ENGINE = engine_name表选项的同义词,但会生成警告。您应该注意,此选项在MySQL 5.1.7中不可用,并且在MySQL 5.5中完全删除并产生语法错误。

之后,您的查询应该工作并更改现有表的引擎。