Thread: [Fwd: MySQL Benchmark page - Problem with vacuum() in PostgreSQL]

[Fwd: MySQL Benchmark page - Problem with vacuum() in PostgreSQL]

From
Justin Clift
Date:
Hi all,

The "MySQL Benchmark" page on the mysql.com website has benchmarks for
various databases :

http://www.mysql.com/information/benchmarks.html

In the PostgreSQL entry they aren't able to report an "accurate" result
for all things, as they haven't been able to get vacuum to work 100%
correctly.

If someone can take a look at the description of the problem which Monty
is having (he's the lead MySQL developer) we'll be able to have accurate
benchmark for PostgreSQL on their benchmark page.

So, anyone want to lend a hand?

:-)

Regards and best wishes,

Justin Clift


-------- Original Message --------
Subject: MySQL Benchmark page - Problem with vacuum() in PostgreSQL
Date: Sat, 28 Jul 2001 14:01:22 +0200
From: Anna Ewerlid <Anna.Ewerlid@signal.uu.se>
To: justin@postgresql.org

Hi!

>>>>> "Justin" == Justin Clift <justin@postgresql.org> writes:

Justin> Hi,
Justin> I'm looking at your MySQL benchmark page :

Justin> http://www.mysql.com/information/benchmarks.html

Justin> It says you guys weren't able to get vacuum() working reliably
with
Justin> PostgreSQL 7.1.1, and you'll generate a fast version of the
benchmarks
Justin> when you can.

Justin> What exactly was the problem?

I have tried to explain the problem in document that we have published
under the benchmarks results.

The problem was that when we run the benchmark with the --fast option,
which basicly does a vacuum() between after each batch of updates,
postmaster started to fill up disk with log files during one of the
vacuum() runs and didn't stop until the disk was full. When this
happened I killed postmaster and tried to restart it, but postmaster
just died with a core dump after that :(

I repeated the above a couple of times and was able to repeat the
problem with disk full, but didn't manage to crash postmaster again.

I would really appreciate if you could help us locate and fix the
problem is PostgreSQL, because I would really like to see that all
open source databases gets good benchmarks results to be able to
deliver the message that open source is a good alternative to
commercial databases.

If you have any time over, please take a look at the benchmarks and
see if there is anything that could be improved to get better results
for PostgreSQL, especially when running with the --fast option!

If you think we have missed any important 'single user' benchmark,
feel free to add it to the benchmark suite and email Anna and me a
patch; We really want to be able to show which operations are fast and
which are slow for the different databases, so that the different
database users know to which constructs they have to avoid!

We just hired Anna to start working on a multi-user benchmark suite
that will be a complement to the current single-user benchmark suite.

If you have any comments about the benchmarks, please share them with
us!
I have worked hard to make them fair against all databases;  I have
actually put more work into getting PostgreSQL to give good numbers
than for any other database!  The problem is that I don't know
PostgreSQL intimately which makes it a bit harder to get really
benchmark results for it!

Regards,
Monty

Re: [Fwd: MySQL Benchmark page - Problem with vacuum() in PostgreSQL]

From
Tom Lane
Date:
Justin Clift <justin@postgresql.org> forwards:
> The problem was that when we run the benchmark with the --fast option,
> which basicly does a vacuum() between after each batch of updates,
> postmaster started to fill up disk with log files during one of the
> vacuum() runs and didn't stop until the disk was full.

See
http://www.ca.postgresql.org/mhonarc/pgsql-patches/2001-06/msg00061.html

            regards, tom lane

Re: [Fwd: MySQL Benchmark page - Problem with vacuum() in PostgreSQL]

From
Michael Widenius
Date:
Hi!

>>>>> "Tom" == Tom Lane <tgl@sss.pgh.pa.us> writes:

Tom> Justin Clift <justin@postgresql.org> forwards:
>> The problem was that when we run the benchmark with the --fast option,
>> which basicly does a vacuum() between after each batch of updates,
>> postmaster started to fill up disk with log files during one of the
>> vacuum() runs and didn't stop until the disk was full.

Tom> See
Tom> http://www.ca.postgresql.org/mhonarc/pgsql-patches/2001-06/msg00061.html

Tom>             regards, tom lane

Thanks!

I will look at this as soon as I am back home from my vacation and
then do a new benchmark run and update the benchmark page.

Regards,
Monty

PS: If anyone has any ideas of things that we have missed in our
    current benchmark pages, please email them to Anna so that she can
    add these to the next generation of the benchmark suite.

    Some things that I know we have missed in the single user
    benchmark are:
   - Sub select (all different forms of sub select, with a comparison
             to normal selects for those select that can be
         changed to normal selects)
   - Foreign keys (which should contain a comparison with multi-table-delete)
   - Transactions
   - Rollback

   With comparison I mean that there should be at least one test that
   makes it easy for the user to see which construct is better for
   this database.




Re: [Fwd: MySQL Benchmark page - Problem with vacuum() in PostgreSQL]

From
Jan Wieck
Date:
Michael Widenius wrote:
> [...]
>
>     Some things that I know we have missed in the single user
>     benchmark are:
>    - Sub select (all different forms of sub select, with a comparison
>             to normal selects for those select that can be
>          changed to normal selects)
>    - Foreign keys (which should contain a comparison with multi-table-delete)
>    - Transactions
>    - Rollback
>
>    With comparison I mean that there should be at least one test that
>    makes it easy for the user to see which construct is better for
>    this database.

    Can we clearify that point a little? Does it mean to define a
    foreign key constraint in databases that support it and  just
    check  for  the error, but do all the appropriate locking and
    existence  checks  for  all  operations  (UPDATE/DELETE   PK,
    INSERT/UPDATE FK) on the client side for databases that don't
    support it?

    Well, especially because of the "appropriate  locking",  it'd
    make much more sense to do it all in concurrent multiuser ...
    :-)


Jan

--

#======================================================================#
# It's easier to get forgiveness for being wrong than for being right. #
# Let's break this rule - forgive me.                                  #
#================================================== JanWieck@Yahoo.com #



_________________________________________________________
Do You Yahoo!?
Get your free @yahoo.com address at http://mail.yahoo.com


Re: [Fwd: MySQL Benchmark page - Problem with vacuum() in PostgreSQL]

From
Michael Widenius
Date:
Hi!

>>>>> "Jan" == Jan Wieck <JanWieck@yahoo.com> writes:

Jan> Michael Widenius wrote:
>> [...]
>>
>> Some things that I know we have missed in the single user
>> benchmark are:
>> - Sub select (all different forms of sub select, with a comparison
>> to normal selects for those select that can be
>> changed to normal selects)
>> - Foreign keys (which should contain a comparison with multi-table-delete)
>> - Transactions
>> - Rollback
>>
>> With comparison I mean that there should be at least one test that
>> makes it easy for the user to see which construct is better for
>> this database.

Jan>     Can we clearify that point a little? Does it mean to define a
Jan>     foreign key constraint in databases that support it and  just
Jan>     check  for  the error, but do all the appropriate locking and
Jan>     existence  checks  for  all  operations  (UPDATE/DELETE   PK,
Jan>     INSERT/UPDATE FK) on the client side for databases that don't
Jan>     support it?

Jan>     Well, especially because of the "appropriate  locking",  it'd
Jan>     make much more sense to do it all in concurrent multiuser ...
Jan>     :-)

The plan is to (in the long run) have a test that shows ALL speed
affects of foreign keys.  This includes at least:

- Checking the constraint
- Time for forced rollback when a constraint fails
- Time of cascaded deletes

This above should of course be done both single and multi user.

Regards,
Monty