Re: Performance (was: The New Slashdot Setup (includes MySql server)) - Mailing list pgsql-hackers

From Matthias Urlichs
Subject Re: Performance (was: The New Slashdot Setup (includes MySql server))
Date
Msg-id 20000520201710.C11220@noris.de
Whole thread Raw
In response to Re: Performance (was: The New Slashdot Setup (includes MySql server))  (Mike Mascari <mascarm@mascari.com>)
Responses Re: Performance (was: The New Slashdot Setup (includes MySql server))  (Bruce Momjian <pgman@candle.pha.pa.us>)
MySQL crashme  (Bruce Momjian <pgman@candle.pha.pa.us>)
List pgsql-hackers
Hi,

Mike Mascari:
> 
> 1. alter_rename_table = no
> 
> The syntax in PostgreSQL is ALTER TABLE x RENAME TO y;
> 
They say "alter table crash_q rename crash_q1".

What does the official standard say (assuming any exists) -- is the "to"
optional or not?

> 2. atomic_updates = no
> 
> Huh? Besides being paranoid about fsync()'ing transactions how is
> a transaction based MVCC not atomic with respect to updates?
> 
That's a misnomer. They actually mean this:
create table crash_q (a integer not null);create unique index crf on crash_q(a);
insert into crash_q values (2);insert into crash_q values (3);insert into crash_q values (1);update crash_q set a=a+1;

> 3. automatic_rowid = no
> 
> The description simply says Automatic rowid. Does this apply to
> query result sets or to the underlying relation? If the latter,
> PostgreSQL has, of course, an OID for every tuple in the
> database.
> 
I'll have them fix that. MySQL calls them "_rowid" and apparently tests
only for these.

> 4. binary_items = no
> 
> Read up on large objects...
> 
... with an ... erm ... let's call it "nonstandard" ... interface.

> 5. connections = 32
> 
> This, should, of course be +32, since PostgreSQL can easily
> handle hundreds of simultaneous connections.
> 
The testing code (Perl) looks like this, and it bombs after the 32nd
connection.
 for ($i=1; $i < $max_connections ; $i++) {   if (!($dbh=DBI->connect($server->{'data_source'},$opt_user,$opt_password,
           { PrintError => 0})))   {     print "Last connect error: $DBI::errstr\n" if ($opt_debug);     last;   }
$dbh->{LongReadLen}=$longreadlen; # Set retrieval buffer   print "." if ($opt_debug);   push(@connect,$dbh); } print
"$i\n";

I do not know where that limit comes from.
It might be the DBI interface to PostgreSQL, or a runtime limit.

Anyway, $max_connections has the value to 1000.

> 6. create_table_select = no
> 
> Again. PostgreSQL supports CREATE TABLE AS SELECT (i.e. Oracle),
> and SELECT INTO syntax.

Test code:create table crash_q SELECT * from crash_me;

Again, is the "AS" optional or not?

> 7. except = no
> 
> PostgreSQL has had both INTERSECT and EXCEPT since 6.5.0 (albeit
> they're slow).
> 
Looking at the test, we see it doing this:
create table crash_me (a integer not null,b char(10) not null);insert into crash_me (a,b) values (1,'a');create table
crash_me2(a integer not null,b char(10) not null, c integer);insert into crash_me2 (a,b,c) values (1,'b',1);select *
fromcrash_me except select * from crash_me2;
 

For what it's worth, there is at least one database which doesn't
have this restriction (i.e., that the number of columns must be
identical) (namely SOLID).

So this test needs to be split into two. I'll do that.

> I'm starting to get very tired of this. I don't see why
> PostgreSQL users are obligated to get MySQL tests correct. And
> I'm only 15% through the list...
> 
_Somebody_ has to get these things right. I'm not suggesting that it's
any obligation of yours specifically, but somebody's gotta do it, and
(IMHO) it can only be done by somebody who already knows _something_
about the databse to be tested.

> Bottom line...either the test writers are ignorant or deceptive.

Or the tests are just badly written. Or they're too old and suffer from
severe bit rot.


For what its worth, I do NOT think the people who wrote these tests
are either ignorant or deceptive. Most, if not all, of these tests
are OK when checked against at least one SQLish database.

-- 
Matthias Urlichs  |  noris network GmbH   |   smurf@noris.de  |  ICQ: 20193661
The quote was selected randomly. Really.       |        http://smurf.noris.de/
-- 
Freedom of opinion can only exist when
the government thinks itself secure.                       -- Bertrand Russell (1872-1967)


pgsql-hackers by date:

Previous
From: Lamar Owen
Date:
Subject: Re: -devel-7.0-1.rpm: Still missing a lots of headers
Next
From: "Matthias Urlichs"
Date:
Subject: Re: More Performance