Index Performance Comparison between Oracle and esProc

Uncategorized 842 0

Data table indexing is a common method to accelerate query in Oracle. esProc also provides indexing function. With the actual measurements in the several examples below, we can compare their speed after indexing.
The test is performed on data table T3 with 165 million records. The binary data file being saved in esProc format takes up 14.6G physical storage,in which fields are shown below:
CREATE TABLE “T3”
( “L11” NUMBER(11,0),
“L4” NUMBER(9,0),
“D4” VARCHAR2(9),
“C4” VARCHAR2(10),
“R2” DATE,
“R4” DATE,
“FL6” NUMBER(9,0),
“FD6” VARCHAR2(6),
“FC6” VARCHAR2(9),
“TL1” NUMBER(2,0),
“TL11” NUMBER(7,0),
“TN1” NUMBER(5,2),
“TN11” NUMBER(23,2),
“TN21” NUMBER(9,2),
“TN31” NUMBER(9,2)
)
Provide the same hardware for both Oracle and esProc with the below environment configuration:
Model for test: Dell Power Edge T610
CPU: Intel Xeon E5620*2
RAM: 20G
HDD: Raid5 1T
Operating system: CentOS 6.4
JDK: 1.6
Oracle version: 11g
esProc version: 3.1

1. Indexing Performance Comparison

4 indexes have been created for both Oracle and esProc. The first 3 are the single-field indexes, and the forth index is the composite indexes.

Index name Index field esProc oracle
ind1 Single-field integer L4 (NUMBER(8,0)) 1660 558
ind2 Single-field real number TN21 (NUMBER(9,2)) 1748 449
ind3 Single-field character C4 (VARCHAR2(9)) 1916 556
ind7 Integer+Real number+Character FL6+TN31+D4 2492 714

Note: The test results in this article are all represented in seconds unless otherwise remarked.

index_performance_oracle_esProc_cn_2

As can be seen from the above figure, indexing in Oracle is faster than that in esProc. The main application scenario of esProc is the data computing in BI. In this sector, the data seldom changes. Owing to this, the comparatively slow speed is acceptable since indexing can be regarded as a one-off job.

2. Single-field Indexing Performance Comparison

In below discussion, let’s compare the query speed between Oracle and esProc. To start with, let’s compare three single-field indexes. In which, the ind1 is the single-field index for the integer field L4; the ind2 is the single-field index for real number field TN21; and the ind3 is the single-field index for the character field C4. Compare the respective time consumed to query based on filtering criteria.

2.1.  Less than 10 records satisfying the query conditions

Index name Filter criteria esProc oracle
ind1 L4=874320857 0.026 0.187
ind2 TN21=5610506.43 0.038 0.032
ind3 C4=’A770223407′ 0.157 0.031

index_performance_oracle_esProc_cn_3

As can be seen from the above figure, compared with Oracle, esProc is faster in handling the integer field, comparable in handling the real number field, and slower in handling the character field.

2.2.  Around 100 records satisfying the query conditions

Index name Filter criteria esProc oracle
ind1 L4<=874320800and L4>=874320100 0.357 0.749
ind2 TN21>=5610506and TN21<=5610512 0.033 0.406
ind3 C4>=’A770223407’and  C4<=’A770223950′ 0.356 0.327

index_performance_oracle_esProc_cn_4

As can be seen from the figure, esProc is relatively faster for the numeric field, and the speeds of esProc and Oracle in handling the character field are close.

2.3.  Around 10000 records satisfying the query conditions

Index name Filter criteria esProc oracle
ind1 L4<=874362000and L4>=874300000 25.205 47.534
ind2 TN21>=5610000and TN21<=5610600 24.572 32.885
ind3 C4>=’A770223407’and  C4<=’A770284500′ 24.322 31.747

index_performance_oracle_esProc_cn_5

As can be seen from the above figure, esProc runs faster, but the difference is not great.

2.4.  Around 100000 records satisfying the query conditions

Index name Filter criteria esProc oracle
ind1 L4<=874300000and L4>=873690000 48.033 343.67
ind2 TN21>=5600000and TN21<=5606100 8.941 330.082
ind3 C4>=’A770223407’and  C4<=’A770831000′ 46.955 283.688

index_performance_oracle_esProc_cn_6

As can be seen from the above figure, esProc runs faster, demonstrating its obvious advantages.

3. Multi-field Composite Indexing Performance Comparison

3.1. Less than 10 records satisfying the query conditions

Index name Filter criteria esProc oracle
ind7: FL6 FL6=830857975 0.319 0.016
ind7: FL6+TN31 FL6=830857975and TN31=5570970.22 0.035 0.016
ind7: FL6+TN31+D4 FL6=830857975and TN31=5570970.22and D4=’156085171′ 0.032 0.031

index_performance_oracle_esProc_cn_7

As can be seen from the above figure, Oracle performance is better.

3.2.  Around 100 records satisfying the query conditions

Index name Filter criteria esProc oracle
ind7: FL6 FL6>=830857300and FL6<=830857975 1.016 0.359
ind7: FL6+TN31 FL6>=830700000and FL6<=830857975and TN31>=5530000and TN31<=5570970.22 0.235 0.031
ind7: FL6+TN31+D4 FL6>=820200000and FL6<=830857975and TN31>=5000000and TN31<=5570970.22and D4>=’154900000’and D4<=’156085171′ 2.033 0.421

index_performance_oracle_esProc_cn_8

As can be seen from the above figure, Oracle performance is relatively better if there are around 100 records satisfying the conditions.

3.3.  Around 10000 records satisfying the query conditions

Index name Filter criteria esProc oracle
ind7: FL6 FL6>=830798000and FL6<=830857975 33.216 30.841
ind7: FL6+TN31 FL6>=820000000and FL6<=830857975and TN31>=5514000and TN31<=5570970.22 27.225 28.969
ind7: FL6+TN31+D4 FL6>=820100000and FL6<=830857975and TN31>=4900000and TN31<=5570970.22and D4>=’100000000’and D4<=’190000000′; 6.81 54.663

index_performance_oracle_esProc_cn_9

As can be seen from the above figure, esProc performance is obviously superior when the composite indexes of the 3 fields are all the filter criteria and there are 10000 records satisfying the condition.

3.4.  Around 100000 records satisfying the query conditions

Index name Filter criteria esProc oracle
ind7: FL6 FL6>=830254000and FL6<=830857975 47.248 274.64
ind7: FL6+TN31 FL6>=820200000and FL6<=830857975and TN31>=5000000and TN31<=5570970.22 47.947 254.468
ind7: FL6+TN31+D4 FL6>=820000000and FL6<=830857975and TN31>=4800000and TN31<=5570970.22and D4>=’000000000’and D4<=’730000000′; 45.53 313.484

index_performance_oracle_esProc_cn_10

As can be seen from the above figure, esProc performance is better if there are 100000 records satisfying the condition.

4. Findings on Performance Comparison

(1) Indexing in Oracle is several times faster than that in esProc. Comparatively, esProc more fit for the BI data computing. In most BI scenarios, relatively few data changes, and indexing can be regarded as a one-off job. A bit slowdown in speed is also acceptable.
(2)After indexing, in case a small number (<10000) of records satisfy the query conditions, Oracle is often superior to esProc; In case the number of records is at a medium level (>10000,<100000), their performance is close; In case a great number of records (>100000) return, esProc demonstrates an obvious performance advantage.

FAVOR (0)
Leave a Reply
Cancel
Icon

Hi,You need to fill in the Username and Email!

  • Username (*)
  • Email (*)
  • Website