我有一个表格,我需要按类别约束,然后根据某个日期范围查找所有重叠日期。这需要大约2秒,这对于以大约50 / s发生的每次交易都是不可接受的。另一种方法是创建一些计数表 - 然后再说一遍,我不知道这是多么大的想法,因为事情可能会失去同步。
Date on Rent # Rented Category
9/5/2011 5 CATEGORY1
在Oracle(PL / SQL,如果它很重要)中,我如何保持这种性能,但是确保并发事务不会通过使其减少或减少一个来增加/减少增量/减量? / p>
我有两种类型的交易,有点像搜索和租金。只有租金会更新这个计数表(并且只搜索它)。我不介意租金是否放缓,但不希望搜索性能受到影响。租金频率可以达到5-10 /秒。
答案 0 :(得分:1)
Oracle使用锁来确保查询期间的数据一致性。它们如何工作的细节可能变得复杂,但结果是它保证了对tally表的更新/插入只会使用主表中的数据,就像查询开始时一样。如果在对计数表进行更新/插入时对主表进行了另一次更新或插入,则不会对其造成影响。
您必须试验您的数据,看看保留摘要/计数表是否有助于或伤害您。这实际上取决于主表的更新速度,更新计数表所需的时间,以及能够选择保存的时间,以及您需要选择的最新时间。 / p>