Search Postgresql Archives

Re: Bulk Inserts

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 8/13/19 6:34 AM, Souvik Bhattacherjee wrote:
 > If the selects are returning more then one row then you are already
 > doing bulk inserts. If they are returning single rows or you want to
 > batch them then you need some sort of code to do that. Something
 > like(pseudo Python like code):

 > attr2_vals= [(10, 20, 30, 40), (50, 60, 70, 80)]

 > for val_batch in attr2_vals:
         BEGIN
         for id in val_batch:
                 insert into tab2 (attr1, attr2) (select attr1, attr2
                  from tab1 where attr2 = id)
          COMMIT

For *EXP 1: inserts with multiple txn:*
insert into tab2 (attr1, attr2) (select attr1, attr2 from tab1 where attr2 = 10); insert into tab2 (attr1, attr2) (select attr1, attr2 from tab1 where attr2 = 20);

tab1 has ~6M rows and there are only two values for the attribute attr2 in
tab1 which are evenly distributed. So, yes, I guess I'm already doing batching
here.

Also, I ran the following two statements to see if their performances are comparable. While STMT 1 always runs faster in my machine but their performances seem to differ
by a couple of seconds at most.

STMT 1: select attr1, attr2 into tab2 from tab1;
STMT 2: insert into tab2 (select attr1, attr2 from tab1);

All I have left is:

select tab2 row_number () OVER (order by attr2, attr1 )AS id, attr1, attr2 into tab2 from tab1;

That will not create a serial type in the id column though. You can attach a sequence to that column. Something like:

1) create sequence tab2_id start <max id + 1> owned by tab2.id;

2) alter table tab2 alter COLUMN id set default nextval('tab2_id');




However adding the serial id column as an ALTER TABLE statement actually takes more time than inserting the tuples, so the combined total time is more than double the time taken to insert
the tuples into tab2 without serial id column.

Best,
-SB






--
Adrian Klaver
adrian.klaver@xxxxxxxxxxx





[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]

  Powered by Linux