ORMLite 的 MySQL 驱动程序默认使用 InnoDB 表。该文档描述了如何将其配置为使用其他表类型,但没有描述这样做的后果。最近在 InnoDB 上有过不好的经历,我想迁移到 MyISAM,但只是想检查一下 ORMLite 的所有功能是否能继续正常工作,因为我知道 MyISAM 缺乏 InnoDB 支持的一些功能。有人有这方面的经验吗?有什么潜在的问题吗?
(FWIW,我确实知道我的应用程序没有任何特殊的事务需求,这是一个明显会失败的功能)
最佳答案
抱歉,从 ORM 的角度来看,我不知道 InnoDB
和 MyISAM
之间的区别。我希望 ORMLite没有受到任何影响。表的类型是 MySQL 的内部指定,可能会影响性能或查询行为。
这是一个good table of differences between the 2 types我将在这里总结一下。
- InnoDB 较新,而 MyISAM 较旧。
- InnoDB 更复杂,而 MyISAM 更简单。
- InnoDB 对数据完整性比较严格,而 MyISAM 比较宽松。
- InnoDB 实现插入和更新的行级锁,而 MyISAM 实现表级锁。
- InnoDB 有事务,而 MyISAM 没有。
- InnoDB 有外键和关系约束,而 MyISAM 没有。 InnoDB 具有更好的崩溃恢复能力,而 MyISAM 在系统崩溃时恢复数据完整性方面较差。
- MyISAM 有全文搜索索引,而 InnoDB 没有。
我在此列表中看到的唯一影响查询级别的事情是 MyISAM
不支持外键或约束,但 ORMLite(截至 2013 年 3 月)也不支持它们。 MyISAM
不支持事务,但您可以在没有事务的情况下进行 ORMLite 调用。
我在这个列表中没有看到任何会影响 ORM 的内容。也就是说,测试将是一个好主意。 :-)
关于mysql - 将 ORMLite 与 MySQL 和 MyISAM 表结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15547840/