July 2, 2014

esProc/Oracle: Single Machine Performance Comparison Test(IV)

7.Analysis

From all use case test we could generally reach the following conclusion on the data characteristics:

1.Oracle normally performs better than esProc with small data volume concurrent computation; sometimes the performance advantage could be as high as several times. But there are exceptions. esProc performs better than Oracle in join computation. 


2.For large data volume, single task computation, esProc's performance is higher than Oracle, sometimes the difference can be several times.


3.Performance degrades significantly both for Oracle and esProc when concurrent number changes from 1 to 2. Oracle still has advantage but the difference with esProc is not too much. 


4.With small data volume concurrent computation, esProc shows stable performance among each task, while Oracle demonstrates great variation among different tasks (normally the difference is up to ten times). However, there are also exceptions. During join computation, Oracle's performance variation is not big among different tasks, and parallel is not valid under such condition.

Possible causes for above data characteristics could be as following:


1.esProc is coded with JAVA, which is an interpret-execution type of language. Thus the efficiency is lower than Oracle, which is coded in native C language.Oracle has sophisticated multi-tier cache mechanism , which perform much better with memory related computation than esProc. Small data volume parallel computation can normally be cached, thus Oracle performs better than esProc in such use cases. 


2.For large data volume, single task computation, esProc's performance is always higher than Oracle. This is due to that large data volume can not be cached, and Oracle's main methods for performance improvement is not applicable. In such situation, esProc's function algorithm is more effective, with an obvious advantage.


3.With small data volume concurrent computation, general performance degrades significantly with the parallel number changes from 1 to 2, and then to 4. This is a signal that the computation exceeds the processing power of CPU. Under such conditions, Oracle still has some advantage, but not too much as compared with esProc. This is because Oracle does not have the time to read the cache, the only advantage is native code. From here we can see that Oracle is basically leveraging cache to improve performance. 


4.Since Oracle's cache mechanism and execution plan can not be managed manually, thus with small data volume concurrent computation Oracle's performance variation is extremely large, sometimes the difference is up to ten times. 


5.Small data volume join is an exception. In this case esProc performs one or several time better than Oracle. Meanwhile the performance variation among each Oracle concurrent task is small, and parallel is invalid, probably also because that Oracle's cache mechanism and execution plan can not be managed manually. Thus, join computation is automatically treated as out-memory computation. Out-memory computation involves competition for hard disk resources, which leads to the lack of performance improvement with parallel processing. esProc's parallel processing is valid, because it can retrieve the small dimension table for in-memory computation, and thus leverage CPU to do multi-core parallel computation. The variation among each task is small, possibly also because that Oracle is automatically treating join as out-memory computation, which does not require cache, and resource is equally distributed among concurrent processes. With join computation, Oracle's advantage with cache disappeared, and the performance advantage with native code is limited, whereas the performance advantage of esProc, as with its use of efficient function algorithm, is now demonstrated. Thus esProc performs better in such case. 


Our basic conclusion for the comparison is: Oracle performs better with small data volume computation, or simple computation with less algorithm. esProc performs better with large data volume, or complicated computations with more algorithm. 


Related:
esProc/Oracle: Single Machine Performance Comparison Test(I)

esProc/Oracle: Single Machine Performance Comparison Test(II)

esProc/Oracle: Single Machine Performance Comparison Test(III)

Please Click here to download the full version。