Hi there,
1) It looks like INSERTing into tables is bounded by a single CPU.
And it kills performance of a query that normally uses multiple CPUs...
CREATE TEMP TABLE t1 AS
(some 'select query' that uses multiple cores when run standalone)
ON COMMIT PRESERVE ROWS;
or
INSERT into t1 (some 'select query' that uses multiple cores when run
standalone);
2) Do you think you could implement INSERT with LOCKED option?
(like it was done for COPY from CSV in LOCKED mode)
Please let me know whether you think it's doable.
Thank you,
Anton
Here is a reproducible example.
create table t1(v0 int, v1 char(1));
insert into t1 values (1,'a'),(2,'b'),(3,'c');
create ordered index index_t1_v1 on t1(v1);
create table t2(v1 char(1));
insert into t2 values ('a');
1) gives "Error in optimizer garbageCollector"
create temp table t3 as
(select t1.v0 from t1,t2 where trim(t2.v1)=t1.v1)
on commit preserve rows;
2) works as expected
create temp table t3 as
(select t1.v0 from t1,t2 where t2.v1=t1.v1)
on commit preserve rows;
3) works as expected
select t1.v0 from t1,t2 where trim(t2.v1)=t1.v1;
4) works as expected
drop index index_t1_v1;
create temp table t3 as
(select t1.v0 from t1,t2 where trim(t2.v1)=t1.v1)
on commit preserve rows;
I am using the latest MonetDB version:
MonetDB 5 server v11.29.3 "Mar2018" (64-bit, 128-bit integers)
Copyright (c) 1993 - July 2008 CWI
Copyright (c) August 2008 - 2018 MonetDB B.V., all rights reserved
Visit https://www.monetdb.org/ for further information
Found 31.3GiB available memory, 4 available cpu cores
Libraries:
libpcre: 8.32 2012-11-30 (compiled with 8.32)
openssl: OpenSSL 1.0.2k 26 Jan 2017 (compiled with )
libxml2: 2.9.1 (compiled with 2.9.1)
Compiled by: mockbuild@ (x86_64-redhat-linux-gnu)
Compilation: gcc -std=gnu99 -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2
-fexceptions -fstack-protector-strong --param=ssp-buffer-size=4
-grecord-gcc-switches -m64 -mtune=generic
Linking : /usr/bin/ld -m elf_x86_64 -Wl,-z,relro
-Wl,-Bsymbolic-functions
Thanks,
Anton