1

我们正在开发一个使用 OpenJPA1.1 和一个 Oracle DB 作为后端存储的持久层应用程序。我将使用带有子选择的查询(请参阅我在解决 JPA 查询中查找连接列表中的最后一个条目的问题)。

现在我的同事说,这样的查询可能会导致性能问题,因为数据库充满了数千个并发用户使用的数千个客户日期(这将在生产中成为现实)。

所以,我的问题是:在这种情况下,在查询中是否有“最佳实践”subselects?这样做必须考虑什么?

4

1 回答 1

1

我会首先证明这是一个问题。您将希望使用虚拟数据加载数据库,并查看随着数据库变大时查询的执行情况。否则你会花时间优化一些可能不是问题的东西。

需要考虑的一件事。在我工作过的所有地方,崩溃的不是数千条记录,而是数百万条记录。你已经有了这个系统,它可以正常工作一段时间,然后开始变慢,即使你向它投入更多的硬件。我现在工作的地方在他的历史记录表中有大约 7000 万条记录可以追溯到 1998 年。因此,某些查询的性能很糟糕,他们花费了大量时间来解决这些问题。

但在某些时候,你真的必须要问。我们是否需要在交易系统中保留超过 4 年的数据?甚至4个月大?此时间限制取决于您的业务需求,但如果您的事务系统仅包含处理正在进行的工作所需的数据......并将您的历史记录归档到数据仓库中。您将提高整体性能,因为您可能只是偶尔需要查询旧数据,那么为什么要保留最近的数据呢?

如果您事先考虑到这一点,从长远来看,您将省去很多麻烦。

于 2009-02-06T15:33:07.930 回答