0

ORMLite 的 MySQL 驱动程序默认使用 InnoDB 表。该文档描述了如何将其配置为使用其他表类型,但没有描述这样做的后果。最近在使用 InnoDB 时遇到了不好的经历,我想迁移到 MyISAM,但只是想检查一下 ORMLite 的所有功能是否会继续正常工作,因为我知道 MyISAM 缺少 InnoDB 支持的一些功能。有人有这方面的经验吗?有什么潜伏的问题吗?

(FWIW,我知道我的应用程序没有任何特殊的事务需求,这是一个明显会失败的功能)

4

1 回答 1

1

抱歉,我不知道从 ORM 的角度来看之间InnoDB的区别。MyISAM希望ORMLite不会受到任何影响。表的类型是 MySQL 内部指定的,可能会影响性能或查询行为。

这是我将在这里总结 的两种类型之间差异的一个很好的表格。

  1. InnoDB 较新,而 MyISAM 较旧。
  2. InnoDB 更复杂,而 MyISAM 更简单。
  3. InnoDB 在数据完整性方面更加严格,而 MyISAM 是松散的。
  4. InnoDB 实现了用于插入和更新的行级锁,而 MyISAM 实现了表级锁。
  5. InnoDB 有事务,而 MyISAM 没有。
  6. InnoDB 有外键和关系约束,而 MyISAM 没有。InnoDB 有更好的崩溃恢复,而 MyISAM 在系统崩溃时恢复数据完整性方面很差。
  7. MyISAM 有全文搜索索引,而 InnoDB 没有。

我在此列表中看到的唯一影响查询级别的是MyISAM不支持外键或约束,但 ORMLite(截至 2013 年 3 月)也不支持它们。 MyISAM不支持事务,但您可以在没有它们的情况下进行 ORMLite 调用。

在我的脑海中,我在这个列表中看不到任何会影响 ORM 的东西。也就是说,测试将是一个好主意。:-)

于 2013-03-21T21:22:27.170 回答