【发布时间】:2012-02-26 03:48:33
【问题描述】:
我正在使用 Oracle 数据库,我需要能够对表中的数据进行分区。我知道 Rracle 有一个 ora_hash 函数,可以将数据分区到桶中。 ora_hash 函数是确定性的吗?
在我的程序中,我将进行几个不同的数据库查询,每个查询都要求不同的存储桶号。
例如,在一个查询中,我可能会要求前两个存储桶:
SELECT * FROM sales WHERE ORA_HASH(cust_id, 9) in (0,1);
在随后的查询中,我可能会要求第二个和第三个存储桶:
SELECT * FROM sales WHERE ORA_HASH(cust_id, 9) in (1,2);
在上面的例子中,ora_hash 是否总是将表分成完全相同的 10 个桶?假设表中的数据没有改变。第二个存储桶(存储桶 1)在两个查询中是否相同?
有文档表明 seed value 使 oracle 能够为同一数据集返回不同的结果。所以我假设如果我不使用 seed value,那么 ora_hash 将是确定性的。见the documentation。
【问题讨论】:
-
我只能找到一个引用 "Nondeterministic Hash"...