You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@trafodion.apache.org by "Selvaganesan Govindarajan (JIRA)" <ji...@apache.org> on 2016/10/08 03:12:21 UTC

[jira] [Updated] (TRAFODION-2265) ex_conv_clause::findInstruction() linearly searches convInstrInfo[]

     [ https://issues.apache.org/jira/browse/TRAFODION-2265?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Selvaganesan Govindarajan updated TRAFODION-2265:
-------------------------------------------------
    Assignee: Narendra Goyal

> ex_conv_clause::findInstruction() linearly searches convInstrInfo[]
> -------------------------------------------------------------------
>
>                 Key: TRAFODION-2265
>                 URL: https://issues.apache.org/jira/browse/TRAFODION-2265
>             Project: Apache Trafodion
>          Issue Type: Improvement
>          Components: sql-exe
>    Affects Versions: any
>            Reporter: Narendra
>            Assignee: Narendra Goyal
>            Priority: Minor
>              Labels: performance
>   Original Estimate: 48h
>  Remaining Estimate: 48h
>
> There are cases when the ex_conv_clause::findInstruction() is called to get the index into the convInstrInfo[] array. The method then linearly searches the array (currently 402 elements). E.g., the following upsert statement (to insert 1 million rows), findInstruction() was called ~13 million times. 
> Propose going through the convInstrInfo array at process startup and create an index, then use that to avoid the linear search.
> ------ Begin example statement -----
> drop schema hbase_table;
> create schema hbase_table;
> set schema hbase_table;
> create table source1 (a int not null primary key) salt using 8 partitions ;
> insert into source1 select x1 from (values(1)) as t1 transpose 0,1,2,3,4,5,6,7,8,9 as x1;
> create table source2 (a char(128) not null primary key) salt using 8 partitions ;
> insert into source2 values('abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvw\
> xyzabcdefghijklmnopqrstuvwx');
> drop table t106;
> create table t106
>   (uniq int not null,
>    c100k int,
>    c10K int ,
>    c1K   int,
>    c100  int,
>    c10   int,
>    c1    int,
>    char_col1 char(128),
>    char_col2 char(128),
>    char_col3 char(128),
>    char_col4 char(128),
>    char_col5 char(128),
>    char_col6 char(128),
>    char_col7 char(128),
>    char_col8 char(128),
>    primary key (uniq)
>   )
> salt using 8 partitions;
> ;
> cqd parallel_num_esps '1';
> cqd upd_ordered 'off' ;
> prepare s1 from
> upsert using load into t106
>   select
>   0 + (1000000 * x1000000) + (100000 * x100000) + (10000 * x10000) + (1000 * x1000)
>     + (100 * x100) +( 10 * x10) + (1 * x1),
>   0 + (100000 * x100000) + (10000 * x10000) + (1000 * x1000) + (100 * x100)
>     + (10 * x10) +( 1 * x1),
>   0 + (1000 * x1000) + (100 * x100) + (10 * x10) + (1 * x1),
>   0 + (100 * x100) + (10 * x10) + (1 * x1),
>   0 + (10 * x10) + (1 * x1),
>   0 + (1 * x1),
>   0 ,
>   x2 ,
>   x2 ,
>   x2 ,
>   x2 ,
>   x2 ,
>   x2 ,
>   x2 ,
>   x2
>   from (select a from source1) as s1(x1), (select a from source2) as s2(x2)
>     transpose 0 as x1000000
>     transpose 0,1,2,3,4,5,6,7,8,9 as x100000
>     transpose 0,1,2,3,4,5,6,7,8,9 as x10000
>     transpose 0,1,2,3,4,5,6,7,8,9 as x1000
>     transpose 0,1,2,3,4,5,6,7,8,9 as x100
>     transpose 0,1,2,3,4,5,6,7,8,9 as x10
>   ;
> execute s1;
> ------ End example -----



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)