Oracle事务计数表

Oracle事务计数表,oracle,concurrency,transactions,Oracle,Concurrency,Transactions,我有一个表,需要按类别进行约束,然后根据某个日期范围查找所有重叠的日期。这大约需要2秒,这对于以大约50/s的速度发生的每个事务来说都是不可接受的。另一种方法是创建一些理货表,然后再说一遍,我不知道这是一个多么好的主意,因为事情可能会变得不同步 Date on Rent # Rented Category 9/5/2011 5 CATEGORY1 在OraclePL/SQL中,如果这很重要,我如何保持这种性能,但确保并发事务不会因为使增量/减量比实际值少一

我有一个表,需要按类别进行约束,然后根据某个日期范围查找所有重叠的日期。这大约需要2秒,这对于以大约50/s的速度发生的每个事务来说都是不可接受的。另一种方法是创建一些理货表,然后再说一遍,我不知道这是一个多么好的主意,因为事情可能会变得不同步

Date on Rent   # Rented   Category
9/5/2011       5          CATEGORY1
在OraclePL/SQL中,如果这很重要,我如何保持这种性能,但确保并发事务不会因为使增量/减量比实际值少一个或多一个而使增量/减量变差


我有两种类型的交易,有点像搜索和租赁。只有租金将更新此理货表,并仅从中读取搜索。我不介意租金下降,但不希望搜索性能受到影响。租金的发生频率可能高达每秒5-10次。

Oracle在查询过程中使用锁来确保数据一致性。它们如何工作的细节可能会变得复杂,但其效果是它保证了对理货表的更新/插入只会像查询开始时那样使用主表中的数据。如果在对理货表进行更新/插入时,主表有另一次更新或插入,则不会对其产生影响


你必须对你的数据进行实验,看看保持一个汇总/理货表对你是有帮助还是有害。这实际上取决于主表的更新速度、更新理货表所花的时间与选择理货表所节省的时间以及所需选择的最新程度。

Oracle在查询过程中使用锁确保数据一致性。它们如何工作的细节可能会变得复杂,但其效果是它保证了对理货表的更新/插入只会像查询开始时那样使用主表中的数据。如果在对理货表进行更新/插入时,主表有另一次更新或插入,则不会对其产生影响


你必须对你的数据进行实验,看看保持一个汇总/理货表对你是有帮助还是有害。这实际上取决于主表更新的速度、更新理货表所花的时间以及通过选择可以节省的时间,Oracle不使用锁来保证读取一致性:它使用UNDO表空间中的数据来表示一致的结果集。Oracle不使用锁来保证读取一致性:它使用UNDO表空间中的数据来表示一致的结果集。你的问题有点困惑:你到底想要什么?您是否真的用尽了改进原始查询的策略?到目前为止你试过什么?数据库的哪个版本?哪个版本?数据是什么样的:表中的总行数、类别数、日期范围的宽度?日期范围最长可达6个月。大多数日期可能是5天,因为有滞纳金。我使用10gR2。总行数约为1200万行。当我删除一些我知道会导致问题并可以解决的约束时,我可以将查询时间缩短到1.7秒,但这仍然太慢。我需要0.02秒。查找重叠日期的约束条件类似于和to_date'07/05/2011 00:00:00',MM/DD/YYYY HH24:MI:SS'=开始日期。请注意,这些行中的大多数是历史行,只需要查看当前和未来行。您的问题有点困惑:您真正想要什么?您是否真的用尽了改进原始查询的策略?到目前为止你试过什么?数据库的哪个版本?哪个版本?数据是什么样的:表中的总行数、类别数、日期范围的宽度?日期范围最长可达6个月。大多数日期可能是5天,因为有滞纳金。我使用10gR2。总行数约为1200万行。当我删除一些我知道会导致问题并可以解决的约束时,我可以将查询时间缩短到1.7秒,但这仍然太慢。我需要0.02秒。查找重叠日期的约束条件类似于和to_date'07/05/2011 00:00:00',MM/DD/YYYY HH24:MI:SS'=开始日期。请注意,这些行中的大多数是历史行,只需查看当前行和未来行。