Re: New Table Access Methods for Multi and Single Inserts
От | Bharath Rupireddy |
---|---|
Тема | Re: New Table Access Methods for Multi and Single Inserts |
Дата | |
Msg-id | CALj2ACWT0Rz8oybWBm5W4CeS0DvFkwaw-pEvGArhDLyPbZnW_g@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: New Table Access Methods for Multi and Single Inserts (Bharath Rupireddy <bharath.rupireddyforpostgres@gmail.com>) |
Ответы |
Re: New Table Access Methods for Multi and Single Inserts
|
Список | pgsql-hackers |
On Mon, Jan 29, 2024 at 12:57 PM Bharath Rupireddy <bharath.rupireddyforpostgres@gmail.com> wrote: > > On Wed, Jan 17, 2024 at 10:57 PM Bharath Rupireddy > <bharath.rupireddyforpostgres@gmail.com> wrote: > > > > Thank you. I'm attaching v8 patch-set here which includes use of new > > insert TAMs for COPY FROM. With this, postgres not only will have the > > new TAM for inserts, but they also can make the following commands > > faster - CREATE TABLE AS, SELECT INTO, CREATE MATERIALIZED VIEW, > > REFRESH MATERIALIZED VIEW and COPY FROM. I'll perform some testing in > > the coming days and post the results here, until then I appreciate any > > feedback on the patches. > > > > I've also added this proposal to CF - > > https://commitfest.postgresql.org/47/4777/. > > Some of the tests related to Incremental Sort added by a recent commit > 0452b461bc4 in aggregates.sql are failing when the multi inserts > feature is used for CTAS (like done in 0002 patch). I'm not so sure if > it's because of the reduction in the CTAS execution times. Execution > time for table 'btg' created with CREATE TABLE AS added by commit > 0452b461bc4 with single inserts is 25.3 msec, with multi inserts is > 17.7 msec. This means that the multi inserts are about 1.43 times or > 30.04% faster than the single inserts. Couple of ways to make these > tests pick Incremental Sort as expected - 1) CLUSTER btg USING abc; or > 2) increase the number of rows in table btg to 100K from 10K. FWIW, if > I reduce the number of rows in the table from 10K to 1K, the > Incremental Sort won't get picked on HEAD with CTAS using single > inserts. Hence, I chose option (2) to fix the issue. > > Please find the attached v9 patch set. > > [1] > -- Engage incremental sort > explain (COSTS OFF) SELECT x,y FROM btg GROUP BY x,y,z,w; > - QUERY PLAN > -------------------------------------------------- > + QUERY PLAN > +------------------------------ > Group > Group Key: x, y, z, w > - -> Incremental Sort > + -> Sort > Sort Key: x, y, z, w > - Presorted Key: x, y > - -> Index Scan using btg_x_y_idx on btg > -(6 rows) > + -> Seq Scan on btg > +(5 rows) CF bot machine with Windows isn't happy with the compilation [1], so fixed those warnings and attached v10 patch set. [1] [07:35:25.458] [632/2212] Compiling C object src/backend/postgres_lib.a.p/commands_copyfrom.c.obj [07:35:25.458] c:\cirrus\src\include\access\tableam.h(1574) : warning C4715: 'table_multi_insert_slots': not all control paths return a value [07:35:25.458] c:\cirrus\src\include\access\tableam.h(1522) : warning C4715: 'table_insert_begin': not all control paths return a value [07:35:25.680] c:\cirrus\src\include\access\tableam.h(1561) : warning C4715: 'table_multi_insert_next_free_slot': not all control paths return a value [07:35:25.680] [633/2212] Compiling C object src/backend/postgres_lib.a.p/commands_createas.c.obj [07:35:25.680] c:\cirrus\src\include\access\tableam.h(1522) : warning C4715: 'table_insert_begin': not all control paths return a value [07:35:26.310] [646/2212] Compiling C object src/backend/postgres_lib.a.p/commands_matview.c.obj [07:35:26.310] c:\cirrus\src\include\access\tableam.h(1522) : warning C4715: 'table_insert_begin': not all control paths return a value -- Bharath Rupireddy PostgreSQL Contributors Team RDS Open Source Databases Amazon Web Services: https://aws.amazon.com
Вложения
В списке pgsql-hackers по дате отправления: