Download and install aspseek-1.2.10 from http://www.aspseek.org
Run this against mysql 3.23.49

Run it for a few days, indexing about 1million urls, 
Then keep reindexing them and watch your database corrupt...

Regards,

John

-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]
On Behalf Of Chris Nolan
Sent: Sunday, February 15, 2004 6:37 PM
To: dbmail-dev@dbmail.org
Subject: RE: [Dbmail-dev] some speed tests


Table corruptions?

I'd be very interested to hear the story around your grief, if for
nothing else, for reference purposes. :-)

Regards,

Chris

On Sun, 2004-02-15 at 17:19, John Hansen wrote:
> Personally, I recent the statement; 'Considering MySQL has proven 
> itself time and time again in terms of reliability, licencing 
> flexibility and performance, such statements are baseless regardless 
> of what arguments you make for which features'; based on experience, 
> mysql proved that it was not reliable, tho performance was top of the 
> line.
> 
> In my opinion, if you're concerned with reliability, mysql should not 
> be an option. I had daily table corruptions, and thus one of my main 
> tasks was to run mysql repair jobs regularly, just to keep everything 
> running.
> 
> Granted, postgresql has it's own problems, mainly with performance and

> lack of a proper master / slave replication model, but that's a small 
> price to pay for reliability.
> 
> Just my $0.02 worth.
> 
> Regards,
> 
> John Hansen
> 
> -----Original Message-----
> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]
> On Behalf Of Chris Nolan
> Sent: Sunday, February 15, 2004 4:42 PM
> To: dbmail-dev@dbmail.org
> Subject: Re: [Dbmail-dev] some speed tests
> 
> 
> Dear Aaron,
> 
> My comments are also inline. :-)
> 
> On Sun, 2004-02-15 at 12:27, Aaron Stone wrote:
> > Comments inline...
> > 
> > Chris Nolan <[EMAIL PROTECTED]> said:
> > 
> > > Forgive the bluntness of the statement, but why is anyone even
> > > worrying
> > > about transactions as they relate to MySQL???
> > 
> > Because we are currently structured to have a single set of 
> > mid-level
> > database operations that are translated into specific low-level 
> > database function calls. The upside is that there isn't any database

> > specific handling outside of these mid-level functions. The downside

> > is that we need to make sure that function calls for certain
features 
> > are consistent with analogous features in each database and that
they 
> > carry with them enough information to make the appropriate low-level

> > call. A good example is the last inserted id number. In MySQL, you 
> > only need the database connection identifier to get this. In 
> > PostgreSQL, yo need both the database connection and the table 
> > identifier. For DBMail to have a mid-level function that worked for 
> > both, we'd have to make sure that it took both arguments and used
them
> 
> > as needed for whichever database's low-level calls were being used.
> > (Those were off the top of my head, so they may be incorrect, but
they
> 
> > do illustrate my point.)
> 
> I've looked through the DBMail source code on a few occassions and 
> even released a dodgy tool to convert Cyrus mailboxes to DBMail a 
> while ago. The fact that I can use the calls present in the DB modules

> and avoid having to write queries by hand for each different DB is an 
> excellent feature of the DBMail API. I have nothing negative to say 
> here at all.
> 
> > 
> > > COMMIT in MySQL is passed to the table handler. In the case of
> > > MyISAM
> > > tables, the handler disregards the statement. For InnoDB and BDB
> tables,
> > > COMMIT acts as it does in PostgreSQL.
> > 
> > So then we have THREE different configurations to consider, and need
> > to be sure to design the mid-level interface appropriately.
> 
> My statement was meant to say that the MyISAM table handler will just 
> disregard BEGIN and COMMIT statements, just as it parses but ignores 
> CHECK and FOREIGN KEY constraints in table creation, thus illustrating

> that you wouldn't need to add a mysql-with-transactions directory to 
> the source tree.
> 
> > 
> > > So various people in this thread implying that MySQL isn't really 
> > > a database need to do some more reading.
> > 
> > If you're referring to my suggestion that the transaction functions
> > are a noop for MySQL, then you're reading too deeply... I just
didn't 
> > realize that InnoDB would handle transactions entirely normally.
> 
> My apologies, I was not referring to you at all! Yourself and your 
> collegues have provided the world with a very, very funky mail 
> repository!
> 
> I was referring to someone who said in the body of their message 
> posted to another branch of this thread "the supposed database mysql".

> Considering MySQL has proven itself time and time again in terms of 
> reliability, licencing flexibility and performance, such statements 
> are baseless regardless of what arguments you make for which features.

> For example, Visual FoxPro's backend is technically a database but 
> provides nothing in the way of a privilege system (you need write 
> access to record locking, so filesystem-level controls are no good 
> either).
> 
> > 
> > > In summary, just encapsulate everything in transaction blocks and
> > > the
> > > underlaying database will act appropriately.
> > 
> > Right. That's what we're talking about.
> > 
> > Is the entire point of your comment that we can safely use
> > 
> > BEGIN;
> > 
> > .. whatever dbmail does...
> > 
> > COMMIT;
> > 
> > regardless of whether or not we know if the host database actually
> > supports these keywords? You could have just said that.
> 
> I could have, but then I would have risked putting an end to the 
> thread.
> :-)
> 
> Please accept my apology - I never meant to offend yourself or anyone 
> else who contributes to DBMail. It seems my reading of the post I 
> mentioned above caused me to be a bit heavier than I should have been.
> 
> But yes, you have perfectly summarised the point of my comment.
> >  
> > > Regards,
> > > 
> > > Chris
> > > 
> > > Aaron Stone wrote:
> > > 
> > > >I don't even know where to begin in terms of designing the 
> > > >delivery
> 
> > > >chain around transactions. Could we do it as simply as adding
> > > >functions...
> > > >
> > > >    void db_begin_transaction(void);
> > > >    void db_flush_transaction(void); (or db_commit_...?)
> > > >
> > > >and then calling these functions before and after each major
> > > >section of database code? For the delivery chain, we could do it 
> > > >inside of insert_message(). For dbmail-smtp, this basically means

> > > >that the execution of the whole program is within one
transaction. 
> > > >For dbmail-lmtpd, it means that each message is delivered within
a 
> > > >transaction but the miscellaneous queries before the main message

> > > >delivery chain are not transacted. For MySQL, these functions
would
> 
> > > >be noops.
> > > >
> > > >Thing that might work?
> > > >
> > > >Aaron
> > > >
> > > >
> > > >Thomas Mueller <[EMAIL PROTECTED]> said:
> > > >
> > > >  
> > > >
> > > >>Hi Aaron,
> > > >>
> > > >>    
> > > >>
> > > >>>Do you have any way of narrowing this down to specific queries
> > > >>>that are taking the longest and/or are being executed the most?

> > > >>>That would identify which low-level database functions are
being 
> > > >>>called, then we can just trace our way up the call chain to see

> > > >>>who's misbehaving or acting on a flawed design. Also, if you 
> > > >>>could run similar tests against the latest 1.2, it would help
to 
> > > >>>give a frame of reference, particularly for my delivery chain 
> > > >>>design.
> > > >>>      
> > > >>>
> > > >>That's simple: the main design flaw (actually that's no design
> > > >>flaw I think, that's because the so called database MySQL
couldn't
> 
> > > >>do transactions in the past) is that dbmail doesn't use
> > > >>transaction.
> > > >>
> > > >>Because of that AutoCommit is used and whenever dbmail does
> > > >>anySqlQuery Postgres does 'BEGIN; anySqlQuery; COMMIT;' - and
that
> 
> > > >>is terribly slow. To ensure the Durability in ACID the database
> > > >>has to fflush() every transaction to stable storage! That's why 
> > > >>there is only one solution: we have to use transaction.
> > > >>
> > > >>With transactions we could remove the integrity checks of
> > > >>dbmail-maintenance too, because the database guarantees
integrity.
> > > >>
> > > >>Anyway, I did a trace of all SQL queries when a mail is copied
> > > >>using IMAP. I got 35 SELECT, 4 INSERT, 5 UPDATE (44 db
operations 
> > > >>to insert one mail?).
> > > >>
> > > >>When searching for the sequential scan I found something quite
> > > >>interesting in the docs: the planer decides for every scan if a 
> > > >>seqScan is cheaper that an index scan, and does a seqScan even
if 
> > > >>an index
> > > >>exists:
> > > >>
> > > >>dbmail=> explain SELECT mailbox_idnr FROM mailboxes WHERE
> owner_idnr=2;
> > > >>                       QUERY PLAN                        
> > > >>---------------------------------------------------------
> > > >> Seq Scan on mailboxes  (cost=0.00..1.06 rows=3 width=8)
> > > >>   Filter: (owner_idnr = 2)
> > > >>(2 rows)
> > > >>
> > > >>The table has an index on owner_idnr.
> > > >>
> > > >>So I should repeat this test with a database with several 
> > > >>hundred
> > > >>to thousand user, several dozen mailboxes for each user and 
> > > >>several dozen mails in each mailbox to find out if all required 
> > > >>indizes are there. Did anyone write a script to create such a 
> > > >>database?
> > > >>
> > > >>But I found a strange query:
> > > >>SELECT mailbox_idnr FROM mailboxes WHERE mailbox_idnr = '4' AND
> > > >>owner_idnr = '2' mailbox_idnr is the primary key so that could
be 
> > > >>optimized to: SELECT 4
> > > >>;-)
> > > >>
> > > >>
> > > >>I don't have a 1.2 installation, I'm sorry.
> > > >>
> > > >>
> > > >>--
> > > >>MfG Thomas Mueller - http://www.tmueller.com for pgp key
> (95702B3B)
> > > >>_______________________________________________
> > > >>Dbmail-dev mailing list
> > > >>Dbmail-dev@dbmail.org 
> > > >>http://twister.fastxs.net/mailman/listinfo/dbmail-dev
> > > >>
> > > >>    
> > > >>
> > > >
> > > >
> > > >
> > > >  
> > > >
> > > 
> > > 
> > > _______________________________________________
> > > Dbmail-dev mailing list
> > > Dbmail-dev@dbmail.org
> > > http://twister.fastxs.net/mailman/listinfo/dbmail-dev
> > > 
> > 
> > 
> 
> _______________________________________________
> Dbmail-dev mailing list
> Dbmail-dev@dbmail.org 
> http://twister.fastxs.net/mailman/listinfo/dbmail-dev
> _______________________________________________
> Dbmail-dev mailing list
> Dbmail-dev@dbmail.org 
> http://twister.fastxs.net/mailman/listinfo/dbmail-dev

_______________________________________________
Dbmail-dev mailing list
Dbmail-dev@dbmail.org
http://twister.fastxs.net/mailman/listinfo/dbmail-dev

Reply via email to