Re: 10g: parallel pipelined table func - compensating hash() function for parallel_enable clause

From: Robert Klemme <shortcutter_at_googlemail.com>
Date: Wed, 25 Jan 2012 08:40:11 -0800 (PST)
Message-ID: <29919292.1749.1327509612034.JavaMail.geo-discussion-forums_at_vbtb5>


On Wednesday, January 25, 2012 11:24:58 AM UTC+1, Frank Bergemann wrote:
> Hi,
>
> How can i compensate the oracle hash function for
>
> parallel_enable(partition myCursor by hash(Some_Key))
>
> Because Some_Key is already a good ID to dispatch to the table
> functions.
> For a bulk i have e.g. #10 Some_Key values with nearly the same
> #number of records per Some_Key value.
> This means a balanced load distribution to the parallel pipelined
> table function instances.
> However oracle requiring hash(Some_Key) undermines the load balancing
> (the same for range(Some_Key)).

Why is it the same for range partitioning?

> So i would like to translate Some_Key to a value, that after
> hash(Some_Key) results in ID (Some_Key) used for dispatch - some kind
> of anti-hash.
>
> So functionally speaking it ends up in
>
> parallel_enable(partition myCursor by hash(antihash(Some_Key)))
>
> ... which effectively is
>
> parallel_enable(partition myCursor by SomeKey)
>
>
> What's the anti-hash (inverse) function, which compensates for
> hash(Some_Key)?

Hash functions do not have an inverse function because they are not injections.

http://en.wikipedia.org/wiki/Inverse_function

Kind regards

robert Received on Wed Jan 25 2012 - 10:40:11 CST

Original text of this message