我现在在myisam(mysql)中有数据表。我应该使用innoDB的关系表吗?

时间:2013-02-20 03:34:49

标签: mysql innodb myisam

是一个包含像tid(int) zid(int) direction(tinyint) type(tinyint)这样的列的表,具有非常繁重的读写操作,以及加入myisam中的其他表,最好是引入myisam或innodb吗?

有人告诉我,innodb的写入性能比myisam差。真的吗?每当没有用主键提取数据时,innodb也会像myisam一样拥有表锁。是否有任何技术可用于使用myisam和innodb在表之间连接表?

1 个答案:

答案 0 :(得分:1)

默认情况下,您应该始终使用InnoDB。它更快;它支持事务,外键和行级锁定;它更容忍崩溃 - 全能,它比MyISAM好得多。

在某些情况下,可能需要MyISAM表。两个常见的是:

  • 您使用的是旧版本的MySQL,它不支持全文或地理空间索引,您需要启用这些功能。

    (注意,如果 使用全文索引,那么通常最好使用Sphinx之类的外部搜索引擎--MySQL的全文搜索不是特别好。)

  • 您有一些具有异常数据访问模式的表(特别是非常大的只写表,例如日志),有时在MyISAM下可以表现得更好。

除非您确定这些条件适用,否则您应该使用InnoDB。这几乎总是正确的选择。