Index split WAL reduction

Lists: pgsql-patches
From: "Heikki Linnakangas" <heikki(at)enterprisedb(dot)com>
To: <pgsql-patches(at)postgresql(dot)org>
Subject: Index split WAL reduction
Date: 2006-12-05 11:41:13
Message-ID: 45755AD9.1040503@enterprisedb.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-patches

Hi,

Currently, an index split writes all the data on the split page to WAL.
That's a lot of WAL traffic. The tuples that are copied to the right
page need to be WAL logged, but the tuples that stay on the original
page don't.

Here's a patch to do that. It needs further testing, I have used the
attached crude crashtest.sh to test the basics, but we need to test the
more obscure cases like splitting non-leaf or root page.

On a test case that inserts 10000 rows in increasing key order with a
100 characters wide text-field as key, the patch reduced the total
generated WAL traffic from 45MB to 33MB, or ~ 25%. Your mileage may
vary, depending on the tuple and key sizes, and the order of inserts.

Anyone see a problem with this?

--
Heikki Linnakangas
EnterpriseDB http://www.enterprisedb.com

Attachment Content-Type Size
split_wal_reduction-5.patch text/x-patch 16.6 KB
crashtest.sh application/x-shellscript 3.1 KB

From: "Heikki Linnakangas" <heikki(at)enterprisedb(dot)com>
To: <pgsql-patches(at)postgresql(dot)org>
Subject: Re: Index split WAL reduction
Date: 2006-12-07 19:01:26
Message-ID: 45786506.1060705@enterprisedb.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-patches

Here's an updated patch, with a high key related bug and *_desc
functions fixed. And an updated crashtest.sh as well.

Heikki Linnakangas wrote:
> Hi,
>
> Currently, an index split writes all the data on the split page to WAL.
> That's a lot of WAL traffic. The tuples that are copied to the right
> page need to be WAL logged, but the tuples that stay on the original
> page don't.
>
> Here's a patch to do that. It needs further testing, I have used the
> attached crude crashtest.sh to test the basics, but we need to test the
> more obscure cases like splitting non-leaf or root page.
>
> On a test case that inserts 10000 rows in increasing key order with a
> 100 characters wide text-field as key, the patch reduced the total
> generated WAL traffic from 45MB to 33MB, or ~ 25%. Your mileage may
> vary, depending on the tuple and key sizes, and the order of inserts.
>
> Anyone see a problem with this?

--
Heikki Linnakangas
EnterpriseDB http://www.enterprisedb.com

Attachment Content-Type Size
crashtest.sh application/x-shellscript 3.8 KB
split_wal_reduction-6.patch text/x-patch 19.0 KB

From: Heikki Linnakangas <heikki(at)enterprisedb(dot)com>
To: Heikki Linnakangas <heikki(at)enterprisedb(dot)com>
Cc: pgsql-patches(at)postgresql(dot)org
Subject: Re: Index split WAL reduction
Date: 2007-01-02 16:15:13
Message-ID: 459A8511.9050901@enterprisedb.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-patches

Here's an updated patch that fixes a bug with full_page_writes, and an
alignment issue in replay code. Also added a new test case to
crashtest.sh that exercises the fixed bug.

Has anyone looked at this? I now consider it ready for committing, if
no-one sees a problem with it.

Here's the original description of the patch:

> Currently, an index split writes all the data on the split page to
> WAL. That's a lot of WAL traffic. The tuples that are copied to the
> right page need to be WAL logged, but the tuples that stay on the
> original page don't.
>
> Here's a patch to do that. It needs further testing, I have used the
> attached crude crashtest.sh to test the basics, but we need to test
> the more obscure cases like splitting non-leaf or root page.
>
> On a test case that inserts 10000 rows in increasing key order with a
> 100 characters wide text-field as key, the patch reduced the total
> generated WAL traffic from 45MB to 33MB, or ~ 25%. Your mileage may
> vary, depending on the tuple and key sizes, and the order of inserts.

--
Heikki Linnakangas
EnterpriseDB http://www.enterprisedb.com

Attachment Content-Type Size
crashtest.sh application/x-shellscript 5.6 KB
split_wal_reduction-7.patch text/x-patch 21.9 KB

From: Bruce Momjian <bruce(at)momjian(dot)us>
To: Heikki Linnakangas <heikki(at)enterprisedb(dot)com>
Cc: pgsql-patches(at)postgresql(dot)org
Subject: Re: Index split WAL reduction
Date: 2007-02-04 00:00:01
Message-ID: 200702040000.l14001f26029@momjian.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-patches


Your patch has been added to the PostgreSQL unapplied patches list at:

http://momjian.postgresql.org/cgi-bin/pgpatches

It will be applied as soon as one of the PostgreSQL committers reviews
and approves it.

---------------------------------------------------------------------------

Heikki Linnakangas wrote:
> Here's an updated patch that fixes a bug with full_page_writes, and an
> alignment issue in replay code. Also added a new test case to
> crashtest.sh that exercises the fixed bug.
>
> Has anyone looked at this? I now consider it ready for committing, if
> no-one sees a problem with it.
>
> Here's the original description of the patch:
>
> > Currently, an index split writes all the data on the split page to
> > WAL. That's a lot of WAL traffic. The tuples that are copied to the
> > right page need to be WAL logged, but the tuples that stay on the
> > original page don't.
> >
> > Here's a patch to do that. It needs further testing, I have used the
> > attached crude crashtest.sh to test the basics, but we need to test
> > the more obscure cases like splitting non-leaf or root page.
> >
> > On a test case that inserts 10000 rows in increasing key order with a
> > 100 characters wide text-field as key, the patch reduced the total
> > generated WAL traffic from 45MB to 33MB, or ~ 25%. Your mileage may
> > vary, depending on the tuple and key sizes, and the order of inserts.
>
> --
> Heikki Linnakangas
> EnterpriseDB http://www.enterprisedb.com

[ application/x-shellscript is not supported, skipping... ]

>
> ---------------------------(end of broadcast)---------------------------
> TIP 3: Have you checked our extensive FAQ?
>
> http://www.postgresql.org/docs/faq

--
Bruce Momjian bruce(at)momjian(dot)us
EnterpriseDB http://www.enterprisedb.com

+ If your life is a hard drive, Christ can be your backup. +


From: Bruce Momjian <bruce(at)momjian(dot)us>
To: Bruce Momjian <bruce(at)momjian(dot)us>
Cc: Heikki Linnakangas <heikki(at)enterprisedb(dot)com>, pgsql-patches(at)postgresql(dot)org
Subject: Re: Index split WAL reduction
Date: 2007-02-04 00:01:00
Message-ID: 200702040001.l14010p26420@momjian.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-patches


Sorry, please disregard. Newer patch being added.

---------------------------------------------------------------------------

Bruce Momjian wrote:
>
> Your patch has been added to the PostgreSQL unapplied patches list at:
>
> http://momjian.postgresql.org/cgi-bin/pgpatches
>
> It will be applied as soon as one of the PostgreSQL committers reviews
> and approves it.
>
> ---------------------------------------------------------------------------
>
>
> Heikki Linnakangas wrote:
> > Here's an updated patch that fixes a bug with full_page_writes, and an
> > alignment issue in replay code. Also added a new test case to
> > crashtest.sh that exercises the fixed bug.
> >
> > Has anyone looked at this? I now consider it ready for committing, if
> > no-one sees a problem with it.
> >
> > Here's the original description of the patch:
> >
> > > Currently, an index split writes all the data on the split page to
> > > WAL. That's a lot of WAL traffic. The tuples that are copied to the
> > > right page need to be WAL logged, but the tuples that stay on the
> > > original page don't.
> > >
> > > Here's a patch to do that. It needs further testing, I have used the
> > > attached crude crashtest.sh to test the basics, but we need to test
> > > the more obscure cases like splitting non-leaf or root page.
> > >
> > > On a test case that inserts 10000 rows in increasing key order with a
> > > 100 characters wide text-field as key, the patch reduced the total
> > > generated WAL traffic from 45MB to 33MB, or ~ 25%. Your mileage may
> > > vary, depending on the tuple and key sizes, and the order of inserts.
> >
> > --
> > Heikki Linnakangas
> > EnterpriseDB http://www.enterprisedb.com
>
> [ application/x-shellscript is not supported, skipping... ]
>
>
> >
> > ---------------------------(end of broadcast)---------------------------
> > TIP 3: Have you checked our extensive FAQ?
> >
> > http://www.postgresql.org/docs/faq
>
> --
> Bruce Momjian bruce(at)momjian(dot)us
> EnterpriseDB http://www.enterprisedb.com
>
> + If your life is a hard drive, Christ can be your backup. +
>
> ---------------------------(end of broadcast)---------------------------
> TIP 7: You can help support the PostgreSQL project by donating at
>
> http://www.postgresql.org/about/donate

--
Bruce Momjian bruce(at)momjian(dot)us
EnterpriseDB http://www.enterprisedb.com

+ If your life is a hard drive, Christ can be your backup. +


From: Bruce Momjian <bruce(at)momjian(dot)us>
To: Heikki Linnakangas <heikki(at)enterprisedb(dot)com>
Cc: pgsql-patches(at)postgresql(dot)org
Subject: Re: Index split WAL reduction
Date: 2007-02-04 00:04:03
Message-ID: 200702040004.l14043126991@momjian.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-patches


Your patch has been added to the PostgreSQL unapplied patches list at:

http://momjian.postgresql.org/cgi-bin/pgpatches

It will be applied as soon as one of the PostgreSQL committers reviews
and approves it.

---------------------------------------------------------------------------

Heikki Linnakangas wrote:
> Here's an updated patch that fixes a bug with full_page_writes, and an
> alignment issue in replay code. Also added a new test case to
> crashtest.sh that exercises the fixed bug.
>
> Has anyone looked at this? I now consider it ready for committing, if
> no-one sees a problem with it.
>
> Here's the original description of the patch:
>
> > Currently, an index split writes all the data on the split page to
> > WAL. That's a lot of WAL traffic. The tuples that are copied to the
> > right page need to be WAL logged, but the tuples that stay on the
> > original page don't.
> >
> > Here's a patch to do that. It needs further testing, I have used the
> > attached crude crashtest.sh to test the basics, but we need to test
> > the more obscure cases like splitting non-leaf or root page.
> >
> > On a test case that inserts 10000 rows in increasing key order with a
> > 100 characters wide text-field as key, the patch reduced the total
> > generated WAL traffic from 45MB to 33MB, or ~ 25%. Your mileage may
> > vary, depending on the tuple and key sizes, and the order of inserts.
>
> --
> Heikki Linnakangas
> EnterpriseDB http://www.enterprisedb.com

[ application/x-shellscript is not supported, skipping... ]

>
> ---------------------------(end of broadcast)---------------------------
> TIP 3: Have you checked our extensive FAQ?
>
> http://www.postgresql.org/docs/faq

--
Bruce Momjian bruce(at)momjian(dot)us
EnterpriseDB http://www.enterprisedb.com

+ If your life is a hard drive, Christ can be your backup. +


From: Bruce Momjian <bruce(at)momjian(dot)us>
To: Heikki Linnakangas <heikki(at)enterprisedb(dot)com>
Cc: pgsql-patches(at)postgresql(dot)org
Subject: Re: Index split WAL reduction
Date: 2007-02-08 05:06:06
Message-ID: 200702080506.l18566j03880@momjian.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-patches


Patch applied. Thanks.

---------------------------------------------------------------------------

Heikki Linnakangas wrote:
> Here's an updated patch that fixes a bug with full_page_writes, and an
> alignment issue in replay code. Also added a new test case to
> crashtest.sh that exercises the fixed bug.
>
> Has anyone looked at this? I now consider it ready for committing, if
> no-one sees a problem with it.
>
> Here's the original description of the patch:
>
> > Currently, an index split writes all the data on the split page to
> > WAL. That's a lot of WAL traffic. The tuples that are copied to the
> > right page need to be WAL logged, but the tuples that stay on the
> > original page don't.
> >
> > Here's a patch to do that. It needs further testing, I have used the
> > attached crude crashtest.sh to test the basics, but we need to test
> > the more obscure cases like splitting non-leaf or root page.
> >
> > On a test case that inserts 10000 rows in increasing key order with a
> > 100 characters wide text-field as key, the patch reduced the total
> > generated WAL traffic from 45MB to 33MB, or ~ 25%. Your mileage may
> > vary, depending on the tuple and key sizes, and the order of inserts.
>
> --
> Heikki Linnakangas
> EnterpriseDB http://www.enterprisedb.com

[ application/x-shellscript is not supported, skipping... ]

>
> ---------------------------(end of broadcast)---------------------------
> TIP 3: Have you checked our extensive FAQ?
>
> http://www.postgresql.org/docs/faq

--
Bruce Momjian <bruce(at)momjian(dot)us> http://momjian.us
EnterpriseDB http://www.enterprisedb.com

+ If your life is a hard drive, Christ can be your backup. +