Re: [PERFORM] One large v. many small - Mailing list pgsql-general

From Jeff
Subject Re: [PERFORM] One large v. many small
Date
Msg-id Pine.BSF.4.44.0301310743500.45720-100000@torgo.978.org
Whole thread Raw
In response to Re: [PERFORM] One large v. many small  ("Gregory Wood" <gregw@com-stock.com>)
List pgsql-general
On Thu, 30 Jan 2003, Gregory Wood wrote:

> While you make an excellent point (i.e. you can't always through hardware,
> especially excessive hardware at the problem), I would err on the side of
> doing things the right way. It usually ends up making the software easier to
> maintain and add to. A poor design to save a few thousand dollars on
> hardware now can cost many tens of thousands (or more) dollars on
> programming time down the road.
>


fun story - I was part of a dot com and we had an informix database and
the schema was pretty "good" - ref integrity and "logical layout".  What
happened
was our traffic started increasng dramatically.  We ended up having to
disable all the ref integrity simply because it gave us a 50% boost. It
was unfortuate, but you have to do it.  Sometimes you have to comprimise.
As for throwing hardware at it - it was already running on a $500k sun
box, an upgrade would have likely gone into the 7 digit range.
Not to mention you don't exactly get a quick turnaround on
hardware of that type.. a u10 perhaps, but not a big beefy box.
(Eventually  we did upgrade the db machine when we got another round of
funding)

so after a week of engineering and futzing we had things under control..
(db changes, massive app changes (agressive caching))

Yes it was horrid to throw out RI (which caused some minor issues
later) but when the business is riding on it.. you make it work any way
you can.  In a perfect world I would have done it another way, but when
the site is down (read: your business is not running, you are losing large
amounts of money) you need to put on your fire fighter suit, not your lab
coat.

I remember one time we were featured on CNBC and our traffic jumped by
1000% (yes, 1000) - our poor machines were hosed.  Now we did throw
hardware at this problem (more frontends) however aquiring hardware in
time of crisis is not terribly easy (took 3 days in this case).  So you
have to look at your other routes.

sometimes your design or some implementation details will be comprimised..
its a fact of business.  If the best design always won then why don't I
have an alpha for my machine machine? they are the fastest, best cpu
around.  (I'll admit, alpha failed a lot because of marketing
issues and cost) Business drives everything.  I'd rather continue getting
a paycheck than having a wonderfully designed db that doesn't perform
well and is causing us to lose money.

If you have the ability (ie, you know your site is going to end up doing
22M page views, or some other statistic like that) to see what things will
be like later and are not fighting a fire, design is wonderful. (Lets not
forget time.  I was just on a major project and they scheduled _3_ weeks
of design & coding.. we were quite upset about that one.. and they
arranged it so the launch date was set in stone.  man.. worked some
long nights..)

getting back to the original posters thing - why not just try a test to
see how things perform yourself?  Try some tests with 3000 tables, and try
a test with 1 table with a client_id (int) field.  Or as <insert name of
person who I forget> said, you could even make a boatload of views and
change your insertion logic..

anyway, sorry if I flamed anybody or if they took it personally.
just stating some experiences I've had.

------------------------------------------------------------------------------
Jeff Trout <jeff@jefftrout.com>                  http://www.jefftrout.com/
   Ronald McDonald, with the help of cheese soup,
       controls America from a secret volkswagon hidden in the past
-------------------------------------------------------------------------------



pgsql-general by date:

Previous
From: "codeWarrior"
Date:
Subject: Re: Basic SQL join question
Next
From: tamir@imp.univie.ac.at (Ido Tamir)
Date:
Subject: pgSQL function for: SELECT ... WHERE EXISTS ( SELECT true myFunc() )