【问题标题】:HSQLDB Internals: Hibernate and Integer vs Long IdsHSQLDB 内部结构:Hibernate 和 Integer 与 Long Id
【发布时间】:2010-10-16 21:10:42
【问题描述】:

我正在我的 Java 应用程序中创建数据库实体,并尝试在使用 Integer 或 Long 作为“id”字段的类类型之间进行合理化。我使用 Hibernate 作为我的 ORM,反过来,它将将此字段映射到 HSQLDB 数据库中的列。

我的难题是:Long 显然更大,并且将处理更多的条目 - 但是,在非常低的级别上,我知道过去(32 位系统)操作系统级别的读取将是 32 位宽。 IE:长读需要两遍……这是正确的想法吗?

如果我今天使用 Long,我的 HSQLDB 查询会比我使用 Integer 时运行得慢吗?

IE:HSQLDB 是否必须以某种方式使用多个读取通道...或使用更大的内部结构...或附加两个整数大小的列...或其他明显不理想的东西?或者,今天的 64 位处理在某种程度上是一个有争议的问题 - 应该在一次读取中处理 Long(Long 是 64 位)?

【问题讨论】:

  • 你的问题很好,但是一旦它被 Cornified 就更好了。

标签: java hibernate orm hsqldb


【解决方案1】:

使用长。即使使用内存数据库,相对于应用程序的其余部分,性能影响也很可能不会显着。但是,如果您开始用完标识符,稍后再返回并更改应用程序将是一个令人难以置信的麻烦。

【讨论】:

  • 关于性能的证据是什么?看来你不是很确定。那么对数据库大小的影响呢?我不确定 HSQLDB,但在 MySQL Hibernate 中,将 Long ID 转换为 BIGINT 而不是整数,并且 BIGINT 在大小和速度方面会带来成本,如下所述:planet.mysql.com/entry/?id=13825
猜你喜欢
  • 2013-05-14
  • 2013-05-18
  • 1970-01-01
  • 2019-01-25
  • 1970-01-01
  • 1970-01-01
  • 2012-12-12
  • 1970-01-01
  • 2012-02-26
相关资源
最近更新 更多