Slashdot Mirror


'Most Important Ever' MySQL Reaches Beta

An anonymous reader writes "The open source database company says it is 'fixing 10 years of critcism in one release', and is aiming at boosting enterprise take-up." Stored procedures. Triggers. Views. It's like it'll be a real DB!

632 comments

  1. Most Important Ever? by lecithin · · Score: 4, Funny

    Let me guess, MIESQL? Is this where the browser and database are integrated?

    --
    It could be worse, it could be Monday.
    1. Re:Most Important Ever? by tuxnduke · · Score: 2, Funny

      Yeah, I'd vote for MIESQL (btw mies is Finnish and means man).. so it would suit the up'n'coming improved mysql very well.

      Mysql 5.0, - the manly edition with triggers !

    2. Re:Most Important Ever? by Anonymous Coward · · Score: 2, Funny
      MiEsql. That must be Spanish for MySql!

      Spanish often puts Es in front of words that start with S, for example:
      Latin "stare" -> estar
      status -> estado
      I think there is some linguistic term for this added "eh" sound, but I don't remember what it was. And of course mi is Spanish for "my"...
      My Sql -> Mi Esql.
      (A todos lectores hispanos: siento por haberte ofendido y defamado la lengua. Solamente soy gringo tonto con chistes malos.)
    3. Re:Most Important Ever? by Anonymous Coward · · Score: 0

      Sounds just like "MySQL". No, really, read it out...

    4. Re:Most Important Ever? by Anonymous Coward · · Score: 0

      You should be.

    5. Re:Most Important Ever? by blonde+rser · · Score: 4, Funny

      Is this where the browser and database are integrated?

      clearly that was firebird

    6. Re:Most Important Ever? by Anonymous Coward · · Score: 0

      A todos lectores hispanos: siento por haberte ofendido y defamado la lengua. Solamente soy gringo tonto con chistes malos

      No, no, bien escrito y divertido. Me he reído bastante!

    7. Re:Most Important Ever? by Anonymous Coward · · Score: 0

      (A todos lectores hispanos: siento por haberte ofendido y defamado la lengua. Solamente soy gringo tonto con chistes malos.)
      It wasn't exactly very accurate, but you made me laugh. Thanks man! You should've been modded 'funny' and not insightful, though.

    8. Re:Most Important Ever? by RinzeWind · · Score: 2, Funny

      A todos lectores hispanos: siento por haberte ofendido y defamado la lengua

      Don't worry. Bush does that all the time.

    9. Re:Most Important Ever? by Anonymous Coward · · Score: 0

      +5 Chistoso

    10. Re:Most Important Ever? by Anonymous Coward · · Score: 0

      (A todos lectores hispanos: siento por haberte ofendido y defamado la lengua. Solamente soy gringo tonto con chistes malos.)

      Gringo tonto with bad spelling. It's "difamado"
      Remember to use "un" gringo tonto to avoid looking like a robot when speaking spanish.

    11. Re:Most Important Ever? by wild_berry · · Score: 1

      Are you sure it hasn't changed its name since then?

    12. Re:Most Important Ever? by lambadomy · · Score: 0, Offtopic

      Or my friend at work, who the native spanish speakers call "Esteve"

    13. Re:Most Important Ever? by iowannaski · · Score: 1

      Pardon me for ignoring obvious sarcasm...

      "Firebird" the browser has obviously changed it's name.

      "Firebird" the database is still called "Firebird."

      --
      i forget
    14. Re:Most Important Ever? by sapgau · · Score: 0, Offtopic

      Disculpado Gringo...

      MiEsql sounds more like "mi escuela", meaning my school. Which probably is appropriate since almost everybody is learning db programming on mysql.

      (El problema es que la academia de la lengua se resiste a aceptar cualquier anglicismo)

    15. Re:Most Important Ever? by Anonymous Coward · · Score: 0

      What is it about Slashdot that makes everyone think they're a comedian?!?!?! Why can't people just comment on the stories without some stupid, nonsensical, immature and stupid wise-crack?

    16. Re:Most Important Ever? by Anonymous Coward · · Score: 0

      I get a little confused with articles in Spanish. I also studied Latin, so I tend to under-use articles a lot in Spanish, because Latin doesn't have any articles.

      I was taught not to use "un" when describing yourself with ser. Was that wrong?

    17. Re:Most Important Ever? by Anonymous Coward · · Score: 0

      Except with two differences: (1) Bush does that with his native language, and (2) Bush never apologizes.

    18. Re:Most Important Ever? by Anonymous Coward · · Score: 0

      Only if you use an adjective. If you describe yourself using a noun you must put "un"/"una" before the noun.

    19. Re:Most Important Ever? by calophi · · Score: 1

      Quit yer whinin'. If you don't like it, then don't read the comments. No one's forcing you.

    20. Re:Most Important Ever? by bastardadmin · · Score: 1

      Depends on which Academia de la Lengua...

      Look at Spain: Parking and Márketing, while in the Americas we have Estacionamiento and mercadeo or mercadotécnia

  2. (not fp) by Ari+Rahikkala · · Score: 5, Funny

    What, does it come with data integrity, too?

    1. Re:(not fp) by mmkkbb · · Score: 1

      as in it supports foreign keys in a non-suck manner?

      --
      -mkb
    2. Re:(not fp) by LurkerXXX · · Score: 4, Informative

      And did they fix it so that you input out of bounds data in a field that has constraints on it, it throws an error rather than just silently changing your input to a value it likes? Silent data corruption kinda sucks... That's why I use Postgres.

    3. Re:(not fp) by InfiniteVoid · · Score: 5, Funny

      Heh, yeah. My personal favorite is when you run BEGIN TRANSACTION; on a table that doesn't support transactions. It fails silently. Sortof makes that ROLLBACK you call several commands later a bit useless.

    4. Re:(not fp) by cayenne8 · · Score: 1

      Ok...this was what I was wanting to ask about, if MySQL was going to be fully transactional. Also, does it support having multiple tablespaces in/on different directories/drives?

      --
      Light travels faster than sound. This is why some people appear bright until you hear them speak.........
    5. Re:(not fp) by Anonymous Coward · · Score: 0

      To be fair, postgres (as of 7.4, anyway) doesn't explicitly support tablespaces like that. Instead you have to look up the oid of each of your tables, then (with the database stopped!) you can move those files wherever you want to put them, and symlink them back into the appropriate database directory. A CREATE TABLE ... IN FILE '/some/file/name'; command would simplify the process, though it does raise the question of how do you move a table thats already created (especially to another partition, where you can't just atomically rename it)

    6. Re:(not fp) by cayenne8 · · Score: 1
      " To be fair, postgres (as of 7.4, anyway) doesn't explicitly support tablespaces like that. Instead you have to look up the oid of each of your tables, then (with the database stopped!) you can move those files wherever you want to put them, and symlink them back into the appropriate database directory."

      It looks like this has been fixed, along with some other neat features in the new 8.0 release version of postgreSQL.

      I've just started playing with it...but, looks very interesting so far...

      --
      Light travels faster than sound. This is why some people appear bright until you hear them speak.........
    7. Re:(not fp) by IdleTime · · Score: 1

      Looks like features from Oracle 7.0 which was released around 1993... *yawn*

      --
      If you mod me down, I *will* introduce you to my sister!
    8. Re:(not fp) by Anonymous Coward · · Score: 1, Funny

      Hi, I'm your database. Maybe we should get to know each other before you start shoving stuff in me.

    9. Re:(not fp) by LurkerXXX · · Score: 1
      Well, unlike the database for your personal blog on navel lint, many databases are used by multiple people.

      If one person makes changes an important table, and another person tries inserting data into the table that are no longer valid because of those changes..., real databases throw up a big error saying something is seriously wrong. MySQL just sits there and pretends everything is fine. This is a "Bad Thing" (TM).

    10. Re:(not fp) by GermsFromSpace · · Score: 1

      Yeah ... my favorite is when some guy who doesn't even know what kind of table he's using is trying to use a database .. kinda makes that whole having different types of tables useless.

    11. Re:(not fp) by rodgerd · · Score: 1

      I'll be more impressed if they apologise for all the slanderous accusations they published about databases that have them, or developers who want them.

    12. Re:(not fp) by Darby · · Score: 1

      Well, does the rollback fail silently as well?
      At least it is consistent if so ;-)

    13. Re:(not fp) by the_womble · · Score: 1
      We all know Mysql is not Oracle, or even Postgres.

      It is undoubtedly a good thing that the securities trading and depositary apps that I used to work on (not as a developer btw) used Oracle rather than MySQL

      On the other hand I see no problem with my blog using MySQL.

      Maybe the right way to think of MySQL is not as something like Postgres without data integrity features, but as a something that fits in somewhere between the likes of Postgres and things like SQLite.

      The only time that I ever heard anyone suggest MySQL for a financial application it was a fairly lightweight one and and the idea was rejected pretty quickly anyway. Unfortunately I do not think anyone present even gave a thought to Postgres and its like but went with Oracle (as usual).

      I suspect MySQL does restrict the use of FOSS DBs because it has so much mind share that when people consider OSS DBs they think of MySQL and if MySQL is not suitable they pick a proprietary DB instead.

  3. Beta? by DarkHelmet · · Score: 2, Informative
    A beta of the next major version of open source database MySQL was released on Monday and includes supports for a number of features that could appeal to corporate users.

    Beta?

    http://dev.mysql.com/doc/mysql/en/news-5-0-x.html

    As you can see, MySQL 5.0.3 is still in alpha status. It hasn't reached Beta yet.

    I'm not sure where the whole "beta" thing came from. Maybe 5.0.4 will be beta, but I don't believe 5.0.3 is.

    --
    /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i
    1. Re:Beta? by JianTian13 · · Score: 5, Informative
      http://dev.mysql.com/doc/mysql/en/news-5-0-3.html

      This Beta release, as any other pre-production release, should not be...


      Uhh, just look a little deeper.
    2. Re:Beta? by Anonymous Coward · · Score: 0

      It *is* a beta release:
      http://dev.mysql.com/doc/mysql/en/news-5-0-3.html

      D.1.2. Changes in release 5.0.3 (23 Mar 2005)

      Note: This Beta release, as any other pre-production release, should not be installed
      blah blah blah

    3. Re:Beta? by Anonymous Coward · · Score: 0
      From http://dev.mysql.com/doc/mysql/en/news-5-0-3.html:
      Note: This Beta release, as any other pre-production release, [...]


      Also, the Freshmeat announcement for 5.0.3 (sent out on Monday) said:

      The changes in this release are as follows:

      This version now includes support for stored procedures, triggers,
      views, and many other features. This is the first Beta release in the
      5.0 series. All attention will now be focused on fixing bugs and
      stabilizing 5.0 for later production release.
    4. Re:Beta? by Homology · · Score: 1, Funny
      http://dev.mysql.com/doc/mysql/en/news-5-0-3.html
      This Beta release, as any other pre-production release, should not be...

      Uhh, just look a little deeper.

      Are you demanding that a Slashdotter actually reads and understand an article before he posts? That he is informed? WTF?

    5. Re:Beta? by pgsimpso · · Score: 1

      it says on the 5.0.3 change log that its beta. http://dev.mysql.com/doc/mysql/en/news-5-0-3.html

    6. Re:Beta? by DarkHelmet · · Score: 1

      How funny. Right after I post this, the page gets updated with (Beta).

      --
      /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i
  4. Replication? Clustering? by Axe · · Score: 0

    Can it do that? I would think it is more important for "enterprise" tasks.

    --
    <^>_<(ô ô)>_<^>
    1. Re:Replication? Clustering? by Anonymous Coward · · Score: 0

      That was in the 4.0 release. Master-Slave, Master-Master. Welcome to a couple years ago.

      HAND, HTH, STFU & RTFM.

    2. Re:Replication? Clustering? by fishdan · · Score: 4, Informative
      yes, all those things. Replication has been around for quite a long time -- very easy to configure too.

      http://dev.mysql.com/doc/mysql/en/replication.html

      http://dev.mysql.com/doc/mysql/en/mysql-cluster-ov erview.html

      --
      Nothing great was ever achieved without enthusiasm
    3. Re:Replication? Clustering? by Anonymous Coward · · Score: 0
    4. Re:Replication? Clustering? by flu1d · · Score: 1

      Perhaps you should find out what DB you just posted on ;)

    5. Re:Replication? Clustering? by jbellis · · Score: 4, Informative

      How useful is it to be able to scale to large numbers of servers if your database doesn't even support the features your application developers need?

      The number of companies who NEED clustering is much, much smaller than the number who need triggers, views, etc. No database professional would touch a product that doesn't support those with a ten foot pole, which is why people who actually know databases (as opposed to your average 50-pages-of-PHP newbie) have disdained MySQL for so long.

    6. Re:Replication? Clustering? by mortonda · · Score: 1

      This clustering solution seems to be "memory only", ie, you have to have a monster server farm, as all data is kept in memory. Not very usefull yet.

      If somone can better explain "in-memory storage" and prove me wrong, please do...

    7. Re:Replication? Clustering? by Anonymous Coward · · Score: 0

      yes, replication in MySQL is supported since version 3.23.15. Check this comparison to look for other open source DBs supporting Replication and Clustering. Ingress and MySQL are the only ones supporting both features.

    8. Re:Replication? Clustering? by Anonymous Coward · · Score: 0

      No, I think you are correct. Not very useful at all in most real situations.

    9. Re:Replication? Clustering? by Axe · · Score: 1

      No and No. As both are on a level of crap.

      --
      <^>_<(ô ô)>_<^>
    10. Re:Replication? Clustering? by Axe · · Score: 1
      Quote: "Fault tolerance was a big issue. We've started by load balancing anything that could easily be balanced, but balancing MySQL is harder. We're funding development efforts with the MySQL team to add database replication and rollback capabilities to MySQL (these improvements will of course be rolled into the normal MySQL release as well"

      As in, yes you can hack it up somehow, but it does not really work.

      --
      <^>_<(ô ô)>_<^>
    11. Re:Replication? Clustering? by mallumax · · Score: 1

      "No database professional would touch a product that doesn't support those with a ten foot pole"

      Thats a pretty harsh comment.I think MySQL is useful in a lot of situations.Heck it's even used by Yahoo
      Yahoo surely employs "database professionals" ?

    12. Re:Replication? Clustering? by ShieldW0lf · · Score: 3, Funny

      Thats a pretty harsh comment.I think MySQL is useful in a lot of situations. Heck it's even used by Yahoo
      Yahoo surely employs "database professionals"?


      Yeah, you got it bud. I'm an HTML programmer, and I see this all the time from elietist guys that say HTML isn't a programming language.

      Yahoo employs lots of programmers. They use HTML. So surely HTML is a programming language too! Up yours elietist guys!

      --
      -1 Uncomfortable Truth
    13. Re:Replication? Clustering? by lantenon · · Score: 2, Insightful

      It's not a programming language.

      It's a markup language.

      http://www.cs.tut.fi/~jkorpela/prog.html

    14. Re:Replication? Clustering? by Anonymous Coward · · Score: 0

      He was going for 'funny'. I hope.

    15. Re:Replication? Clustering? by Anonymous Coward · · Score: 0

      That's why I save all my pages with a .htpl extension. Nobody's telling me that HyperText Programming Language isn't a programming language.

    16. Re:Replication? Clustering? by Anonymous Coward · · Score: 0

      Actually, I am. So?

    17. Re:Replication? Clustering? by fupeg · · Score: 0, Flamebait

      Yeah "database professionals" hate MySQL, but that's mostly because it's designed to eliminate the need for said "professionals."

    18. Re:Replication? Clustering? by BestNicksRTaken · · Score: 1

      You're not a programmer at all. You're a designer.

      HTML is a markup language, not a programming language.

      IT HAS NO LOGIC, it can't be used to make applications, for that you need to add Javascript/Java applets/Flash/CGI....

      --
      #include <sig.h>
    19. Re:Replication? Clustering? by Anonymous Coward · · Score: 0

      This clustering is for HA solutions, it will remove any single point of failure, if you can set up a datacenter with everything needed, buying memory for your machines will be a drop in the ocean in this case.

    20. Re:Replication? Clustering? by Axe · · Score: 1
      IT HAS NO LOGIC, it can't be used to make applications, Sure it does, and sure it can. Not beeing Turing complete does not make it useless. Machine that always complete are quite useful for many applications when you need to guarantee computability. Like the fact that an HTML page will load and render.

      You can create plenty of useful application using only HTML. For example an online book. Just as good an app as something with fancy flash and script doodads.

      --
      <^>_<(ô ô)>_<^>
    21. Re:Replication? Clustering? by Ollierose · · Score: 1

      For me, it fails the "Is a programming language" test on two levels - you can't loop, and you can't branch. Without those two features (and their brother, sequence) you cannot do anything which complete programming languages can do.

      HTML is a poor mans layout language, while the combination of HTML/Javascript is an application platform. The fact that a HTML page will always load and render has nothing to do with the language, but the part where the HTML page adheres to a standard (whether it be MSHTML or W3C) which the parser also understands.

    22. Re:Replication? Clustering? by Axe · · Score: 1

      For me, it fails the "Is a programming language" test on two levels - you can't loop, and you can't branch. If this is your cretiria of a "computer language", then your understanding of "languages" is not far off from "HTML programmer", me think. Nothing wrong with beeing non-Turing.

      --
      <^>_<(ô ô)>_<^>
    23. Re:Replication? Clustering? by Axe · · Score: 1

      will always load and render has nothing to do with the language, but the part where the HTML page adheres to a standard That is also incorrect. Guaranteed computability is a feature unrelated to standard adherence.

      --
      <^>_<(ô ô)>_<^>
  5. Information? by Anonymous Coward · · Score: 4, Insightful

    How about linking to an article or page that actually has some useful informtion about what is going to be in the release that makes it "the most important ever"?

    1. Re:Information? by Anonymous Coward · · Score: 2, Informative

      How about linking to an article or page that actually has some useful informtion about what is going to be in the release that makes it "the most important ever"?

      Here you go.

    2. Re:Information? by Tuffsnake · · Score: 0
    3. Re:Information? by Anonymous Coward · · Score: 0

      Damned if you dupe, and damned if you don't. :)

    4. Re:Information? by Anonymous Coward · · Score: 0
    5. Re:Information? by Muttonhead · · Score: 1

      Yeah. That was a fucking idiotic ad-laden bunch of nada.

    6. Re:Information? by Abattoir · · Score: 1

      It's already in the article:

      "People have been criticising MySQL since we started [in 1995] for not having stored procedures, triggers and views," said Axmark. "We're fixing 10 years of criticism in one release."

  6. being a paying customer... by fishdan · · Score: 4, Informative
    I just finished the Using and Managing mysql course in Boston. VERY much worth it btw if you're like me -- A developer and not a true DBA who supports the Database because there's noone else.

    It's astonishing how far mysql has come. I'd been using 3.23 since before the dawn of time. Like most users of my ilk, I'd hacked alot of "databasish" functions together at the application level. My dilemma now is throwing away all that work to migrate to something I know is better. But there's no doubt that replication, triggers etc are all worth it.

    The *best* thing that I got out of the class though, was to talk freely with the MySQL guys about their reality of trying to make a living with a "mostly" free product. They convinced me to buy a membership in MySQL Network which is essentially support that I probably won't use. This upgrade they are turning out though is good enough to make me WANT to pay (once).

    --
    Nothing great was ever achieved without enthusiasm
    1. Re:being a paying customer... by ShieldW0lf · · Score: 2, Funny

      Am I the only one sharing a chuckle at the thought of a bunch of typically skilled MySQL users with triggers at their disposal?

      I can hear the hard drives grinding now

      --
      -1 Uncomfortable Truth
    2. Re:being a paying customer... by Daniel+Dvorkin · · Score: 2, Interesting

      As someone who has been developing enterprise apps with MySQL for a while now, I'll answer this, even though I'm 99.44% sure you're trolling: what we've always done, so far, is put all the triggers in the application layer. Now we can make "real" triggers in the DB layer, but guess what? The logic is exactly the same.

      Given the widespread use of MySQL to run some very complex systems, I rather suspect that you, like most anti-MySQL trolls, have no idea of what the "typically skilled MySQL user" actually does. Yes, there are lots of people who pick it up because it's free, easy to use, and widely known who have no business doing any kind of DB work. There are also those of us -- a lot more than you think -- who make our living at it and know exactly what we're doing.

      --
      The correlation between ignorance of statistics and using "correlation is not causation" as an argument is close to 1.
    3. Re:being a paying customer... by Anonymous Coward · · Score: 0

      You're probably not the only one, since you're SHARING a chuckle. :+P

    4. Re:being a paying customer... by destiney · · Score: 1


      there's no doubt that replication, triggers etc are all worth it

      MySQL has had replication for a long time already.

    5. Re:being a paying customer... by Anonymous Coward · · Score: 0
      And so of course you have to write lots of code in your application layer to check for all constraints, because if you input out-of-bounds data into a MySQL field with constraints, MySQL will just silently change the data to something it likes. Silently corrupting your data.

      That and the many many other 'gotcha' error checks you constantly have to watch for in MySQL, the other standard database features missing in MySQL that you have to implement in your own code, means you have a TON of extra coding to do in the application layer to do things right. Stuff you might make some mistake in coding, or forget to add in. Stuff that belongs in the DBMS itself, so it only has to be implemented once for all uses. That's why people who know what they are doing with databases, generally don't use MySQL.

    6. Re:being a paying customer... by golgotha007 · · Score: 3, Insightful

      I have done enterprise apps and 2 major websites using MySQL.

      The one thing that MySQL excels in is raw speed. It's faster than everything else because it doesn't have all the data integrity features that a RDBMS does.

      However, I stick everything into the application layer, so MySQL lacking these features doesn't bother me a bit.

      As for data integrity; I haven't done a banking application yet, so I'm unconcerned.
      Scheduled DB backups and logging in the application layer keeps me from needing any transaction or rollback features.

      Basically, I'm hoping that the new MySQL won't sacrifice speed for all these features.

    7. Re:being a paying customer... by tim256 · · Score: 1

      I agree. I'm an application developer (not using MySQL), and I almost never use triggers on the DB side. Although, foreign keys and stored procedures are nice to have.

    8. Re:being a paying customer... by jbellis · · Score: 2, Insightful

      I hope to heaven I never have to maintain anything you write.

      Ever heard of the "Don't repeat yourself" principle? Putting logic in the application that belongs in the database means that if just one place that touches the data forgets to do what your trigger should have done, you're screwed.

      Maybe your applications are small enough that this is an acceptable risk for you. The ones I have worked on haven't been.

    9. Re:being a paying customer... by Donny+Smith · · Score: 3, Insightful

      >MySQL has had replication for a long time already.

      Yeah, but how reliable (read: it sucks) is it?

      From TFA:
      "I believe it will change how MySQL is perceived in the market," said Axmark, who then added that he thought this release would make MySQL an option for at least ten times as many users as before."

      It says in the article that mySQL has a 40% share in the open source DB market. If they're gonna get 10x as many users, that'd be 400%, so I guess they plan to make further gains in the commercial market.
      If open source DBs have a 10% share (means shit, anyway), then mySQL plans to shoot from a 4% to a 40% market share. I just don't see that happening.

      About the market share: what does that mean - 40%? Of what? By number of copies in use, by data, by number of paying customers...?

    10. Re:being a paying customer... by fitten · · Score: 3, Insightful

      Yeah... a lot of folks use screwdrivers as chisels, wrenches as hammers, knives as screwdrivers, and pliars for wrenches, too. It doesn't make a screwdriver a chisel, a wrench a hammer, a knife a screwdriver, or pliars a wrench.

    11. Re:being a paying customer... by cjsnell · · Score: 1

      The *best* thing that I got out of the class though, was to talk freely with the MySQL guys about their reality of trying to make a living with a "mostly" free product. They convinced me to buy a membership in MySQL Network which is essentially support that I probably won't use. This upgrade they are turning out though is good enough to make me WANT to pay (once).

      The best thing you got out of the class was to be talked into something that you won't need by your classmates?

    12. Re:being a paying customer... by fitten · · Score: 1

      Yeah, I've seen logs used as hammers, screwdrivers used as chisels, and knifes used as screwdrivers before, too.

      I've also seen the religious (not just diety religion) bang square pegs into round holes.

      I've also seen those who proclaim loudly that they know "exactly what they are doing" actually be the furthest from reality.

    13. Re:being a paying customer... by fitten · · Score: 1

      The one thing that MySQL excels in is raw speed. It's faster than everything else because it doesn't have all the data integrity features that a RDBMS does.

      However, I stick everything into the application layer, so MySQL lacking these features doesn't bother me a bit.


      So... do you add in all the code overhead that you have to write into your application into your MySQL performance numbers? This includes time-to-deployment, development costs, and the like as well as how many queries per second your app can perform?

    14. Re:being a paying customer... by ShieldW0lf · · Score: 3, Informative
      Of course we're trolls. We don't have any points over here in our camp, just a bunch of hooting and hollaring.

      Some of us actually hold the database they use to higher standards, and aren't interested in using middleware hacks to do things that should be the domain of the database engine. If you want to call that a troll, go ahead. There are probably some very complex systems out there using XML files as their data source. But that doesn't mean XML is a good database either.

      A good database should refuse to let you fill it with junk. Full stop. It should hold it's data integrity and force the application to break before allowing it to be corrupted. MySQL doesn't do this.

      Some examples?

      NOT NULL perhaps:
      CREATE TABLE null_1 (
      id INT NOT NULL,
      text1 VARCHAR(32) NOT NULL,
      text2 VARCHAR(32) NOT NULL DEFAULT 'foo'
      );

      INSERT INTO null_1 (id) VALUES(1);
      INSERT INTO null_1 (text1) VALUES('test');

      mysql> SELECT * FROM null_1;
      | id | text1 | text2 |
      | 1 | | foo |
      | 0 | test | foo |

      2 rows in set (0.00 sec)
      If a column has been flagged not null, that generally means you shouldn't allow an insertion without a value for that column unless a default value has been expressly declared for the column. Of course, MySQL just sticks in some junk and keeps right on trucking.

      Or maybe some data truncation... try this guy:
      mysql> CREATE TABLE bounds_test (
      id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
      price NUMERIC(4,2),
      code VARCHAR(8),
      numbers_only INT
      );
      Query OK, 0 rows affected (0.06 sec)

      mysql> INSERT INTO bounds_test VALUES (
      99999999999999,
      21474.83,
      'ABCDEFGHIJK',
      'A quick brown dolphin...'
      );
      Query OK, 1 row affected (0.03 sec)

      mysql> SELECT * FROM bounds_test;
      | id | price | code | numbers_only |
      | 2147483647 | 999.99 | ABCDEFGH | 0 |

      1 row in set (0.01 sec)
      Wow, MySQL must be psychic... that was exactly what I wanted inserted in that table!

      Yeah, I'm really going to trust something more sophisticated than a forum to this database...
      --
      -1 Uncomfortable Truth
    15. Re:being a paying customer... by MindStalker · · Score: 2, Insightful

      Umm ok lets say there are 1 million database "shares" whatever that means.
      100,000 or those are open source.
      40,000 are MYSQL.
      so they are shooting for 10X meaning 400,000, this is obviously impossible for them to obtain that many users. But do note he said it makes MYSQL an "option". This means that 40% of database users require the features that MYSQL now has and nothing more. I can believe that.

    16. Re:being a paying customer... by Anonymous Coward · · Score: 1, Interesting

      So I guess you've never heard of a wrapper. When a call is missing something that you need, you put a wrapper around it and do all calls through the wrapper. Guess what, no repeated code.

    17. Re:being a paying customer... by Anthony+Boyd · · Score: 5, Insightful
      I'm hoping that the new MySQL won't sacrifice speed for all these features.

      Agreed. I don't think other database vendors understand the importance of speed to a Web Developer. We have to go over a network layer, with the requisite delays factored in. We use a client-server model, and cannot rely on the client CPU, like a traditional software product. And even a crappy Web site can find itself loaded down with a large audience. So we have to squeeze out milliseconds anywhere we can get them. A fast database and optimized code, that's pretty much what we can control.

      I mentioned this story once before on Slashdot, but it's relevant, so here it is. Borland had a product called Intrabuilder. It had a poor-man's version of Live Script on the backend, with a built-in database -- so back in 1997 you could do some very PHP-like stuff with the system. It was promising. But as a Web guy there, I was tasked with using it on the borland.com site. And it was giving me huge lag -- 1 or 2 seconds per simultaneous user. So with 5 people testing my app, each page took 10 seconds to display. I told this to the Intrabuilder team. Response? "That is an acceptable delay. It's how databases work." For all I knew, they were right. Maybe databases did work slowly like that back then. I was young & new to that stuff. But I knew that I didn't work that way and I didn't want my site to work that way either. Borland eventually abandoned the product, because the developers didn't see the shift in the market: Web Developers need speed. It's not like an ATM transaction, where I'll wait 15 seconds to get my money. MySQL needs to keep its speed, especially under load. And other database teams would be wise to take note.

    18. Re:being a paying customer... by trulymadlydeeply · · Score: 4, Insightful

      You're either a fool or a troll. I've develop for Oracle and MySQL. MySQL is faster by magnitudes. Even something like say, logging in, takes much longer on Oracle than in MySQL. In MySQL you feel like you're interacting with something at about the speed of the unix shell. In Oracle you feel like you are sending telegraphs off to a server that cranks away and responds to you after a while. Data integrity is not the only Oracle slowdown. Things like character set conversion make everything bog down. As far as "code overhead", modern development doesn't use much in the way of database constraints. They're nice from an ideal-world point of view, but it's awkard to try to insert a row and catch a constraint violation coming from way down deep in your database access code and few people do it. A little experiment: Try building a table in Oracle with the absolute loosest of constraints. All columns can be varchar2(100) with no primary or foreign keys and no check constraints. To be fair, I wouldn't use any exotic options like PARALLEL or NOLOGGING, but do whatever you will. Load it up with 10M rows and check your watch..... Do the same in MySQL and check your watch.... On second thought, you probably don't have access to either of these pieces of software.

    19. Re:being a paying customer... by Tassach · · Score: 5, Insightful
      It's faster than everything else because it doesn't have all the data integrity features that a RDBMS does
      Because after all, who really cares about data integrity?

      So what if the accounting system is off by $12,000,000? It's fast.

      Who cares if the customers actually get the products they ordered? It's fast.

      Who cares if we bill our customers for the right amount? It's fast.

      However, I stick everything into the application layer, so MySQL lacking these features doesn't bother me a bit.
      Yes, because it's so much more professional and a more efficient use of your time and employer's money to hack together a half-assed system rather than learning how to use a tested and proven one that someone else wrote.
      Scheduled DB backups and logging in the application layer keeps me from needing any transaction or rollback features.
      This statement just demonstrates the fact that you have no clue what transactions are for, or how and when to use them.
      --
      Why is it that the proponents of "one nation under God" are so eager to get rid of "liberty and justice for all"?
    20. Re:being a paying customer... by Serapth · · Score: 0

      No offence meant, but frankly, your argument makes no sense whatsoever.

      If there is an area where slow data performance is acceptible, its web development, for exactly the reasons you gave. The bottleneck is often the wire... not the database, not the browser or CPU behind the browser. Having a faster database, just means that your users get to wait faster!

    21. Re:being a paying customer... by iCEBaLM · · Score: 1

      I just finished the Using and Managing mysql course in Boston. VERY much worth it btw if you're like me -- A developer and not a true DBA who supports the Database because there's noone else.

      Right, why not try PostgreSQL which has had these features forever and is also Free software.

    22. Re:being a paying customer... by Anonymous Coward · · Score: 5, Interesting

      *shakes head*

      Putting data logic in the application is a problem that was (supposedly) solved in the 60s. Apparently some folks didn't get the memo..

      You wanna know what the problem with putting logic in the application is? Yup, you (hopefully) guessed it: there are very few systems where only ONE application is guaranteed to modify the data.

      Maybe your client goes in with a DB tool to quickly change a value. Maybe the summer hire writes a quick Ruby script to adjust some values. Maybe your client just wants a Java frontend to go with your web app.

      Are your constraints well-documented? Are you sure you got them right when you translated from Ruby to Java? Personally, I don't want to even *try*.

      I have plenty of "war stories" about this. I'm surprised you haven't run into problems. My first big programming project was an ecommerce database without referential integrity constraints. Sure enough, there was bad data in the DB.. order line-items without corresponding orders. The client had just gone in and deleted them by hand, and had been doing this for 5 YEARS. The problem? Author royalties were paid based on order line-items. So they had been overpaying their supplies, basically, for years.

      A bug in your code is easy to fix. A bug in your data means you've got a dependency graph starting from the moment the data entered the database, extending into the future. Who knows what other bad data was produced based on that one piece of bad data? How do you fix it? How do you rollback/replay ALL your data changes??

      You MySQL lovers can crow all you want. Frankly I don't know why you would pick a DB with less features when others are freely available with the same cost, but whatever. Until it's possible to build a system in MySQL that doesn't allow bad data, those of us who *really* know what we're doing won't touch it, even for throwaway projects (I've got plenty of war stories about prototypes that are still in production use too).

      On second though, considering how many consulting dollars I've made fixing broken crap, go right ahead... ;-)

    23. Re:being a paying customer... by DogDude · · Score: 1

      As someone who has been developing enterprise apps with MySQL for a while now, I'll answer this, even though I'm 99.44% sure you're trolling: what we've always done, so far, is put all the triggers in the application layer

      You should be fired. Putting that kind of logic in the application layer is (or should be) addressed in Comp Sci 101. Take a basic database class, learn from someone who has been around for at least 20 years, or get a new job. Sure, you CAN do it. There are lots of things you CAN do. You CAN write a website with all Active X controls. You CAN store all of your data in XML. You CAN put triggers in the application layer. You CAN run a web server on Windows 95. That doesn't mean it's a good idea.

      --
      I don't respond to AC's.
    24. Re:being a paying customer... by paRcat · · Score: 0

      um... I must be missing something. Shouldn't a developer be smart enough to CHECK THE DATABASE STRUCTURE before writing data into it?

      I mean, I understand your argument, but I've never been affected by it, as I always know what I'm writing to. And while the things you mention *should* return errors, it's not like they're show stoppers. To be honest, if this thing came back to bite me, I'd be knocking myself for not planning for it in the first place.

    25. Re:being a paying customer... by nakaduct · · Score: 1

      You are confusing "option" and "selection".

    26. Re:being a paying customer... by Anonymous Coward · · Score: 0

      You should not push crap into your database! And why the hell would you not set a default value!? So any DB that allows you to act out without skill is bad?

      How about your company fire your MCSE ass and hire a real nurd, then they could use a faster more cost effective DB and not pay for one that has to perform babysitting duty.

    27. Re:being a paying customer... by larien · · Score: 2, Insightful
      Yes, the logic may be the same, but part of the reason to use a database is to remove the whole clunky data integrity issues from your application. People make bugs in code; fact of life. However, after sufficient testing, the bugs will be removed.

      I'd rather rely on the database to ensure my data integrity as I can be reasonably confident it's been tested a lot more than my code. I can say "make that column unique in that table" and be 99.99% sure it will always be unique (let's leave the .01% chance of data corruption or some wacky bug). If I rely on the app to do the same, I have to introduce locking protocols to ensure the uniqueness of that column so I don't get a race condition. Back to my original point: I have a reasonable chance of leaving a bug in my code.

      Now, MySQL has had the UNIQUE constraint for some time, but the same logic above can be applied to all the other features such as foreign keys & triggers; use the code in the DB to do your work and leave your app code to be simple and, hopefully, less bug-prone.

    28. Re:being a paying customer... by Dysan2k · · Score: 1

      Well, can't say much for the 2nd test, but the 1st rather surprised me. I know at one point the NOT NULL flag actually caused errors on insert/update statements within MySQL. Kinda wonder when that was broken and never fixed properly.

      Least it's some points to show to the dev team, if you haven't already.

      --
      -What have you contributed lately?
    29. Re:being a paying customer... by Anonymous Coward · · Score: 0

      Wow, MySQL must be psychic... that was exactly what I wanted inserted in that table!

      well, it must be if you designed your table that way.

      it's the programmer's responsibility to take care of those things.

    30. Re:being a paying customer... by DogDude · · Score: 1

      If you can guarantee that you will be the only person who ever access this database in any way and you will always do this, then you're right. But that's unrealistic. That's like building an app that crashes if you click this particular button, but YOU know not to click that button, so it's fine. What you're talking about is, unfortunately, a very common amateur mistake.

      --
      I don't respond to AC's.
    31. Re:being a paying customer... by dago · · Score: 4, Informative

      Hint for moderators : the parent is karma whoring by pasting content of the MySQL gotchas page.

      Or trolling ? Or both ?

      Anyway, if somebody is using mysql in any kind of environment, he surely has already heard of this by now unless he's living in a Cave, thanks to all the postgresql zealots.

      --
      #include "coucou.h"
    32. Re:being a paying customer... by ShieldW0lf · · Score: 1

      The best thing you got out of the class was to be talked into something that you won't need by your classmates?

      See, they have this thing... it's called sarcasm...

      --
      -1 Uncomfortable Truth
    33. Re:being a paying customer... by kpharmer · · Score: 5, Informative

      > It's faster than everything else because it doesn't have all the data integrity features that a RDBMS does.

      Hmmm, really? Lets see...

      if you're using myisam (the fast io layer), then all locking is done at the table level. Which means that if you get multiple connections attempting to write to the same resource they'll all have to wait while their operations run in series. Fast? Nope, hard to imagine a slower scenario than that.

      again, if you're using myisam (again the fast solution), and need to select 10% of the rows of a table with 10 million rows, what will it do? It'll do a scan of all 10 million rows. What would oracle, db2, or informix do? Rely on partitioning to just scan those 1 million rows. Of course, these commercial databases will also break the query up into pieces and run them all in parallel across multiple cpus on your server. You could easily find mysql taking 40x as long to respond to this query as one of the others.

      How about if you've got a complex query? Well, mysql admits that their optimizer is very primitive, and will take a while to fine-tune. Great, so now you just write a few different versions of your query until you get the speed you want, probably depending on 'gaming' the optimizer. Then when you upgrade the software next year you'll find that your gaming is killing performance. Time to rewrite the query. No big deal, we all went through this (about twenty years ago, and glad to have it behind us).

      ok, how about using their non-isam option. Ok, now we've got the kind of data integrity we've taken for granted since about 1981. But, reads are very slow, often 1/10th the speed of myisam.

      On the Innodb site they brag about getting 800 inserts / second. I think the most recent db2 benchmark on a 4-way intel box hit almost 3,000 transactions per second. Note: Not just simple inserts & updates, it was a tpc benchmark. And that's on a low-end box. At the high-end db2 is running 80,000 of these transactions per second.

      Fastest? please, only in read-only transactions running on tiny hardware...

    34. Re:being a paying customer... by Anthony+Boyd · · Score: 4, Informative
      If there is an area where slow data performance is acceptible, its web development, for exactly the reasons you gave. The bottleneck is often the wire... not the database, not the browser or CPU behind the browser. Having a faster database, just means that your users get to wait faster!

      No. These delays are not parallel, they are serial. In other words, the delays are cumulative, building on top of one another and extending the delays further. If the network, CPU, database, and code each add 500ms lag, that's a 2 second wait for the Web page. By getting the code to a point where it executes in only 100ms, and by switching to a database that can return the query in 100ms, the end-user now waits only 1.2 seconds for the Web page. You may think that the difference between 1 and 2 seconds is insignificant, but that would be the kind of thinking that got Intrabuilder into trouble. I recently had outshine.com move to a new server, and instantly saw visitors to the site decline sharply. Why? Well, the new server was doing DNS lookups on each request, and it wasn't caching the results for more than a second! So nearly every request had a 3 second delay in response. That alone killed off about 25% of my traffic. In an e-commerce site, such a loss would be a disaster.

    35. Re:being a paying customer... by mgkimsal2 · · Score: 1, Insightful

      Wrong.

      What the parent poster was saying was that he wants everything under his control to be as fast as possible. You can control your database speed (don't use one with 1-2 second delays per connection), app code (optimize, cache, etc), and even your outgoing bandwidth (big data center, etc). You can't control the end user's speed, but you also can't control however many end users there are.

      If 'web development' was an area where slow data performance was acceptable, Amazon, Yahoo, and others wouldn't need to bother with indexes, DB upgrades, or other attempts to make their data performance faster. Because, after all, it's just 'web development', right?

    36. Re:being a paying customer... by Anonymous Coward · · Score: 5, Informative

      Why don't you give 5.0 a try? You'll find things have changed a bit. You can startup the server in TRADITIONAL, STRICT_ALL_TABLES, and ANSI modes and get the behavior you want:

      mysql> CREATE TABLE null_1 ( id INT NOT NULL, text1 VARCHAR(32) NOT NULL, text2 VARCHAR(32) NOT NULL DEFAULT 'foo' );
      Query OK, 0 rows affected (0.00 sec)

      mysql> INSERT INTO null_1 (id) VALUES(1);
      ERROR 1364 (HY000): Field 'text1' doesn't have a default value

      mysql> INSERT INTO null_1 (text1) VALUES('test');
      ERROR 1364 (HY000): Field 'id' doesn't have a default value

      mysql> CREATE TABLE bounds_test ( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, price NUMERIC(4,2), code VARCHAR(8), numbers_only INT );
      Query OK, 0 rows affected (0.00 sec)

      mysql> INSERT INTO bounds_test VALUES ( 99999999999999, 21474.83, 'ABCDEFGHIJK', 'A quick brown dolphin...' );
      ERROR 1264 (22003): Out of range value adjusted for column 'id' at row 1
    37. Re:being a paying customer... by cosinezero · · Score: 1

      "However, I stick everything into the application layer " -->lol! Why use the word 'layer' then? I love you PHP/MySQL "professional" developer types. No wonder your queries are so fast... but your application 'layer' is far slower than it needs to be. You're opening more connections to the DB per transaction, and doing work on the webserver that the database "layer" is much more efficient at dealing with. Your individual single query may be fast, but I guarantee you my tiered application over SQLServer is much, much more scalable and much much faster under load.

    38. Re:being a paying customer... by SparafucileMan · · Score: 0, Troll
      Until it's possible to build a system in MySQL that doesn't allow bad data, those of us who *really* know what we're doing won't touch it, even for throwaway projects (I've got plenty of war stories about prototypes that are still in production use too).

      yes, well, those of us who *really* know what we're doing are the ones writing the applications (in LISP, undoubtedly), and we consider your DBA job as a commodity-level position that would be nonexistent without our applications there to ensure the dumb-ass user can even get to your inherently worthless data. and we write libraries to ensure "referential integrity". you can write your logic in the application and fuck it up, you can write your logic in the DB and fuck it up, and yes, you can butter your bread on either side and still fuck it up. do any of these pointless debates really matter? no. computing is increasing exponentially. there are no godamn golden bullets! what works is what works...

      thats why jobs are going to india. it's a godamn commodity cause no matter what you're going to hire a billion programmers anyway just to the maintain the application and to tell the users what the application is even doing and to clean up the data after some dumb-ass user entered in the wrong data, referential integrity or not, and to get the charts lined up properly for management and to....

    39. Re:being a paying customer... by paRcat · · Score: 1

      funny you should mention that... I have quite a few programs I've written solely for myself where I haven't had time to fix the bugs, and I don't really need to. I figure everyone has those.

      But as far as others interacting with the database, you're correct. My thing is, I insist on developers under me using the same programming practices. I train them not to write anything without knowing what they are writing to. So maybe it's just my circumstances, but we've never had data corruption among 5 developers in about 4 years of using MySQL.

      Again, I'm not saying the issues of the grandparent shouldn't raise errors, I'm just explaining why it shouldn't necessarily affect a developer negatively.

    40. Re:being a paying customer... by Anonymous Coward · · Score: 0

      Or maybe some data truncation...Wow, MySQL must be psychic... that was exactly what I wanted inserted in that table!

      If the data type/format being stored into the database is different than the structure of the database was designed for, then the controller/logic of your application should be catching this, not the database. The database is a means of storing/retrieving information about your model. If you are inserting 99999999 into NUMERIC(4,2), then your application has already failed. It's called object oriented programming. Maybe you should check it out sometime.

    41. Re:being a paying customer... by TheRealMindChild · · Score: 1, Interesting

      Apples to rocks my friend.

      Oracle is slower then hooking up a Tab delimted file as a linked table through an access database. Oracle has never been speedy. Its been about being able to handle the load of millions of transactions a second.

      --

      "When life gives you lemons, don't make lemonade. Make life take the lemons back!" -- Cave Johnson
    42. Re:being a paying customer... by As+Seen+On+TV · · Score: 1

      To put it bluntly, no.

      Think of the database software as a librarian. The data itself is books on shelves, and the database is the librarian. The purpose of the librarian is twofold: to help you access the data, but also to mediate your access to the data. The librarian is there so that when you ask to see the library's copy of To Kill a Mockingbird it appears, but the librarian is also there to prevent you from tearing out all the book's pages and replacing them with porn.

      A database that doesn't prevent the insertion of erroneous data is basically nothing more than a flat file with an API.

    43. Re:being a paying customer... by Anonymous Coward · · Score: 0

      want examples???

      MSSQL 200 on a 8 processor machine with 6 gig ram and a RAID10 array of 12 disks. More horsepower than it could ever need.

      a 2 trillion record database that is smallish in only the 28 gigabyte range takes LONGER to process a stacked select (select * from table1,table2 where id.table1 = tapeid.table2;) no it's not correct sql but you get my drift...

      takes MUCH longer than a MySQL database running the SAME dataset on a lowly dual processor machine with 1/2 the ram and only raid 5.

      That example was enough to convince our CTO to decline microsoft's offer for a "upgrade path" for our SQL servers.

      yes we haveall the code to our apps, so it's not an issue rewriting the queries.

    44. Re:being a paying customer... by As+Seen+On+TV · · Score: 1

      I don't know whether you thought it was just understood, or what, but there's something very important missing from your comment.

      It's not his job to report bugs to the developers. It's the job of the developers, through testing, to find bugs. In these two cases, it seems likely to me --just guessing here -- that the developers know about these flaws, but they've defined them as acceptable. The argument isn't over functionality; it's over parameters.

    45. Re:being a paying customer... by cosinezero · · Score: 2, Insightful

      If you really believe coding triggers in the application "layer" (Should be in the data access layer if you were coding real enterprise apps) is the same logic, you really should have your head examined.

      Consider your BEST CASE scenario:

      Client (webserver) opens connection to database.
      Client inserts into tA
      Client receives identity response
      Client inserts related into tB
      Client closes connection

      Now consider my best case:

      Client opens connection to database.
      Client inserts into tA
      client closes connection.

      A -drastically- smaller amount of network communication, and milliseconds faster because less discussion is going on between the client and server.

      Don't even get me started on transactions, either.

    46. Re:being a paying customer... by Anonymous Coward · · Score: 0

      the same thing happens with MSSQL...

      what is your point?

    47. Re:being a paying customer... by As+Seen+On+TV · · Score: 2, Insightful

      Wow. It's been a long time since I read anything so completely wrong.

      A database is not (to borrow my own phrase) just a flat file with an API. It's supposed to enforce a data model. In a perfect world, every piece of integrity and sanity checking would happen inside the database, with none inside the application layer. A database application that includes logic that looks like "if input is X then reject" is not a good database application.

    48. Re:being a paying customer... by Deusy · · Score: 1

      I think the point others are making is that they are aware of the shortcomings of MySQL and take them along with the benefits. If you're developing production applications with MySQL you should be aware of and experienced with the gotchas - not just of MySQL, but all the tools you are using - that might trip up an inexperienced developer.

      If you write an application that falls foul of the various issues you just raised and any others that you are aware of, then it's not really the integrity of the database software that you should be questioning.

      --

      Free Gamer - Free games list and commentary

    49. Re:being a paying customer... by NurseMaximum · · Score: 1

      The correct handling of NOT NULL is fixed (or at least fixable) in 5.0.3

      Just start mysql with : mysqld --sql-mode="STRICT_ALL_TABLES" and it will error if you try to skip a NOT NULL column on insertion.

      More here
      --
      Who meta-moderates the meta-moderators?
    50. Re:being a paying customer... by cosinezero · · Score: 1

      Some CTO you got there, only checking selects. Companies that do -business- actually -insert- orders.

    51. Re:being a paying customer... by ShieldW0lf · · Score: 1

      Well, I usually build the database and do the complicated code for my clients and have their staff do the simple bitch work of the app so they can be familiar with it. And the thing will be maintained and altered in the stupid trivial ways that businesses like to play with things by network admins and human resource managers between times they get someone like me to look at it because thats business.

      So generally I pull my head out of my ass, recognize these characteristics in my clients and design my work accordingly, and establish things so that dummys can't easily wreck it with the access that they're given. Postgres, Oracle, SQL Server, all of these give you the control you need to do that. MySQL does not.

      If I built my applications in the environments I work in using MySQL, they would wreck their data all the time, be really pissed off, and never hire me again, either because they're smart enough to know better or because they aren't and they went out of business.

      And if you're looking for high performance in your own controlled environment, forget MySQL. There are much better tools available

      --
      -1 Uncomfortable Truth
    52. Re:being a paying customer... by pthisis · · Score: 1

      Agreed. I don't think other database vendors understand the importance of speed to a Web Developer.

      I don't think some web developers understand the importance of other databases to speed.

      I've used both in the past, and will probably continue to do so. But mysql is NOT always faster than postgres. It is sometimes much faster, but it is sometimes much slower. It all depends on your usage patterns.

      --
      rage, rage against the dying of the light
    53. Re:being a paying customer... by Serapth · · Score: 1, Interesting

      I agree to some degree with what you are saying, *but*, I hold true to my origonal argument. To the typical end user, all the optimisations you make on the back end will be pretty much un-noticed. Unless you are returning obscenely large or complex data sets, the time spent on the database is overwhelmingly trivial compared to the latency from the network.

      I agree with you, the process is a serial one, but when optimizing anything, you spend the time where you get the biggest bang for your buck. Right now, the first big bottleneck is going to be the wire. You can control this to some degree buy buying a really big pipe, but thats it. You have no control over if your viewer is on a t3 or a 14.4 modem. The next big gain would probrably come from some form of caching system, or accelerator. After that, your biggest performance gain would probrably come from cleaning up the code size of whats being returned to the client( which sadly, most people still dont seem to do :( ). Lastly, you probrably get the next biggest bang optimizing your server side code to work quicker. Then, the databases performance comes into question

      The type of queries being done on most websites, just arent that intensive. Normally its straight out lookups, maybe a few cross table joins, etc. Very little analysis type operations happen in most sites, although granted, I imagine there are exceptions. We are talking minimal fractions of a second here.

      I guess my argument is, with all the other problems/bottlenecks, etc in the loop... the database backend is really quite far down the list. Im not saying there is no advantage to optimizing the database... im just saying its minimal compared to everything else. Granted, this argument applies to *most* sites. There are exceptions again... the googles and amazons of the world. Even then, its not so much the performance cost of the queries that comes into question, is purely site traffic volumes. With that massive amount of traffic, you need a highly scalable system at every level. But, most sites, arent google!

      As an asside, I have a similar background to you. In the mid 90's I worked for a company that made a product called Tango, which was a Cold Fusion-esque, web application server. It was slow... for the most part, the databases of the day... well... they were slow... Everything was basically just slow. Yet, in the end, where did we get our biggest bang to the buck for optimization? By minimizing the size of the HTML and images returned. By a huge margin. All the optimization in the world on the back and, and frankly, the end users still most likely wouldnt have noticed because... well, they still spent just as long waiting for the crap to download in the first place. This isnt in regards to small sites either... im talking fairly major Canadian online banks (mBanx) and such.

    54. Re:being a paying customer... by Lefty+McGrep · · Score: 1

      A database is a container. The interface to the database and the average user of the database controls how and when data is queried or inserted. I personally don't want to write my code around the database idiosyncrasies. I want the database to do MY bidding. There is no way for a user to circumvent my code and exploit MySQL's limitations.

    55. Re:being a paying customer... by golgotha007 · · Score: 0, Troll

      First off, you seem angry about something. Did you spend a lot of money on a DB cert, only to be angered that others are getting the same job done with OSS and good programming techniques?

      I already mentioned my apps don't focused on accounting.

      I was under the impression that transactions enable you to lump together a series of queries into one transaction, so if something fails, none of the queries/inserts execute. If I'm wrong, then I stand corrected.

      Lastly, I have experience with high traffic websites as well as small business apps. I am not new to application design and certainly don't just 'hack' something together. Just because I don't use commerical products doesn't mean I can't design and implement professional solutions.

      I understand the importance of data integrity but also keep in mind that in the 8 years that my career has focused on this business, I never once had a query or insert fail. Never once did I have data corruption. Of course I've encountered bugs in the applcation layer that caused bad db inserts; but nothing was unfixable.

      You can try to sell me tornado insurance all day long, but that doesn't mean I'm required to purchase it.

    56. Re:being a paying customer... by LurkerXXX · · Score: 4, Interesting
      You've never had data corruption THAT YOU KNOW OF. The problem with it is that MySQL rarely throws an error, so the bad data going in goes in silently.

      This isn't data corruption that throws up a big flag, 'your database file is corrupted and you can no longer access it', it's sometime subtle anomylies in the data. Some of which can be very very bad if you are relying on the data to be good (such as dealing with money, or used in calcuations that you rely on, etc).

      I've often had MySQL folks told me they have never had data corruption. Until looking in detail at the real data. Then we've sometimes found it. All it takes is leaving out one tiny constraint check in your application you are writing.

      Just because you haven't spotted the bad data, doesn't mean it's not in there. That's why I don't trust MySQL. I want to know the database is keeping the data safe. I want real foreign key and other constraints. Really enforced, with errors thrown up when someone tries inserting bad data. Not just guessing that since I haven't spotted any bad data, there's none in there.

      If it's just for use in a blog, sure, who cares. But I generally work with databases where I actually care about the data. Postgres, Oracle, etc is the way to go if you really care about the data.

    57. Re:being a paying customer... by pthisis · · Score: 1
      Right, why not try PostgreSQL which has had these features forever and is also Free software.


      And is also far faster than mysql for my current application (which doesn't happen to be a message board, blog, or the equivalent).
      --
      rage, rage against the dying of the light
    58. Re:being a paying customer... by johannesg · · Score: 1
      Just as a point of general curiosity, why don't you use a more capable RDBMS like Oracle or PostgreSQL? I find the extra checks performed by such databases help uncover errors in my application layer, which in turn leads to much quicker development time.

    59. Re:being a paying customer... by jusdisgi · · Score: 4, Insightful

      It's faster than everything else because it doesn't have all the data integrity features that a RDBMS does.

      I stick everything into the application layer, so MySQL lacking these features doesn't bother me a bit.

      So, you use the database because its lack of features makes it faster. But then you reinvent the wheel by writing those features into the application. Surely you realize how likely it is that you are wasting all that speed and more in the application layer trying to do a bunch of stuff that your database is supposed to handle for you. Unless you really think you are so superior to the coders at Postgres that you keep an advantage (good luck), you are wasting your time and adding foolish complexity to your apps for no reason.

      --
      Given a choice between free speech and free beer, most people will take the beer.
    60. Re:being a paying customer... by Serapth · · Score: 1

      First off... most websites arent Google, or Amazon... they are more or less the pinnacles of "web development". Not to say that what they do isnt valid to the rest of the world... but frankly, most companies dont have the same resources that these types of companies do... atleast not the resources allocated towards the web. Concessions need to be made at most other places, where things like "cost benefits analysis" and other jargon apply.

      Secondly, these companies biggest concern is scaling to the volume of requests... not the complexity or time of a request.

    61. Re:being a paying customer... by RWerp · · Score: 1

      Show me one piece of complex software which could be developed without gaining bug reports from the users.

      --
      "Long run is a misleading guide to current affairs. In the long run we are all dead." (John Maynard Keynes)
    62. Re:being a paying customer... by Tmack · · Score: 1
      The key I think is the "Open source DB market." Last I looked Oracle was far from open source, same as MSSQL and many others. Sure, they have 40% of the Open Source market, but not all potential DB customers use Open Source solutions. Say 10000000 DB's are out there, maybe only 20% are open source, 40% of which use MySql. Thats only 80000 DB's, 10x which is only 800000....

      Tm

      --
      Support TBI Research: http://www.raisinhope.org
    63. Re:being a paying customer... by ShieldW0lf · · Score: 1

      Giving examples instead of just spouting off is karma whoring?

      What world do you live in? In the world I live in, that's called backing up your argument.

      --
      -1 Uncomfortable Truth
    64. Re:being a paying customer... by Glooty-Us-Maximus · · Score: 1

      The logic is exactly the same, true, but having triggers supported by the database system allows for less traffic having to be sent across the network to your DB server. Also, having the database system keep track of your triggers for you seems a bit more convenient than having to manually document where your trigger functions are in your (potentially very many) code files.

    65. Re:being a paying customer... by As+Seen+On+TV · · Score: 1

      You have exactly the wrong idea. A database is not just a container. A database is a container with a metric assload of logic that exists to enforce a data model.

      But philosophical shortcomings aside, you are wasting a huge amount of time writing application logic to emulate functions that can be performed for you by your database. And, incidentally, you're introducing bugs and holes along the way.

      Bad programmer. Go lay down.

    66. Re:being a paying customer... by Anonymous Coward · · Score: 0

      amen to that, I develop enterprise level mysql apps to, and the thing im hoping most with mysql 5.0 is even more raw speed. The new features are already easily emulated.

    67. Re:being a paying customer... by As+Seen+On+TV · · Score: 2, Interesting

      Do you know the story of the software that runs the launch of the space shuttle? I read an article about it in Infoworld years ago. I don't guess there's a copy on line.

      Short version: This software, which is maintained by a team of fewer than 20 people, has never failed in the field. It's multiply redundant, but those redundancies have never, to date, been necessary. It works perfectly all the time.

      From the time that the first line of code was written back at Lockheed in the late 1970s to the time at the article I'm telling you about was written (1996 or so) a grand total of exactly 17 bugs was found in unit testing.

      One member of the team was quoted as saying, "We don't work late. We know that if we work overtime and get tired, we might introduce a mistake. If we introduce a mistake, somebody that we go to meetings with every week will die."

      (That's me paraphrasing, obviously, but the "somebody will die" wording is a quote. That's the kind of thing that stays with you, you know?)

      When you consider that a huge amount of computer code being written today is used in things like airplane avionics systems, car and truck engines, life-support machines and, yes, space ships, you realize that this whole "we're not perfect, we rely on users to send us bug reports" attitude is laughable in the extreme.

      You don't get a bug report when the software that controls the flaps on a 777 fails. You hear about it on the news.

    68. Re:being a paying customer... by Lefty+McGrep · · Score: 1

      That may be true. But I personally don't want or need the database to enforce any rules. I know EXACTLY what is being inserted into the database every single time. You say that I'm wasting time by writing code to do what the database is supposed to do. OK, fine. If I do it your way, I waste time writing endless code to trap errors and recover for the user. I'd rather test the app and be certain the integrity of that data before its inserted. Are you one of these people that just present the user with a cryptic database error instead of testing the code thoroughly? The one thing I would like is Triggers since I'd like to clean up orphan records but really, not a huge deal.

    69. Re:being a paying customer... by Anonymous Coward · · Score: 0

      Are you an idiot or a moron? Speed is about handling x number of transactions in y amount of time. And, MySQL is used by Google. I urge you to find anything that has that number of millions of transactions per second.

      (Oh, and I have mod points, and you're going down).

    70. Re:being a paying customer... by As+Seen+On+TV · · Score: 1

      I know EXACTLY what is being inserted into the database every single time.

      I promise you, in any non-trivial application, you really, really don't.

      The one thing I would like is Triggers since I'd like to clean up orphan records but really, not a huge deal.

      No, it is a huge deal, and it's further evidence of how you're not seeing the big picture here. You should never have an orphan record, ever. Orphan records are inconsistent data. The database should never contain inconsistent data, not even for a split second. That's why God gave us things like transactions, so we can make all changes atomic and consistent. If your data model allows you to delete, for example, a record from THIS table without also deleting the record from THAT table that refers to it by row ID, your data model is broken and should be fixed immediately.

    71. Re:being a paying customer... by B3ryllium · · Score: 1

      *shrug* You can query the table structure and use that to dynamically monitor for potential data loss/incompatibility issues.

    72. Re:being a paying customer... by DogDude · · Score: 1

      Again, you're making an assumption. You're crossing your fingers, hoping that none of the developers screw up the data. I just don't understand in any way how that could be considered good. If the data is throwaway data, then fine. All it takes is basic database knowledge, and a minimal amount of work to make sure your data is correct. Do you also program using no version tracking software? Do you not back up your code? Do you put your servers on the Net with no firewalls? What you're talking about is all very fly-by-the-seat-of-your-pants.

      --
      I don't respond to AC's.
    73. Re:being a paying customer... by Anonymous Coward · · Score: 0

      And you are also writing your application code in assembler? Otherwise your loosing performance. Other guys have already mentioned that putting things like transactions, views, subqueries, etc. in the application layer is just stupied. Sure there are some simple queries which are faster in MySQL, but it is the same like not using a c-compiler. A database could optimize complex queries, transactions, etc. much better than you can and very often their implentation is much better than yours.

      By the way, Oracle e.g. can rollback to certain points not only to the beginning of transaction, you can use "subtransactions".

    74. Re:being a paying customer... by DogDude · · Score: 1

      *shrug* You can query the table structure and use that to dynamically monitor for potential data loss/incompatibility issues.

      And then what? That's like running a server connected to the Net with no firewalls, and just periodically checking to see if it's been hacked.

      --
      I don't respond to AC's.
    75. Re:being a paying customer... by Anonymous Coward · · Score: 1, Insightful

      To be fair, I wouldn't use any exotic options like PARALLEL or NOLOGGING

      Oh, so you think that to be "fair" making comparisons between the two, you have to cripple Oracle by not allowing use of features that speed it up? I'm not quite sure I follow your logic.... Doing things in parallel and skipping the logic on repeatable loads certainly doesn't qualify as "exotic" to anybody worth their salt with Oracle.

    76. Re:being a paying customer... by niittyniemi · · Score: 1, Informative


      > As someone who has been developing enterprise apps with MySQL
      > for a while now, I'll answer this, even though I'm 99.44% sure
      > you're trolling: what we've always done, so far, is put all the
      > triggers in the application layer. Now we can make "real"
      > triggers in the DB layer, but guess what?
      > The logic is exactly the same.

      Go and read Date, about why a 3-tier architecture is a good thing and then come back and tell me you develop "enterprise apps with MySQL....[with] triggers in the application layer" whilst still keeping a a straight face.

      +5, Interesting? How about -5, Clueless. It's people like you who give IT a bad name. Do your homework before "developing enterprise apps"! I spent a considerable part of one year doing relational theory and RDBMSs at uni, what have you done? Obviously not a lot and quite frankly it shows.

      --
      The Machine stops.
    77. Re:being a paying customer... by Lefty+McGrep · · Score: 1

      In a utopian database geek world, you are absolutely correct. An orphan record to me means another record that is never accessed. The orphan does absolutely nothing to the data that is being accessed. A user selects a row in a master table and looks for related records in another table. If a master record is never selected, the orphans aren't either. They just consume disk - no big deal. I suppose I fall into the realm of "trivial applications" however and if I was writing some sort of banking app, I wouldn't use MySQL. I merely use MySQL to record data and to call up that data when needed.

    78. Re:being a paying customer... by mythosaz · · Score: 1
      Making gains in the commercial market doesn't have nearly as much to do with the speed of the database as it does with support.

      People pay for Oracle because they want to be able to pick up the phone and talk to the vendor. The cost of Oracle licenses is pennies compared to the operating costs of five-nine's datacenters and customer/patient/client data loss.

      Unless they're going to ship free servers and provide free support contracts, you're going to have a hard sell at corporate customers.

    79. Re:being a paying customer... by Anonymous Coward · · Score: 2, Insightful

      > I never once had a query or insert fail. Never once did I have data corruption

      Of course you haven't had queries fail, this is exactly the point: when mysql doesn't like data it just modifies and it and inserts it anyway. So, strings & integers get truncated, invalid dates are accepted, and table configurations for innodb - are ignored and myisam is used instead.

      And while using such a system, how would you find the corrupt data? Problems like these don't equally affect each row in a table. They affect maybe one out of a hundred: just enough to erode the credibility of your application.

      Don't know how many times I've heard programmers tell me that their data was perfect, only for me to analyze it and produce an endless list of problems...

    80. Re:being a paying customer... by Anonymous Coward · · Score: 0

      LMAO, you're a fucking idiot - nice spelling! Mysql sucks, and there are plenty of others that are much better. Stick to geocities you n00b.

    81. Re:being a paying customer... by Anonymous Coward · · Score: 0

      > As someone who has been developing enterprise apps with MySQL for a while now

      Ha ha ha ha ha! What a fucking liar. mysql+enterprise=no such fucking thing. Are you selling oceanfront property in Arizona too? Fucking dumbass.

    82. Re:being a paying customer... by ultranova · · Score: 4, Informative

      Did you spend a lot of money on a DB cert, only to be angered that others are getting the same job done with OSS and good programming techniques?

      You seem to be implying that OSS databases make do without transactions. This is incorrect, since PostgreSQL has supported them for a long time (and, AFAIK, so has MySQL, for some table types - I wouldn't know for sure, since I use PostgreSQL myself).

      I was under the impression that transactions enable you to lump together a series of queries into one transaction, so if something fails, none of the queries/inserts execute. If I'm wrong, then I stand corrected.

      You are correct, with the addition that transactions guarantee that the changes have been logged into permanent storage (disk) when the "COMMIT" command returns.

      I understand the importance of data integrity but also keep in mind that in the 8 years that my career has focused on this business, I never once had a query or insert fail.

      What happens if there's a power outage in the middle of a some update that requires multiple queries ? Or in the middle of a single update query ? Or if the database server simply crashes ?

      PostgreSQL executes each command in as a "mini-transaction" with implied BEGIN and COMMIT wrapped around it (assuming, of course, that the command wasn't already a part of a transaction), which means that if power gets cut in the middle of a command like "UPDATE customers SET DEBT = DEBT + 1", then either all the records are updated or none is. As a result, data stays consistent even when if something unexpected happens - the whole thing works a bit like a journaled filesystem like ext3.

      Of course you can work around these kind of issues in the client software, but it's more convenient to let the database system handle them.

      --

      Forget magic. Any technology distinguishable from divine power is insufficiently advanced.

    83. Re:being a paying customer... by DFossmeister · · Score: 1

      You need to slap yourself. 10x users !+ 10x market share. Go slap yourself again.

      If they had 400,000 users before, they would now have 4,000,000 users. It says nothing about users of other open source databases. What it means is that it opens the way for even more commercial database users to use MySQL, which will, in turn, increase its market share of open source database users. Its possible (gasp at the thought) that some other open source database users would even migrate.

      Regardless of all this, poor math and logic skills included, it is a step forward.

      --
      No Not Again! Its whats for dinner.
    84. Re:being a paying customer... by Anonymous Coward · · Score: 1, Insightful

      "data integrity ... I'm unconcerned."

      You have absolutely no fucking business working with anybody's data. If you have a boss (and not just customers you've surely conned) I hope he's clueful enough to fire your incompetent ass.

      If you had any fucking clue, you'd know that Postgresql beats mysql in speed. mysql has no speed advantage. Go back to the kiddie pool, you script kiddie.

    85. Re:being a paying customer... by Anonymous Coward · · Score: 0

      The karma whoring part is stealing examples and not citing.

    86. Re:being a paying customer... by fitten · · Score: 1

      I'm neither. The base computer I have runs at a certain speed. After you put Windows on it (a bunch of code) and Linux on it (another bunch of code) the performance characteristics are different. Similarly, you can have MySQL as a base data store and put an app on it and the app can be fast. You can put another app on it and the app will be slow. If I had to code into my application all of the features that MySQL doesn't support in order to make use of those features, then my app has simply added the code into it that MySQL should have in it and it will pay the performance penalty (probably more of a penalty since the MySQL folks are probably smarter than me at DBMS coding and could write more optimal code for it into the DBMS).

      I do have access to those pieces of software but I'm not an idiot. Put an application that needs ACID on top of Oracle and the same application with all of the required ACID components implimented inside it that MySQL doesn't have and then compare the two. A DBMS by itself does nothing useful.

      The main issue is that many folks who think they are DBMS savvy wouldn't know when ACID functionality is required and when it isn't. Most of them I wouldn't trust to write a DB management system for a teenager's Magic card collection, much less some application dealing with my money.

    87. Re:being a paying customer... by j_d · · Score: 0

      my god, you're a dick.

    88. Re:being a paying customer... by cduffy · · Score: 2, Informative

      Did you spend a lot of money on a DB cert, only to be angered that others are getting the same job done with OSS and good programming techniques?

      Maybe he spent a lot of time cleaning up a legacy (read: developers bailed long ago) database application that was consistantly hitting bugs that wouldn't have existed if the DB had been safeguarding the app layer from screwing up too bad. That kind of experience tends to lead to a fairly nontrivial amount of anger over bad databases (and, worse, refusal of app developers to use readily available good ones).

      I *have* seen actual DB corruption -- but more often, I've just seen bad inserts that a competant database, used correctly, could have stopped the app layer from committing. It's bad enough when you're the initial developer -- it's a whole different ballpark when you're the guy who's been hired on to clean up his mess.

      It's a Good Thing that MySQL has finally caught on and started trying to do things right. I wonder, though, how long it'll take for the developers weaned on it to do likewise.

    89. Re:being a paying customer... by DrZombie · · Score: 1

      Sorry, but as soon as you started comparing MySQL to Oracle, your argument went out the door. I don't know exactly what we pay here for our Oracle licenses, but it is in the $100k's/year. They serve different application spaces. It's just not really a comparison that was even worth making. It's like trying to compare the speed of a bicycle to the speed of a porche (or whatever). They just don't exist in the same space together.

    90. Re:being a paying customer... by Len+Budney · · Score: 2, Informative

      Now we can make "real" triggers in the DB layer, but guess what? The logic is exactly the same.

      Um, no, there's an important difference. Triggers are intended to ensure data integrity, not to implement application logic per se. When you denormalize a relation, and introduce redundant data, you also introduce the certainty that the redundant data will end up out of sync sooner or later. Triggers are there to correct that problem.

      If you put the same logic in your app, you guarantee that someone, somewhere, will update one datum without properly updating the redundant copy. Hilarity ensues.

    91. Re:being a paying customer... by cca93014 · · Score: 1

      Fastest? please, only in read-only transactions running on tiny hardware...
      What, you mean the model for almost all websites?

    92. Re:being a paying customer... by fupeg · · Score: 1
      The one thing that MySQL excels in is raw speed. It's faster than everything else because it doesn't have all the data integrity features that a RDBMS does.
      I've had some very good experience using the InnoDB engine with MySQL. It adds transactionality, while losing very little speed. On the other extreme, I've also used their heap tables in read-only situations. The great thing is that you can go back and forth between InnoDB, MyISAM, and heap very easily.
    93. Re:being a paying customer... by Doctor+Faustus · · Score: 1

      I agree, but other people above are saying that MySQL is faster.

    94. Re:being a paying customer... by Phiu-x · · Score: 1
      Innodb add transaction (and 5 different levels of transaction isolation) to MySQL and it's only a table type change away.Autocommit=0 anyone? Please people : learn about the tools ...
      InnoDB provides MySQL with a transaction-safe (ACID compliant) storage engine with commit, rollback, and crash recovery capabilities. InnoDB does locking on the row level and also provides an Oracle-style consistent non-locking read in SELECT statements. These features increase multi-user concurrency and performance. There is no need for lock escalation in InnoDB because row-level locks in InnoDB fit in very little space. InnoDB also supports FOREIGN KEY constraints. In SQL queries you can freely mix InnoDB type tables with other table types of MySQL, even within the same query.
      Check it for yourself. http://dev.mysql.com/doc/mysql/en/innodb-overview. html/
      --
      This is a stolen sig.
    95. Re:being a paying customer... by Stone316 · · Score: 4, Insightful
      I guess the point is, your doing extra work on behalf of the database that other RDBMS's provide. Its a complete and utter waste of your time to do transaction logging at the application level.. Its not like you will have to pay for Oracle or DB2.... Other OSS RDBM's provide you with that functionality.

      I've been a DBA for 8 years and i've seen countless developers spend days, weeks programming features that are already in the database. I thought developers loved to reuse code but I guess some like to do everything from scratch by themselves.

      I dunno, maybe if you had real dba's to tune the DB rather relying on developers supporting it, maybe you would see the same performance out of the 'slower' RDBMS like oracle, DB2, postgresql.

      Personally I'd rather rely on transaction logging, integrity being handled by the database.. Why? Because depending on the RDBMS they've been there a long time and pretty stable. Not to slight your skills but your time is probably better off spent on other parts of your code rather than somethings thats been tried, tested and true.

      --
      "Thanks to the remote control I have the attention span of a gerbil."
    96. Re:being a paying customer... by Anonymous Coward · · Score: 0

      Both of those issues are fixed in the release this comment is about, for the first case with defaults in a NOT NULL column you can write a trigger that reverts that behaviour, a forced insert of a NULL will not give the default empty string as in your chapter (I do agree that you should be able to declare a column as NOT NULL without a default value at all, though).

      As for the second case, I don't see a cleaner solution than below.
      (The error message is a bit misleading, but I guess we can let that slide for being beta).

      mysql> CREATE TABLE bounds_test (
      -> id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
      -> price NUMERIC(4,2),
      -> code VARCHAR(8),
      -> numbers_only INT
      -> );
      Query OK, 0 rows affected (0.00 sec)

      mysql> INSERT INTO bounds_test VALUES (
      -> 99999999999999,
      -> 21474.83,
      -> 'ABCDEFGHIJK',
      -> 'A quick brown dolphin...'
      -> );
      ERROR 1264 (22003): Out of range value adjusted for column 'id' at row 1
      mysql> SELECT * FROM bounds_test;
      Empty set (0.00 sec)

    97. Re:being a paying customer... by mattyrobinson69 · · Score: 1

      You mean XML is mostly used as a buzzword, and shouldn't actually be used for absolutely everything?

    98. Re:being a paying customer... by kpharmer · · Score: 1

      > They just don't exist in the same space together.

      1. the op claim *fastest* wasn't limited to any particular "space"

      2. mysql is pretty cheap as far as commercial databases go, at $600 / database server. But both oracle and db2 have versions within this price range. For example, DB2 Express is somewhere between $500 & $1500, and is limited to 2 cpus. On the other hand, it includes partitioning (MDC), parallelism, a mature optimizer, standard features, etc. It can handle 5000 transactions / second - in a standard database environment in which you've got referential, check, and unique constraints on your data.

      So, yeah, mysql far slower than db2 & oracle at the top end, where it doesn't really compete. But it's also generally slower at the low end as well - where its only edge is simpler installation. Ah, and a GPL version that almost no corporate clients qualify for. And perhaps almost nobody else either. Who can tell?
      http://www.mysql.com/company/legal/licensing/comme rcial-license.html

    99. Re:being a paying customer... by Anonymous Coward · · Score: 0

      mysql> CREATE TABLE trunc ( a INT, b CHAR(1), c DATE );
      Query OK, 0 rows affected (0.00 sec)

      mysql> INSERT INTO trunc VALUES ('abc', NULL, NULL);
      ERROR 1264 (22003): Out of range value adjusted for column 'a' at row 1
      mysql> INSERT INTO trunc VALUES (NULL, 'aa', NULL);
      ERROR 1406 (22001): Data too long for column 'b' at row 1
      mysql> INSERT INTO trunc VALUES (NULL, NULL, '2005-02-31');
      ERROR 1292 (22007): Incorrect date value: '2005-02-31' for column 'c' at row 1

      mysql> SELECT * FROM trunc;
      Empty set (0.00 sec)

      You could at least read the changelog before assuming things.

    100. Re:being a paying customer... by ShieldW0lf · · Score: 1

      I really hate cleaning up after people like you. I'm doing so right now. Everything is perfect, orphaned records are no big deal, who needs integrity, when i use the user interface it works.

      Until you want to use that business data, which is usually worth more than the code that accesses it, in some way outside the parameters you laid for it when you set up your rinky-dink little app. Then all you have is a bunch of garbage that has to be gone through by hand... or reports that pick up orphaned crap and you spend a week trying to figure out why they're off when it was because the code you trusted to keep things in order was a balancing act of bugs that kept the garbage hidden where no one could see it.

      And it's not a "utopian geek world" thing. Its part of Databases 101 and is something every other database vendor has supported for a long long time. Even Access and Base have these basic features that are only now being introduced into MySQL, and are still not in any stable release.

      Learning how to develop databases using MySQL while you're hacking PHP is teaching you how to do it wrong. Instead of arguing with everyone, try grabbing some books on database design and moving to the next level in your skills, hey?

      --
      -1 Uncomfortable Truth
    101. Re:being a paying customer... by Anonymous Coward · · Score: 0

      You have been able to wrap multiple MySQL commands in the same network packet at least for a few years now, so yes, the packet will be slightly bigger, but there will not be any extra roundtrips over the network.

      Comparing a trigger to a SQL statement would probably give different results on different engines depending on how it caches execution plans/parsing and how it's invoked, though.

    102. Re:being a paying customer... by Lefty+McGrep · · Score: 1

      I appreciate the insight, really I do. I never claimed to be an expert. I do what works for us and I've really never had any issue with the data. I'm not really sure where one would pick up Databases 101. People like me are asked to do 10 different things and we don't have the luxury of spending thousands on databases or focusing purely on every morsel of data integrity. My main directive is fast and reliable input of data and then to give that data back in a formatted piece of paper. There is nothing earth-shattering. It seems some of you are barking up the wrong tree. Some of us simply don't need the functionality of a full featured database system. For mission critical tasks, we buy turnkey products made by people that worry about such things. I'm really not trying to argue but giving a point of view that many many users of MySQL hold. We need fast containers of data to put things out and pull things out of when called upon.

    103. Re:being a paying customer... by cosinezero · · Score: 1

      So what happens if the insert to the first table fails? His supposed application layer needs to be finely grained enough to deal with each. I mean, if I sent INSERT INTO tA (f1,f2,f3) VALUES (1,2,3) INSERT INTO tB (f0, t2) VALUES (@@Indentity, Now()) and the first insert fails, I insert an orphan into tB? BAD. WRONG. There NEEDS to be round-trips if you're going to accurately reproduce trigger behaviour. Can I batch inserts? Sure. But we're talking about reproducing or replacing the behaviour of triggers.

    104. Re:being a paying customer... by destiney · · Score: 1


      Yeah, but how reliable (read: it sucks) is it

      That's not been my experience at all. I've worked on some fairly large MySQL clusters before. On one particular setup we had a single server running 4 instances of MySQL on different ports as a multi-master replication server for 12 other MySQL servers. Replication worked just fine.

    105. Re:being a paying customer... by ajs · · Score: 1

      "ok, how about using their non-isam option. Ok, now we've got the kind of data integrity we've taken for granted since about 1981."

      No, WE have done no such thing. *I* and many others have done quite a few things since 1981 and relied on nothing so cumbersome.

      I've worked with raw disk I/O; flat-files; single-key databases; and primative table-managers like MyISAM; more robust table managers like innoDB; pure time-series databases like fame; "enterprise" databases like Sybase and Oracle, etc. and they all have a broad appeal for different reasons.

      "But, reads are very slow, often 1/10th the speed of myisam."

      Yes, if you look up in the thread you will see discussion of the fact that you can trade performance for guarantees.

      Of course, performance is not a constant across all usage patterns (just as compression is not a constant across all inputs). You have to choose your optimizations carefully, and sometimes the performance of your database doesn't even matter to you. Sometimes it's all that matters. Still... in most cases, you fall somewhere in the middle, and performance is one variable in a complex equation that also involves social, political, financial, and other technical variables.

      No one solution is right for everyone.

    106. Re:being a paying customer... by B3ryllium · · Score: 1

      And then you tell the user to bugger off if their input doesn't match what the database allows. Point being, just because the DB doesn't error out when you try to insert data that is too big/different, doesn't mean you have to accept that at face value.

      I've programmed my backends to deal almost exclusively with MySQL, but I'm not in denial that other solutions exist. I just haven't played with them. From what I've heard of PostgreSQL, it has some features that I'd really like to play with. However, the whole point of FOSS is that you have choices. You can go with whatever you want - whatever's easiest, fastest, most featureful, any combination of the three, or (if you're lazy) you can just go with whatever's winning in the usage numbers.

      So I guess my point really is that I'm lazy. But I already knew that. ;-)

    107. Re:being a paying customer... by rbarreira · · Score: 1

      Well, in case someone believes this troll as soon as they read it, I have to say that I've never heard about google using Mysql. Maybe you're referring to a situation similar to a Microsoft employee using Winamp to listen to some music? :)

      --

      The AACS key is NOT 0xF606EEFD628B1CA427BEA93A9CA9773F
    108. Re:being a paying customer... by kpharmer · · Score: 1

      > "ok, how about using their non-isam option. Ok, now we've got the kind of data integrity we've taken for granted since about 1981."

      That's true, there were holdouts back in the early 80s. Used to be lots of these guys running around saying that relational technology would never work, PCs couldn't do real work, etc, etc. I think most of them lived in bomb shelters from the 50s. We next heard from them in y2k.

      > I've worked with raw disk I/O; flat-files; single-key databases; and primative table-managers
      > like MyISAM; more robust table managers like innoDB; pure time-series databases like fame;
      > "enterprise" databases like Sybase and Oracle, etc. and they all have a broad appeal for
      > different reasons.

      Sure. And just like you don't use oracle for storing data in real-time automotive transmissions, you don't use isam in 2005 for storing business data. There are exceptions. But very few a professional would consider: read-only access where the source of record is somewhere else, fully redundant systems, etc.

      > Yes, if you look up in the thread you will see discussion of the fact that you can trade
      > performance for guarantees.

      In this particular case half of the issue is due to space-bloat by innodb. They've accepted that this is a problem, and are working on it. In other words, it isn't an engineering compromise it's a design flaw.

      Additionally, remember that myism is dead last in speed in write-intensive applications. Dead last. So, the elimination of common-sense data protections dosn't buy myisam any speed in this scenario.

      > No one solution is right for everyone.

      No, but "gotos are considered harmful". And so is ISAM or mysql for vital business data.

    109. Re:being a paying customer... by DogDude · · Score: 1

      The point is that instead of having one point to control data integrity (the database), you have countless other ways that people access the database (various applications, direct SQL access, other developers/departments, bad admins) that can all screw up the data.

      As far as being lazy, it's MUCH easier to control everything at the database, and it's MUCH easier to maintain. You make one schema change (this item_id has to exist in table X, otherwise you can't insert it into table Y), and that's it. No matter who or what is accessing the database, you *know* that you have absolute data integrity because it's all controlled at one point.

      And, with any "real" database, you have the same amount of control at the database level that you can get at the application level. You can double it up and still check at the application level first, if you want to, but ultimately, you don't need to do 50 data checks at 50 points. You simply do one, and that's it.

      --
      I don't respond to AC's.
    110. Re:being a paying customer... by Sxooter · · Score: 1

      5 levels of isolation? The SQL spec only defines four what's this fifth one innodb allows? Seriously, I wanna know.

      --

      --- It is not the things we do which we regret the most, but the things which we don't do.
    111. Re:being a paying customer... by B3ryllium · · Score: 1

      All valid points, well articulated. You, sir, are a model for exemplary slashdot-posting p0w4rZ.

    112. Re:being a paying customer... by gumbi+west · · Score: 1

      You know, most of the comparisons of speed between the ACID MySQL DB and Oracle have then having about the same speed.] http://www.eweek.com/article/0,3658,s=708&a=23115, 00.asp">here is one.

    113. Re:being a paying customer... by Anonymous Coward · · Score: 0

      >Fastest? please, only in read-only transactions running on tiny hardware...

      Exactly. Use the right database for the job. MySQL has been a workhorse for the web for years, and is exceptional at it. Now it is capable of much more, and time will tell how well it tackles bigger apps.

    114. Re:being a paying customer... by Anonymous Coward · · Score: 0

      Shit a +4 and you can't even do basic math

      Good job slashdot moderators!

    115. Re:being a paying customer... by Anonymous Coward · · Score: 0

      "Ah, and a GPL version that almost no corporate clients qualify for"

      You don't really know what are you talking about this issue.

      It is common knowledge that most corporation don't sell code for a living. ANY corporation that doesn't distribute code out of itself can use GPLed MySQL without any issue, and those that do distribute code can distribute GPLed MySQL as long as all the bunch they distribute along with MySQL is GPL too.

      That states for MOST BY FAR all corporations.

    116. Re:being a paying customer... by jbellis · · Score: 1

      That reply makes it clear you have no idea what I'm talking about. That's okay; you'll figure it out once you have a co-worker make an addition to your "wrapper" that leaves out the common code and you spend a few hours figuring out why your data is inconsistent.

    117. Re:being a paying customer... by Anonymous Coward · · Score: 0

      "Some of us simply don't need the functionality of a full featured database system."

      Some of you just DON'T KNOW how much you DO need it.

      Remeber: for a man with a hammer any problem seems a nail.

      And, hey, it was so simple a problem as to work with Postgres (you know, free as in BSD) instead of MySQL. Then you would have done exactly those some ten things at a time and still learn something truly useful in the way.

    118. Re:being a paying customer... by BiggerIsBetter · · Score: 1

      I've been a DBA for 8 years and i've seen countless developers spend days, weeks programming features that are already in the database. I thought developers loved to reuse code but I guess some like to do everything from scratch by themselves.

      I think that's the difference between an engineer and a code-monkey.

      --
      Forget thrust, drag, lift and weight. Airplanes fly because of money.
    119. Re:being a paying customer... by Anonymous Coward · · Score: 0

      What a lame argument. A "co-worker" can add any code anywhere in the app and break something, regardless of your precious database.

      Sheesh.

    120. Re:being a paying customer... by rjamestaylor · · Score: 1
      MySQL replication is inherently asynchronous (pre-5, I mean; I haven't examined 5.0 yet but use MySQL 4 daily) and this is not what serious people (say, banks) want. This fact, alone -- forget the problems with replicating actions involving temporary tables that may not exist on the slave, temporary variable replication (fixed late in the 4.1 series, I believe), etc. -- could cause many to say MySQL replication sucks. Compared to Pg's, though, MySQL's replication at least works!

      It is nice of Slashdot to be so involved with MySQL. Slashdot made MySQL grow up in a hurry -- infact, I believe replication was a commissioned item by Slashdot. As for the loss of Krow...thanks CmdrTaco for parting with such a resource.

      --
      -- @rjamestaylor on Ello
    121. Re:being a paying customer... by Meetch · · Score: 1
      InnoDB also supports FOREIGN KEY constraints.

      Hmmm... have they fixed these yet though?

      Enforcing referential integrity constraints can certainly slow things down, but I've always found it far preferable to data inconsistency. When I load a log file into a database I want to know that all or nothing arrived, then there's no screwing around trying to feed half the file back in later. This is never a problem with a full transactional RDBMS.

      But you can also get around speed issues when you are sure of the data. Years ago I was an acting Postgres DBA - for a couple of years or so - and quickly discovered that to speed up data dump/load issues it was a relatively simple task to disable referential integrity enforcement before the load, and reenable afterward. This was especially useful when my manager accidentally messed up a single client data table with a single update and I was able to disable the table's triggers, drop it, load the morning's backup, and reenable the integrity enforcement.

      Indeed, a database restore is typically of the order: Create the tables, load the data, turn on integrity. ~10G in 15 minutes (backup and restore) on now-5-year-old-hardware, not hard to do.

      Oracle offers similar loading functionality. I've heard a very highly regarded DBA referring to it as ripping a hole in the side of the table, but basically it's a referential integrity bypass. Great stuff if you know what you're doing, and it can turn hours of loading into something better measured in minutes.

    122. Re:being a paying customer... by Jamesday · · Score: 1
      You might want to visit the MySQL User's Conference and ask one of the keynote speakers for that conference how Google is using MySQL.

      Also see this news story: "And MySQL's popularity seems to be growing. Yahoo and Google use the software to run many parts of their Web sites"

    123. Re:being a paying customer... by gnovos · · Score: 1

      However, I stick everything into the application layer, so MySQL lacking these features doesn't bother me a bit.

      Thank goodness that the only application capable of touching that database was written by you and no other program will ever be used... Whew!

      --
      "Your superior intellect is no match for our puny weapons!"
    124. Re:being a paying customer... by As+Seen+On+TV · · Score: 1

      People like me are asked to do 10 different things and we don't have the luxury of spending thousands on databases or focusing purely on every morsel of data integrity.

      But don't you see? That's the thing! Databases like PostgreSQL are free and take care of data integrity for you! You write the data integrity rules into the data model using things like foreign keys and constraints and triggers.

      Does it require that you take some time to read the manual and understand how the database works? Yes. But once you've done that, your data is guaranteed to be consistent and valid no matter what your front-end application does or doesn't do.

    125. Re:being a paying customer... by linuxhansl · · Score: 1
      ok, how about using their non-isam option. Ok, now we've got the kind of data integrity we've taken for granted since about 1981. But, reads are very slow, often 1/10th the speed of myisam.

      Really? Where did you this number (1/10) from? In - unscientific - tests that I have done I found *no* significant difference in read performance between MyISAM and InnoDB. What I tested (on 5.0.3) were simple selects from a single table, graphs flattened into two tables, generating transitive closures with a stored procedure, mass inserts, mass connection tests, etc. As I said no significant performance difference.

      At the same time I did the same test with PostgreSQL 8.0.1, the performance differences were all < 5%.

      So I say: MyISAM performance is a myth, InnoDB being much slower is a myth, PostgreSQL being much slower is a myth too. On Linux (even with NPTL) faster connection setup with MySQL as compared to PostgreSQL is also a myth.

      In the end it boils down what model you prefer. PostgreSQL and MySQL are both converging towards the same target: A performing full featured database. MySQL has a central company to provide support and services and to organize the releases. PostgreSQL is more losely organized, but on the other free to do whatever you want with it.

      If MySQL AB can keep the inflow of money up, MySQL will probably get an edge at some point, because developers can be hired to work exlusively on MySQL. Currently PostgreSQL still has the edge with its powerful features like rules, etc.

    126. Re:being a paying customer... by Stone316 · · Score: 1
      Does the first line of your post foreshadow your own comments?

      There's a reason why you put constraints in a database.. Its much easier to change them there than it is in the code. So it depends on your application on to what extent you will use them.

      Honestly, i'd have to say your a troll. Crippling a piece of software (as another user said) and then testing it against another piece of software is a pretty shoddy test. To get a good idea of what you can expect you should tune mysql and oracle to their optimal level on the same hardware and then compare.

      Lets take a Ford Escort and drag it versus a Porche...But we modify the porche such that its acceleration and top speed are fixed. By chance the escort wins, does that mean its a faster car? Ok, probably a crappy comparision but you get the idea.

      I do have access to both those pieces of software but I wouldn't waste my time doing a test like that.

      --
      "Thanks to the remote control I have the attention span of a gerbil."
    127. Re:being a paying customer... by Reverend528 · · Score: 1

      I use MySQL as the backend for a message board I run from my home. I've never had a problem with my tables being corrupted due to power failure. Why? Because I have my computer hooked up to a UPS. When the power goes out for an extended period, the UPS notifies the computer and shuts it down. It neutralizes the threat of failure by making it a non-threat rather than depending on excessive protection at the software level.

    128. Re:being a paying customer... by dago · · Score: 1

      "The karma whoring part is stealing examples and not citing."

      (Anonymous Coward)

      --
      #include "coucou.h"
    129. Re:being a paying customer... by Anonymous Coward · · Score: 0

      They don't use Oracle either. Google use their own homegrown software for the main search engine. Neither Oracle nor MySQL, nor any other general purpose database is able to spit out millions of web links in fractions of seconds thousands of times in parallel like Google does.

      However, MySQL is able to serve web pages (that is do multiple queries) to thousands of users at a time like some web forums do (our forum, http://forum.hardware.fr, serves 1500 to 2000 connected users daily without failing nor slowing down).

      BTW, does slashdot use MySQL or Postgres ?

    130. Re:being a paying customer... by Anonymous Coward · · Score: 0

      Well, if you spend the $100,000/year on fast computers instead of software licenses, I bet MySQL is orders of magnitude faster.

    131. Re:being a paying customer... by Anonymous Coward · · Score: 0

      I see a lot of techno babble here. There is truth about the limitatiions of MySQL, which are true, except the bits about "slowness" and "lost data".
      Now, when you program with MySQL, YOU HAVE TO know its peculiarities in order to feed it correctly. Once it's fed the acceptable data, it doesn't "lose" or change them in my experience.

      All I can say is, our web forum has been serving billions of pages for about 10 years. It has between 500 and 2000 connected users 24/7 with an average of 1500 in the evening without slowdown under load (the exact number is written on top of http;//www.hardware.fr). It's one of the 10 biggest web forums in the world.
      Yet one can do wholetext searches since the beginnning of the forum, and it's always fast (try it !) and it works. And we have NO data lost.

      Thats my 2 cents.

    132. Re:being a paying customer... by Anonymous Coward · · Score: 0

      Oups, the address is http://forum.harware.fr/

      This forum is faster and also has more features than the average phpBB.

    133. Re:being a paying customer... by Anonymous Coward · · Score: 0

      so what if your UPS fails?

    134. Re:being a paying customer... by ecampbel · · Score: 1

      Here's the article They Write the Right Stuff.

      I'm not sure what you mean by unit testing since the article doesn't go into that and it talks about 15% of errors making it out of development into production, but you got the gist right.

      --

      Sig goes here
    135. Re:being a paying customer... by golgotha007 · · Score: 1

      Wow, how did you know? It's like magic!

    136. Re:being a paying customer... by RWerp · · Score: 1

      You're taking the probleme to the extreme. Noone will die because he has to wait 10 seconds more for the ATM to process the transaction, or because he will be billed $10 more. It's the notion that the majority of software is used in mission-critical systems which is laughable. Besides, have you any idea how much this shuttle software costs? Money is a scare resource and needs to be spent reasonably. That's why people choose to relie on user bug reports. Besides, I have no doubt they received some bug reports from the user (e.g., NASA). They probably won't admit it, but nobody's perfect.

      --
      "Long run is a misleading guide to current affairs. In the long run we are all dead." (John Maynard Keynes)
    137. Re:being a paying customer... by kaiwai · · Score: 1

      Are you surprised about how slow Oracle is? heck, just look at benchmarks of Sybase vs Oracle and you'll see what I mean. Lord only knows why people stick with Oracle when Sybase and IBM DB2 eat Oracle for lunch.

    138. Re:being a paying customer... by Kent+Recal · · Score: 1

      Funny, nowhere in your links is explained what Google is supposedly using it for?

      Must be not exciting enough to mention it then, huh?

    139. Re:being a paying customer... by ajs · · Score: 1

      "And just like you don't use oracle for storing data in real-time automotive transmissions, you don't use isam in 2005 for storing business data."

      You may not. Many do. Given that your data model is either very simple or can always be ACCESSED in very simple ways, or performance is less of an issue than cost (e.g. the sub-optimal index-utilization is not an issue for you), everything else that differs between MySQL and most other RDBMSes is either server-side convinience or a nice optimization to have, but only applicable to niche users.

      I'll be glad when MySQL has views. I'll also never use them, but it will shut up the people who whine about the lack of views. Transactions were a real concern for certain types of work (of course, individual statements were always atomic, as they must be for almost all real work), and I was glad to see them. I still never use transactions because I prefer to manage integrity at a higher level, but of course, there are times when the overhead of doing it that way would be prohibitive. Glad they're there.

      Overall, I think the anti-MySQL camp these days is just reacting on reflex. They once had some valid points, but at this juncture, there's just trade-offs in feature sets, and performance is a DAMN IMPORTANT FEATURE.

    140. Re:being a paying customer... by nukeindia.com · · Score: 1

      Fastest? please, only in read-only transactions running on tiny hardware...

      Quote: "The only independent benchmark that compares MySQL to other major databases was published by eWeek/Ziff Davis in 2002. It compares DB2, MySQL, Oracle, SQL Server and Sybase. The article can be found at http://www.eweek.com/article2/0,4149,293,00.asp"

      And to summerize the report for you and all those who complain without knowing...

      MySQL is just as fast as Oracle, while all other DBs fall far behind. And NO, it's NOT with "tiny harware", with a "read-only transactions". They used gigs of data with transactions on. Go check yourself and get some knowledge.

    141. Re:being a paying customer... by nukeindia.com · · Score: 0, Troll


      So what if the accounting system is off by $12,000,000? It's fast.
      Who cares if the customers actually get the products they ordered? It's fast.
      Who cares if we bill our customers for the right amount? It's fast.


      Yhere's a lot of FUD on mySQL. Someone please help me. Show me a few example how mySQL's lack of transaction has result into some real business organization's accounting system going off by $12,000,000! Hay! It's being used by millions for about a decade for now and should have made gazallions of transactions! Surely there should be a LOT of real life examples doom's day example by now!

      What? You find none? Do you need any more prefect example on what a FUD is?

    142. Re:being a paying customer... by Tassach · · Score: 1
      Maybe he spent a lot of time cleaning up a legacy (read: developers bailed long ago) database application that was consistantly hitting bugs that wouldn't have existed if the DB had been safeguarding the app layer from screwing up too bad. That kind of experience tends to lead to a fairly nontrivial amount of anger over bad databases (and, worse, refusal of app developers to use readily available good ones).
      Got it in one. Sounds like you've been in the same boat.

      I can't tell you how much of my life has been frittered away cleaning up messes caused by people who didn't know how to use a database properly (or how to use a proper database).

      Because it lacks certian key RDBMS features and has badly broken implementations of others, MySQL teaches database developers bad habits -- they never bother to learn *WHY* you need those features, and more importantly *WHEN* you need to use them. As the old saying goes, when your only tool is a hammer, all problems look like nails.

      It's bad enough when a developer implements a bad db design in an RDBMS because he doesn't know any better. It's worse when the tool he's using FORCES him to implement a bad design.

      --
      Why is it that the proponents of "one nation under God" are so eager to get rid of "liberty and justice for all"?
    143. Re:being a paying customer... by Darby · · Score: 1

      Yeah, but exactly how slowly are you willing to wait.
      I, for one, get extremely impatient if I am not waiting very near the optimum speed.

    144. Re:being a paying customer... by Tassach · · Score: 1
      I use MySQL as the backend for a message board I run from my home
      And of course that experience translates directly into designing, implementing, and administering a mission-critical enterprise level OLTP system. This is typical MySQL attitude -- it works OK for my little toy project, so therefore it must be good enough for anything.

      Message boards are write-once, read many. Your transaction mix is going to be something like 99% select and 1% insert, with negligible numbers of updates and deletes. You don't have to worry about concurrency, locking, or the myriad of other details that affect a real transaction processing system.

      --
      Why is it that the proponents of "one nation under God" are so eager to get rid of "liberty and justice for all"?
    145. Re:being a paying customer... by Anonymous Coward · · Score: 0

      Republican Morality: Mass murder good. Loving a person Evil. What sick fucks.

      Liberal Morality: Mass murder (abortion) good. Loving a person Evil (except if the definition of love includes two people of the same sex and a rodent in the rectum ). What sick fucks.

    146. Re:being a paying customer... by Jamesday · · Score: 1
      Google uses Oracle as well. They are currently hiring Oracle DBAs. If not there now, they have also been hiring MySQL DBAs. Doesn't mean they use either for their main search tool, of course.

      Like Wikipedia and LiveJournal, Slashdot uses MySQL for its main database servers. The five main Wikipedia database servers see a total of some 200 million queries per day.

    147. Re:being a paying customer... by Anonymous Coward · · Score: 0

      The eweek comparison is valid for certain scenarios but it's mainly a test of JDBC driver stacks. For example, SQL Server only performed badly because of the beta JDBC driver.

    148. Re:being a paying customer... by Anonymous Coward · · Score: 0

      That can be said for any test.

      - It's mainly a test of Linux platform. Server X did bad because it was originaly designed for Windows.
      - It's a test of Intel processor. SQL server "Y" runs best on Sun machines.
      - That was indeed a network load test. Not actually SQL server performance test. The network connection cloaged down everything.

      and so on.

    149. Re:being a paying customer... by ShieldW0lf · · Score: 1

      um... I must be missing something. Shouldn't a developer be smart enough to CHECK THE DATABASE STRUCTURE before writing data into it?

      I mean, I understand your argument, but I've never been affected by it, as I always know what I'm writing to. And while the things you mention *should* return errors, it's not like they're show stoppers. To be honest, if this thing came back to bite me, I'd be knocking myself for not planning for it in the first place.


      You are missing something. MySQL ignores the structure you define for it. Generally, "planning for it in the first place" means laying down rules for your data. Current release versions of MySQL will happily consume all the SQL keywords when you lay things out without chucking any "not supported" errors, then proceed to completely ignore them. As far as I'm concerned, that's worse than nto supporting them in the first place, and is a key barrier to my adopting it for anything non-trivial.

      To be fair, they've apparently finally added some data integrity checks into this new release, but it's still not out of beta, so the problem, after all this time, is only close to being solved. It may be soon be proven suitable for important data, which would be nice. Not because I want to use MySQL more than what I currently use particularly, but because it's generally the database on offer when you pick up inexpensive hosting from just about anybody these days. It would be nice if that standard offering was actually you could trust your data in.

      --
      -1 Uncomfortable Truth
  7. Utopia? by rastakid · · Score: 3, Insightful

    The open source database company says it is 'fixing 10 years of critcism in one release'

    If they can fix 10 years of criticiscm in one release, why couldn't do that before? Or maybe in several fixes rolled out within the 10 years?

    1. Re:Utopia? by Anonymous Coward · · Score: 0

      Showmanship. Marketing does matter.

    2. Re:Utopia? by BrynM · · Score: 5, Funny
      If they can fix 10 years of criticiscm in one release...
      Imagine the change log...
      • Fixed bug causing unhandled exception under Win32
      • Optimized internal table structure for better performance
      • Silenced 10 years of criticism and name calling
      • Win32 installer now creates log file in....
      --
      US Democracy:The best person for the job (among These pre-selected choices...)
    3. Re:Utopia? by Anonymous Coward · · Score: 0

      probably because avoiding critisiscm doesn't rank very high when you want to design a open source, fairly high performance database.

      I think it would be like this:
      Stability..
      Security..
      Speed...
      Portabil ity...
      Code readability... .... (down towards the bottom of the list)
      Avoiding snobish critism.
      Avoiding unfavorable Oracle comparisions
      Avoiding unfavorable PostgreSQL comparisions.

      I think the point of the new release was to incorpoate new features, making 10 years of critiscm completely irrelevent was just a happy side effect and not the ACTUAL goal.

    4. Re:Utopia? by kpharmer · · Score: 4, Insightful

      > If they can fix 10 years of criticiscm in one release, why couldn't do that before? Or maybe in
      > several fixes rolled out within the 10 years?

      If you recall, their management made the (unconvincing) argument that 99% of the time people didn't need fluff like:
      * referential integrity (pk & fk constraints)
      * views
      * triggers
      * stored procedures

      So, they never implemented this because they had been arguing that nobody needs it anway. Nevermind that it's been standard fare for over twenty years.

      Personally, although I'm glad to see them support views, I would rather have them clean up their exception-handling than add triggers & stored procedures right away. The problems with silent errors, silent truncation of strings & integers, date validation errors, etc are far more serious than what they are adding in this *beta* release.

      Maybe in five years that'll be the release that fixes 15 years of criticism?

    5. Re:Utopia? by Cramer · · Score: 1

      How about the way the idiots blindly ignore decades of ANSI SQL standards and treat char and varchar interchangably? "If any field is variable length, all fields will be [silently] changed to variable length." And they are padded with nulls, not blank spaces. The idiots truncate trailing spaces on just about every (non-blob) field type. Oh holy hell I hate such broken behavior. Make the table the way I f'ing told you to and store exactly what the fsck I handed you; how hard is that to do, really?

    6. Re:Utopia? by repetty · · Score: 1

      >> If you recall, their management made the (unconvincing) argument
      >> that 99% of the time people didn't need fluff like:
      >> * referential integrity (pk & fk constraints)
      >> * views
      >> * triggers
      >> * stored procedures

      Their customer base changed. Their goals changed.

      I don't think that they were stupid for saying something in the past that's not true now.

    7. Re:Utopia? by tim256 · · Score: 1

      Isn't that why mySQL has MaxDB? I think this project has had all these features for a while. However, the licensing is different. The licensing for all MySQL products is confusing.

    8. Re:Utopia? by nagora · · Score: 0
      If they can fix 10 years of criticiscm in one release, why couldn't do that before?

      Because they had to wait for the ten years to be up, of course, you idiot!

      TWW

      --
      "Encyclopedia" is to "Wikipedia" what "Library" is to "Some people at a bus stop"
    9. Re:Utopia? by Axe · · Score: 1
      Did you lose usability somewhere?

      Any stable, secure, fast and portable product (for example - a toaster) is not worth anything if it can not do its DB duties.

      --
      <^>_<(ô ô)>_<^>
    10. Re:Utopia? by Col.+Klink+(retired) · · Score: 1

      They've been too busy spending the last 10 years justifying why they don't need any of these things.

      --

      -- Don't Tase me, bro!

    11. Re:Utopia? by ArsonSmith · · Score: 1

      Yea if they would have fixed everything 9 years ago they would have only fixed 1 year of criticiscm.

      sorry to point out the obvious.

      --
      Paying taxes to buy civilization is like paying a hooker to buy love.
    12. Re:Utopia? by spagetti_code · · Score: 1
      If you recall, their management made the (unconvincing) argument that 99% of the time people didn't need fluff like:
      * referential integrity (pk & fk constraints)
      * views
      * triggers
      * stored procedures

      So, they never implemented this because they had been arguing that nobody needs it anway. Nevermind that it's been standard fare for over twenty years.
      That is pure marketing hype of Microsoft proportions. If we dont have the feature, then its a useless feature that no-one wants. Until we implement it, then its a great feature.
    13. Re:Utopia? by Professor_UNIX · · Score: 1
      If you recall, their management made the (unconvincing) argument that 99% of the time people didn't need fluff like: * referential integrity (pk & fk constraints) * views * triggers * stored procedures

      I would argue that 99% of the time people don't. I don't know much about databases, but I've never needed that stuff before so why would I need them now? My MySQL/PHP stuff works fine without views or triggers.. whatever that stuff is.

    14. Re:Utopia? by LurkerXXX · · Score: 2, Funny
      I don't know much about cars, but I don't need that silly pedal on the left in my car. When I want to slow down, I just pull on the handle of the emergency brake.

      (Just because you are uninformed and don't know what other things are, doesn't make what you are doing 'right' and that they shouldn't be done better.)

    15. Re:Utopia? by frisket · · Score: 1

      Much more to the point, does it handle Unicode properly?

    16. Re:Utopia? by Anonymous Coward · · Score: 0

      It means that any criticisms of verion 5.x will be "fixed" in ANOTHER 10 years. WTG mysql! U r teh suck.

    17. Re:Utopia? by Anonymous Coward · · Score: 0

      And just because you think you're informed doesn't mean you know what's best for his database when you haven't seen it.

      Face it, mysql is used mostly in web apps where there's no need for views, stored procedures, or triggers.

      Oh, and your car analogy is just plain brainless. Like most analogies made on slashdot.

    18. Re:Utopia? by Anonymous Coward · · Score: 0
    19. Re:Utopia? by feronti · · Score: 1

      And you probably either are using far more disk space than you should be (because the tables aren't normalized properly) or you have far more code than you should (because you have to work around the fact that the database won't do it for you).

      Granted, I've written code for MySQL and PHP, and it doesn't use those things either, but I've also seen where my life would be much easier if they were there... for example, replacing a complicated query with a lot of joins with a view that did the same thing, so that from the point of view of the application, my nice, normalized database design was really one flat table. Or replacing an insert that took several queries with a stored procedure that did the same thing in one precompiled query. Or deleting an entry in one table, and through foriegn keys, having all the related entries deleted automatically. So, just because you have managed to not use them up 'til now, doesn't make them useless.

      Most of the time when people think they don't need something, it's because they've been working around its absence for so long, they have no idea how it would make their lives easier. I would recommend you actually learn a little about databases before trying to argue about what features are needed in an RDBMS. At the very least, learn the definitions. Otherwise making an argument that 99% of the time people don't need these features makes you look like a fool. And the MySQL fanboys who make these inane and worthless arguments really irritate me.

  8. Meanwhile, back in 3.23.x land... by polyhue · · Score: 5, Insightful

    A more impressive feat would be to get ISPs who do lots of low-end hosting to actually update from the 3.23.x series for starters... which would probably mean Redhat, Debian, etc. need to ship it. So those users will be seeing this version in... 2008 maybe. 2012. Right after Longhorn comes out.

    1. Re:Meanwhile, back in 3.23.x land... by drspliff · · Score: 5, Insightful

      Thats because a lot of people who 'run web hosting companies' know jack about administration, security and what their users really want, and are just jumping on the internet business bandwaggon.

      It's sad to say, but now with products like Helm, Ensim Webppliance etc. anybody can run a hosting business.

      Anyway, to get to my point (and the end of a rant), because there are a lot of webhosts detatched from 'all that funny dos stuff at the backend' upgrading to newer versions of services etc. can be non-trivial if there isn't a button on their control panel to do it.

      If you have any spare time and want to see for yourself, go traul through the CPanel message boards for threads you'd expect from a unix green-horn, but are actually coming from admins of supposidly 'reliable and respected' hosting companies.

      While it will be a few months into the mysql 5 general release before you start seeing it being used in the hosting industry (I know several people who are just switching over from 4.0 to 4.1), the benifits for developers will be great (in the long run).

      I expect to see a new batch of commercial and open source development spured by the growing stability of mysql 5, but also an increase of help requests from newcomers to web development.

      Btw: I think there should be a new moderator option.. Rant -2

    2. Re:Meanwhile, back in 3.23.x land... by spectrm · · Score: 2, Insightful

      So those users will be seeing this version in... 2008 maybe. 2012. Right after Longhorn comes out. I think you're being a little too optimistic about Longhorn

    3. Re:Meanwhile, back in 3.23.x land... by Blackknight · · Score: 1

      If it works why switch? MySQL 3.23 is very stable and works for most purposes.

    4. Re:Meanwhile, back in 3.23.x land... by jaylee7877 · · Score: 4, Informative

      RedHat Enterprise Linux 4.0 ships with MySQL 4.1 (and the server is fully supported unlike RHEL3). Fedora Core 4test1 ships with MySQL 4.1. wish granted.

    5. Re:Meanwhile, back in 3.23.x land... by amram9999 · · Score: 2, Interesting

      If something isn't broke, why break it by upgrading? MySQL is constantly changing little details about how their DB works... take a look at a random page in their documentation and you will see notes like "in 4.x.x we changed this" all over the place. 5.0 sounds like it will be a very feature rich database (Yay, triggers!) but it will be a probably be a pain to upgrade. Little quirks that I've relied upon will no longer work that way. Maybe after this release, things will start to stabilize. Doubtful though.

    6. Re:Meanwhile, back in 3.23.x land... by Anonymous Coward · · Score: 0

      The hosting company where I work rolled a new 4.1 server within weeks of its release, and offer it as an option for anyone who requests it(while the old 4.0.18 server is still being filled with people who don't give a crap)

      I'm sure once 5 is released, we'll push out a server with that because the demand will be huge

    7. Re:Meanwhile, back in 3.23.x land... by Anonymous Coward · · Score: 0

      (work at a hosting company)

      We're not upgrading existing 3.23 and 4.0.x servers to 4.1 or 5, because in all likelihood shit would break and customers would be unhappy. You say "switching over" as if they are upgrading the existing machines, but in general this is a really bad idea

      If you wait to deploy until your next db machine rolls, then yes in many cases it will be a matter of months, except for the much larger hosting companies

    8. Re:Meanwhile, back in 3.23.x land... by polyhue · · Score: 1

      Good to hear about RHEL 4. How about Debian stable? (hahahaha! joking...)

  9. MySQL by Scoria · · Score: 5, Funny

    Store procedures. Triggers. Views. It's like it'll be a real DB!

    So, the Slashdot editor, whose own Web site uses MySQL, is actively trolling other MySQL users in the article summary? Hilarious!

    --
    Do you like German cars?
    1. Re:MySQL by DrWhizBang · · Score: 4, Funny

      As a MySQL user, I believe he is entitled to troll. I use MySQL myself, and I can confirm it is indeed as trollworthy as it is useful.

      --
      Schrodinger's cat is either dead or really pissed off...
    2. Re:MySQL by wootest · · Score: 2, Funny

      Self critisism is good. Even I - ever the daft prick - know that.

    3. Re:MySQL by Anonymous Coward · · Score: 0

      Then why don't you pony up a few bucks for Oracle or DB2, ya cheap bastid?

    4. Re:MySQL by Anonymous Coward · · Score: 0

      You're a draft pick? In what sport?

    5. Re:MySQL by tyrotyro · · Score: 1

      Even I - ever the daft prick - know that.

      I had to read that twice, the first time I saw it as draft pick

      --
      Here's a guy who enjoys his job: The UPS Man
    6. Re:MySQL by wootest · · Score: 1

      That works too, I guess. ;)

    7. Re:MySQL by cayenne8 · · Score: 1
      " Then why don't you pony up a few bucks for Oracle or DB2, ya cheap bastid?"

      No need for that.....MySQL has its uses, but if you're wanting something a little more robust and Oracle-like....you can get PostgreSQL for free....

      --
      Light travels faster than sound. This is why some people appear bright until you hear them speak.........
    8. Re:MySQL by no+reason+to+be+here · · Score: 1

      Makes sense to me. The /. editor trolls the MySQL users, who then rush to MySQL's defense. Then, the next time someone asks the /. editor why they use MySQL, even though it lacks X, Y, and Z, they have a bunch of ready responses in the form of a bunch of +5 Insightful or +5 Informative posts from this thread.

    9. Re:MySQL by operagost · · Score: 1

      Boy, the offseason does suck.

      --

      Gamingmuseum.com: Give your 3D accelerator a rest.
    10. Re:MySQL by sconeu · · Score: 1

      But Opening Day is next week!

      Go ANGELS!

      --
      General Relativity: Space-time tells matter where to go; Matter tells space-time what shape to be.
    11. Re:MySQL by Anonymous Coward · · Score: 0

      No, mysql is far more trollworthy than it is useful.

  10. What about foreign keys? by eibon · · Score: 2, Interesting

    TFA doesn't mention anything about foreign key relationships, but it sounds more than a little weird to implement views, triggers and stored procs before FKs. Anyone know?

    1. Re:What about foreign keys? by drspliff · · Score: 2, Informative

      MySQL already has foreign key support when using InnoDB tables. And from what i've seen it's very stable.

    2. Re:What about foreign keys? by Anonymous Coward · · Score: 0

      Look at the InnoDB option for MySQL. RI (aka FK) existed in 4.0 releases.

      HAND, HTH, STFU & RTFM

    3. Re:What about foreign keys? by fishdan · · Score: 4, Informative

      Yes. http://dev.mysql.com/doc/mysql/en/ansi-diff-foreig n-keys.html has all you ever want to know about foreign keys and mysql

      --
      Nothing great was ever achieved without enthusiasm
    4. Re:What about foreign keys? by Anonymous Coward · · Score: 1, Interesting

      I'd say this was a little more pertinent.

      mysql> INSERT INTO phantom2 VALUES (128);
      Query OK, 1 row affected (0.00 sec)

      mysql> SELECT * FROM phantom2;
      +-----+
      | id |
      +-----+
      | 127 |
      +-----+
      1 row in set (0.00 sec)
    5. Re:What about foreign keys? by LurkerXXX · · Score: 5, Insightful
      Yea, they have foreign keys! WhooHoo! Unfortunately, they didn't bother implementing them correctly.

      The same way that MySQL has the constraints feature on columns. But it also isn't implemented correctly. If you insert out-of-bounds data, MySQL silently changes it to a number that it likes. Features implemented half-assed like that aren't really good features.

      If they implement views, triggers, and stored procedures in the same crappy way, MySQL is still going to be a crappy DBMS. It will have lots of broken features which will still make it an unsafe place to store data that you care about.

      As far as a reference for just some of the problems with their foreign key implementation, and as pointed out elsewhere in the thread, and found here...: http://sql-info.de/mysql/referential-integrity.htm l%233_5

      3. Foreign Keys and Referential Integrity Foreign keys are an essential part of any relational database. In MySQL's foreign key support has been added on through the InnoDB extension and is continually being improved. However some aspects of the foreign key implementation, especially in combination with other areas of functionality, may cause unexpected problems.

      3.1. ALTER TABLE ... SET NOT NULL If a NOT NULL constraint is applied to a column, MySQL will set any rows containing NULL in that column to 0 (in integer or numeric columns) or '' ( empty string, in character columns). No warning is given.

      In certain circumstances - particularly if the column contains character data - this may be quite practical, saving you an entire UPDATE tbl SET col = '' WHERE col IS NULL.

      But - imagine the column is an integer foreign key. And the column it references does not contain a zero. Hmmm...

      mysql> CREATE TABLE exmpl5 (
      id INT NOT NULL,
      val TEXT,
      UNIQUE (id) ) TYPE=InnoDB;
      Query OK, 0 rows affected (0.07 sec)

      mysql> CREATE TABLE exmpl6 (
      id INT,
      blah TEXT,
      INDEX(id),
      CONSTRAINT id_fkey FOREIGN KEY (id) REFERENCES exmpl5(id) ON DELETE NO ACTION ) TYPE=InnoDB;
      Query OK, 0 rows affected (0.04 sec)

      INSERT INTO exmpl5 VALUES(1, 'test');
      INSERT INTO exmpl6 VALUES(1, 'foo');
      INSERT INTO exmpl6 VALUES(NULL, 'bar');
      INSERT INTO exmpl6 VALUES(0, 'oops'); ERROR 1216: Cannot add a child row: a foreign key constraint fails

      SELECT * FROM exmpl6;
      | id | blah |
      | 1 | foo |
      | NULL | bar |
      2 rows in set (0.00 sec)

      So far so good - this proves the foreign key constraint is being taken seriously. Now the fun starts:

      ALTER TABLE exmpl6 CHANGE id id INT NOT NULL
      Query OK, 2 rows affected (0.12 sec)
      Records: 2 Duplicates: 0 Warnings: 1

      INSERT INTO exmpl6 VALUES(NULL, 'bar');
      ERROR 1048: Column 'id' cannot be null

      INSERT INTO exmpl6 VALUES(0, 'oops');
      ERROR 1216: Cannot add a child row: a foreign key constraint fails

      This is perfectly normal behaviour for a well-adjusted database. Now let's have another look at what the table contains:

      select * from exmpl6;

      | id | blah |
      | 1 | foo |
      | 0 | bar |
      2 rows in set (0.00 sec)

      I don't recall successfully inserting the zero in that second row - do you? Perhaps I secretly inserted a row into exmpl5 with 'id' set to 0?

      SELECT * FROM exmpl6 e6 LEFT JOIN exmpl5 e5 ON e5.id=e6.id;

      | id | blah | id | val |
      | 1 | foo | 1 | test |
      | 0 | bar | NULL | NULL |

      Err, no. All I can think of is that the foreign key was arrested as a potential terrorist suspect while I was seeing what other databases did given the same set of queries.

      (Note: MySQL 4.1.7 raises a warning after the ALTER TABLE statement above with the cryptic message Data truncated for column 'id' at row 2.)

    6. Re:What about foreign keys? by OwlofDoom · · Score: 1

      My favourite quote from the MySQL manual is from the page on foreign key constraints.

      Starting from MySQL 3.23.50, InnoDB allows you to add a new foreign key constraint to a table by using ALTER TABLE [...] Starting from MySQL 4.0.13, InnoDB supports the use of ALTER TABLE to drop foreign keys.

      Prior to 4.0.13 the official way to drop a foreign key was to drop the table and recreate it from scratch (!). Of course, you can't actually drop the table without disabling foreign keys, and that feature was first supported in 3.23.52.

      It's funny looking back on it, but it wasn't when I lost weeks of my life and most of my hair with 3.23.51.

    7. Re:What about foreign keys? by Anonymous Coward · · Score: 0
      This is out of my domain, but I was trying to following along with your example, and I had a few questions...

      In your example, you insert a row into exmpl6 that contains a ID: NULL and Val: bar. Then, you put a constraint on ID, disallowing NULLs. Finally, you attempt to insert a new row with ID: NULL and Val: bar. at the point that you set the constraint, mysql silently updated the existing row with NULL ID, changing the ID to zero.

      My questions are:

      1) what is the more reasonable way to implement the constraint? should it reject the attempt to constrain ID, since out-of-bounds data exists?

      2) shouldn't the person setting the constraint check prior to doing so, to verify that no out-of-bounds data exists in the table, and taking some appropriate course of action where it does exist?

      3) in real life, wouldn't a similar restriction on the referenced field be implemented in order for this example to make sense?

    8. Re:What about foreign keys? by Anonymous Coward · · Score: 0

      File a friggin bug report then. Contribute instead of complain.

    9. Re:What about foreign keys? by LurkerXXX · · Score: 1
      1) Yes, as soon as you try to make the constraint it should throw an error telling you that you are trying to disallow NULLS on a column that already contains NULLS.

      A database should NEVER simply change data to what it 'thinks' should be there. It should always throw an error and let you either decide what the value should be changed to, or abort the modification all togeather.

      2) This is not necessary with a full featured RDBMS. ALL the mature RDBMS's will tell you if you are trying to do such a thing. That saves a ton of time running checks by hand. The database should just do it for you.

      3) I'm not sure what you mean. The linked table exmp15 already has NOT NULL set for ID if that is what you are talking about.

    10. Re:What about foreign keys? by Anonymous Coward · · Score: 0

      I don't really see how you can get this, from my trying to follow along, it won't even let me create the constraint:

      mysql> CREATE TABLE parent ( id INT NULL UNIQUE );
      Query OK, 0 rows affected (0.00 sec)

      mysql> CREATE TABLE child ( childid INT NOT NULL, FOREIGN KEY fk1 (childid) REFERENCES parent(id) ON DELETE SET NULL);
      ERROR 1005 (HY000): Can't create table './tmp/child.frm' (errno: 150)

      050331 0:14:29 Error in foreign key constraint of table tmp/child:
      FOREIGN KEY fk1 (childid) REFERENCES parent(id) ON DELETE SET NULL):
      You have defined a SET NULL condition though some of the
      columns are defined as NOT NULL.

    11. Re:What about foreign keys? by Rich0 · · Score: 1

      I think his point is that this isn't just an isolated incident. And MySQL is billed as a production-ready RDBMS which probably shouldn't be considered such (unless you don't need data integrity - maybe a database used to do analyses on static data or something like that where you only run read-only queries).

      Originally the MySQL devs advertised such things as transaction support as being overrated features. That is basically opening yourself up to this kind of abuse.

      Imagine if Linus said that buffer overflows are overrated, and that no care would be taken to prevent them in the kernel. Users shouldn't be feeding bad data to the OS anyway. Fast forward a few years and Linus has time to implement buffer overflow protection, but surprise his patchwork is buggy and the kernel is full of holes. While it would be nice to file bug-reports when the holes are found, Linus would have opened himself up to criticism for not taking security to heart in his main design.

      MySQL is getting there, but it isn't there yet. Many of the I-told-you-so'ers are probably voicing these concerns since the DB would be much more reliable if it things like ACID-compliance weren't considered nice-to-haves on design day 1.

      FYI - I use mysql. (I'd probably prefer postgres, but many FOSS packages do not support it, and so I'm stuck with mysql until they do, by which time mysql might be good enough to stick around with...)

      Most people who don't care about ACID probably haven't worked with enterprise-class databases. When you have millions of records in a table you can't afford to discover a bug that might have been changing some indeterminate number of records ever so slightly over the previous 18 months. Application bugs are bad enough - but if the RDBMS hiccups you're usually in really big trouble. Even trying to analyze these problems once you know what happened is horrible - you can't just browse through the data - you need to almost handle it statistically. Usually you don't fix the problem - you mitigate it. Unless you want to rollback a year's worth of work your backups are often useless.

      Sometimes the DB just has to work. 5 9's aren't good enough when your dataset has 8 zeros...

  11. Sounds like troube brewing by instantkarma1 · · Score: 4, Insightful

    Let's see....throwing everything and the kicthen sink into one release can't possibly affect stability, right?

    I love MySQL, and use it, as well as PostgreSQL and Oracle, depending on the project. However, if stability or data integrity becomes an issue because of all these feature additions allowing them to play with the big boys, I'll drop MySQL in a heartbeat.

    If your database isn't reliable, it nothing else really matters.

    1. Re:Sounds like troube brewing by Daniel+Dvorkin · · Score: 1, Insightful

      It seems to me that PostgreSQL and MySQL have been following different paths converging on the same goal (a powerful, usable, stable DBMS): the PostgreSQL philosophy is to throw in everything and the kitchen sink and then make it work right, whereas the MySQL approach is to add things one at a time, making sure that everything works right from the beginning. It's possible that the endless sniping has caused the MySQL team to abandon its careful development process, but I don't see any evidence of that so far.

      I've used MySQL and PostgreSQL both extensively over the years, as well as working with commercial DBMSs including Oracle and SQL Server. MySQL's lack of features has certainly been a frustration, but I keep coming back to it because what it does, it does very very well. If the MySQL team has managed to produce a "real" DBMS that works as well as previous versions, then it will be damn near perfect.

      --
      The correlation between ignorance of statistics and using "correlation is not causation" as an argument is close to 1.
    2. Re:Sounds like troube brewing by Anonymous Coward · · Score: 1, Insightful

      the MySQL approach is to add things one at a time, making sure that everything works right from the beginning.

      I don't think that's true at all. The MySQL team have a cavalier attitude to data integrity. It's more like "make it store data, then make it fast, then add a feature people are asking for", with data integrity coming... well, never.

      The PostgreSQL team, on the other hand, have "make it store data correctly, then add a feature people are asking for, then make it fast".

      If this were something like KDE or GNOME we were talking about, then I would have no real complaint about MySQL developers' attitudes. But this is a DATABASE! It's whole purpose is to store data. If it can't do that reliably, why on earth should anybody treat it as anything other than a student's hobby project?

    3. Re:Sounds like troube brewing by mikaelhg · · Score: 2, Informative

      MySQL isn't free as in free beer anymore, for non-GPL projects, now that they have GPLd their JDBC and ODBC drivers.

    4. Re:Sounds like troube brewing by Stunning+Tard · · Score: 1

      I'm probably underestimating the complexity of implementation, but triggers aren't much more than stored procs called automatically on insert, update, delete.

    5. Re:Sounds like troube brewing by Osty · · Score: 5, Insightful

      the MySQL approach is to add things one at a time, making sure that everything works right from the beginning. It's possible that the endless sniping has caused the MySQL team to abandon its careful development process, but I don't see any evidence of that so far.

      You forgot the most important part: Tell everybody how they don't need a feature, and how they can work around it with application code, and how adding that feature will make MySQL suck to the high heavens, and you really don't want that now, do you? Then, when they finally do add the feature, act like they've never said anything bad about it before. The endless sniping at the MySQL team is completely justified by their cavalier attitude towards proper RDBMS design, and their insistence that the programmer can "easily" work around their incompetent RDBMS design in his application code. If that sniping has encouraged the MySQL to abandon its "careful development process" in favor of turning MySQL into a real RDBMS, then mission accomplished.

    6. Re:Sounds like troube brewing by Anonymous Coward · · Score: 2, Insightful

      the PostgreSQL philosophy is to throw in everything and the kitchen sink and then make it work right, whereas the MySQL approach is to add things one at a time, making sure that everything works right from the beginning.

      You got it all backwards.

      PostgreSQL is about correctness first and performance second. Its speed lagged a little behind MySQL in the early years, but now performs as well or better than MySQL (at least if you want ACID-compliance from MySQL).

      MySQL otoh wasn't even a real database, merely a storage API with an SQL interface. Everything and the kitchen sink, as you say it, are required for most real work, and I'd much rather go for a product with these features designed correctly from the start than one which is adding them on top in some ad-hoc fashion..

    7. Re:Sounds like troube brewing by tzanger · · Score: 1

      You gotta be fucking kidding me.

      MySQL's the fast but clumsy child, whereas Postgres is the slow but methodical child. MySQL tacks on features and calls them stable yet you can't trust your data to it. Postgres is ver conservative out of the box but each release includes significant speed increases.

      MySQL is very fast for super-simple selects and inserts. Throw anything more at it and it crawls. Postgres, on the other hand, is pretty conservative in terms of memory usage but once you increase the shared memory allocation and turn off the forced-fsync it handles much faster than MySQL for even slightly complex queries and will outstroke MySQL handily as you pile on connections and complex queries.

      MySQL's not had the features because a) they slow the DB down and b) their entire philosophy is "we just store data. You make sure it's good before you give it to us or we'll make it good in our own way and not tell you."

    8. Re:Sounds like troube brewing by mpcooke3 · · Score: 1

      whereas the MySQL approach is to add things one at a time, making sure that everything works right from the beginning...

      Yeah thats right you heard it here first! MYSQL hasn't had proper data integrity gurantees/ACID-compliance for years because they were trying to make sure "everything worked right".

      lol

    9. Re:Sounds like troube brewing by ahmusch · · Score: 1

      It's not an issue with complexity of implementation, it's an issue with systems architecture.

      The archetypical application developer views his application as the source of data entry and validation. As such, business rules and data validation belong there, because he understands them. Sure, some other application may use the same data, but it's got its own application developer and its own application doing the same thing, only probably differently.

      The database administrator, on the other hand, knows that business and validation rules for data come in two forms: simple and complicated. Simple is things like data typing and constraints, whether relational (parent-child) or check (list-of-value or range). Complicated means conditional logic, and traditionally, conditional logic means code in an external application. However, the DBA wants the business and validation rules applied *regardless* of input source. Triggers provide that.

      After all, we almost never use the fancy application for data entry or manipluation. We use our query tool, whether SQL*Plus or QMF or SPUFI or Command Center or Toad or Access or ...

      Well, not Access.

      My point is, there's more than one way into the database, and logic about the data belongs where the data lives, so that no matter how the data gets into the database, the same rules apply to it. (Sure, triggers and constraints can be disabled. But then it's the DBA's fault for disabling them, as opposed to the DBA's responsibility and some ill-behaved application's fault.)

      Presentation logic belongs in the application. Everything else belongs in the database.

    10. Re:Sounds like troube brewing by Anonymous Coward · · Score: 0

      Everything is benchmarked, any new feature should not slow down anything already existing (that will not be using this new featureset), or it'll not make it into a release.

      For example, a trigger should not slow down inserts/updates on a table with no triggers defined on it.

      Just porting an application from, say 4.1 to 5.0 should only be faster (the optimizer has become a lot better in 5.0 with some new tricks as well).

  12. Other DBs by drivinghighway61 · · Score: 4, Interesting

    This is certainly good news for MySQL, but many open-source advocates forget about other open-source DBs like PostgreSQL, which has had these features for a while. But competition is always good, and it's good to see MySQL stepping up its value.

    1. Re:Other DBs by Daniel+Dvorkin · · Score: 1

      We can't forget about PostgreSQL, because any mention of MySQL on /. inevitably brings forth a flood of "MySQL 5vX0rZ PostgreSQL r0X0Rz" trolls. Not saying you're one of those trolls, you understand, but I honestly don't think there's any lack of awareness of PostgreSQL in the F/OSS DB world, at all.

      --
      The correlation between ignorance of statistics and using "correlation is not causation" as an argument is close to 1.
    2. Re:Other DBs by Anonymous Coward · · Score: 0

      no one forgot about them, with people like you constantly bring it up.

    3. Re:Other DBs by TheRaven64 · · Score: 1
      SQLite is often a better bet for applications where you might be considering MySQL. It's not an RDBMS (but then, MySQL isn't really), but it provides a high performance, ACID-compliant (unlike MySQL), SQL interface to disk files.

      Oh, and it's even more free than PostgreSQL (public domain - as free as they come).

      --
      I am TheRaven on Soylent News
    4. Re:Other DBs by Anonymous Coward · · Score: 0

      How could anyone forget about PostgreSQL, when PostgreSQL fan-boys mention it everytime anyone mentions "database"?

  13. MySQL is not a DB by Anonymous Coward · · Score: 0

    It's a DBMS.

  14. Sorry to say this, but by chalkoutline · · Score: 0
    --
    There are 2 types of people in the world, those who find that stupid binary joke funny, and those who don't.
  15. Comes with a price by highcon · · Score: 5, Insightful

    And then suddenly, MySQL isn't quite so fast. It used to be, if you need a speedy db and don't need all the fancy features (like integrity) you choose MySQL. If you want to sacrifice a little speed but need features, you got PostgreSQL. Products should stick to what they're good at.

    --
    You can either complain, or do nothing. You don't get both.
    1. Re:Comes with a price by silverbolt · · Score: 1
      ..... and don't need all the fancy features (like integrity)...

      Is integrity a fancy feature ? Wow !

      If data integrity is not present, I don't want that db near my application ever ...

    2. Re:Comes with a price by lawpoop · · Score: 1
      If you want speed and don't care about some integrty features, install or keep 4.1 or 3.23. If you already have a mysql installation and want enterprise level features, but don't want to learn/pay for a new system, install 5.x.

      Bottom line, 3.23 and 4.1 are stuck to what they are good at.

      --
      Computers are useless. They can only give you answers.
      -- Pablo Picasso
    3. Re:Comes with a price by 2starr · · Score: 1

      Do you know this or are you guessing? Since it just went BETA, I doubt you have any real numbers about the performance difference in release code.

      --

      "Let your heart soar as high as it will. Refuse to be average." - A. W. Tozer

    4. Re:Comes with a price by Anonymous Coward · · Score: 0

      Plus 500 EUR per server.

      https://shop.mysql.com/?sub=ac&pd_no=68

      Unless, of course, your project is GPL, in which case you can use it for free, but ever since MySQL bought the JDBC and ODBC driver rights and changed their license from LGPL to GPL to make more money, non-GPL projects are better off using PostgreSQL which has no small corporate backer eternally on the lookout for the quick buck.

    5. Re:Comes with a price by mrpuffypants · · Score: 1

      Yea! Once a developer releases a fast application they should NEVER patch or add features to it!

      Damnit, it's fast now, why do they need to add "features"??!?!

      So, in closing, MySQL should have never gone beyond v1.0 because it was fast and that's all that ever matters!

    6. Re:Comes with a price by Robert+The+Coward · · Score: 1

      More likely the will leave isam as the fast and feature free DB and give you xxxx for store produceure with additional changes. or simple update inno databases to support that. So you will have both in one package and get to choice based on the needs for this project.

    7. Re:Comes with a price by tzanger · · Score: 1

      If data integrity is not present, I don't want that db near my application ever ...

      Then you don't want MySQL. Their philosophy is that if the data doesn't fit, they'll make it fit and not tell you (great philosophy, eh?). They say that you should do all the data checking in the application. Great idea -- not. WTF's the point of table constraints?

    8. Re:Comes with a price by Anonymous Coward · · Score: 0

      Integrity is a bug, not a feature :)

      I believe he's talking about the features that ensure integrity, but must actually be used. Like rollback. You can just do a series of inserts and hope your app doesn't crash in the middle. Or you can use integrity features to make sure it either finishes or aborts, leaving the database integrity whole.

    9. Re:Comes with a price by Frank+T.+Lofaro+Jr. · · Score: 1

      Berkeley DB (DBM files) is still available

      --
      Just because it CAN be done, doesn't mean it should!
    10. Re:Comes with a price by voisine · · Score: 1

      I haven't looked at it, but I assume these new features can be specified on a table by table basis, so if you don't need them, you get the performance benifit of not having them, like innodb vs standard tables now.

  16. 10 years of critism by Anonymous Coward · · Score: 1, Funny

    Resolved by just switching to the postgres source instead.

    1. Re:10 years of critism by Foolomon · · Score: 1

      They are going to be calling this new version "CherrySQL".

  17. "Like a real DB" by Space+cowboy · · Score: 3, Informative

    Considering that MySQL probably runs more databases than all the others put together (it being the poster-child for most OSS projects involving DB's), I think that's a little harsh. Sure it's not ACID, but it does well enough for most purposes...

    As a data-point:

    simon% mysqladmin ver
    mysqladmin Ver 8.40 Distrib 4.0.18, for suse-linux on x86_64
    Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB
    This software comes with ABSOLUTELY NO WARRANTY. This is free software,
    and you are welcome to modify and redistribute it under the GPL license

    Server version 4.0.18-Max
    Protocol version 10
    Connection Localhost via UNIX socket
    UNIX socket /opt/mysql/mysql.sock
    Uptime: 5 days 21 hours 32 min 52 sec

    Threads: 2 Questions: 103591631 Slow queries: 101 Opens: 181809 Flush tables: 1 Open tables: 64 Queries per second avg: 203.291 ... the only reason it's only 5 days is a server upgrade, but its performance seems pretty "real" to me :-)

    Simon

    --
    Physicists get Hadrons!
    1. Re:"Like a real DB" by tacocat · · Score: 1, Funny
      Considering that MySQL probably runs more databases than all the others put together (it being the poster-child for most OSS projects involving DB's), I think that's a little harsh. Sure it's not ACID, but it does well enough for most purposes...

      As does a spreadsheet.

      As does Windows.

      As does my right hand...

    2. Re:"Like a real DB" by Tim+C · · Score: 1

      Sure it's not ACID

      And therefore, to my mind, not a real database. It's certainly not something I'd want to entrust any of my data to; YMMV, of course.

      As others have pointed out, no-one has ever criticised mysql for being slow, but for lacking features that some of us old sticks in the mud consider to be utterly essential in an even half-way serious RDBMS.

    3. Re:"Like a real DB" by Anonymous Coward · · Score: 0

      The # of instances of an RDBMS is a valid measure, but so is the aggregrate data contained, in which case I suspect MySQL is significantly behind Oracle and DB2.

  18. Who's still using mysql? by grahamsz · · Score: 3, Interesting

    Seems like sqlite or hsqldb make more sense on the low end and as always there are better (though often more expensive) options on the high end.

    It's great for prototyping things, but i just can't imagine running something critical on it.

    1. Re:Who's still using mysql? by CDarklock · · Score: 2, Interesting

      I've built three enterprise-class web systems on MySQL and I'm in the middle of building a fourth.

      In the early days, it was hard to work around the lack of stored procedures, triggers, and views... I was coming from an Informix background with some Oracle experience... but nobody I worked for wanted to license one of those for web stuff at the time. And now that MySQL is about to add the stuff I used to wish for, I actually don't really need it -- I've long ago gotten over the lack of these features.

      So I'm primarily going to use the 5.0 release as an excuse to demand a week or two of feature-freeze for hack cleanup, under the guise of migration testing.

      --
      Microsoft cheerleader, blue flag waving, you got a problem with that?
    2. Re:Who's still using mysql? by dynamol · · Score: 0

      Well I work for a fortune 200 drug discovery company and we store over 5 million compounds along with various properties in a MYSQL database....oh and we even have ORACLE onsight. MYSQL is simply easier to get up and running and it is totally usefull for a good many applications. Granted it might not work for a web sight like ebay or amazon, but then I only work in the realm of chemistry.

    3. Re:Who's still using mysql? by stang7423 · · Score: 1

      It's great for prototyping things, but i just can't imagine running something critical on it.

      What like Slashdot?

      You may say its not critical but can you imagine the conniption fits hundreds of thousands of nerds would have if they couldn't get their slashdot

    4. Re:Who's still using mysql? by Keamos · · Score: 2, Informative

      Okay, let's see...

      Livejournal runs on mySQL (with memcached), and has had 970k users update their LJs in the past week. Assume that on average, each journal gets 10 views in that one week (it's probably higher, as there are some really large communities). That's 9.7 million page views in a week, or ~ 40 million a month. Plus the people who just browse and don't have an account.

      Slashdot itself uses mySQL..I have no clue about the pageviews, though I know it's in the millions a month.

      Google is a mySQL customer. As is Dow Jones, the people that publish the Wall Street Journal and its online editions. So is the NYSE, NASA, the US Census Bureau, everyone's beloved AOL, the Associated Press, Texas Instruments, among plenty others.

      Just because mySQL doesn't work for your project doesn't mean it doesn't for others. Not to mention that it's free and ships with almost every major Linux distro out there.

    5. Re:Who's still using mysql? by Patoski · · Score: 1
      Dark Age of Camelot a popular online RPG uses MySQL to run their game server DB.

      "Because running Camelot would require a considerable amount of data management, we initially planned on using Oracle to store account and character information. However, Oracle's quoted license fee of more than $900,000 quickly removed them from contention. Once we got over our shock and amusement at Oracle's pricing, we turned to a Linux-based freeware solution, MySQL, to manage Camelot's data storage, which so far has worked admirably.

      Everyone developing games should at least investigate open source solutions for their servers. It's saved us a pile of money and has been stable and reliable. In fact, prior to Camelot's launch, it was axiomatic that MMORPGs were unstable and prone to crashing during their first month or so."
      - Gamasutra
      --
      G. Washington on Government "it is force. Like fire, it is a dangerous servant and a fearful master."
    6. Re:Who's still using mysql? by MP3Chuck · · Score: 1

      deviantART does. 1+ million users, 11+ million submissions, hundreds of millions of comments & forum posts, etc... all scaled across dozens of servers.

    7. Re:Who's still using mysql? by urbaneassault · · Score: 2, Informative

      Yeah, especially not something with millions of queries in a large cluster environment.
      Sabre has been using mySQL to power their GDS backend, which also includes Travelocity, for several years now.

  19. Dupe by bdigit · · Score: 5, Informative

    Wow Taco, all I did was search mysql and bam

    http://developers.slashdot.org/article.pl?sid=05/0 3/28/1856255&tid=221&tid=8/

    Expect more hatemail.

    1. Re:Dupe by unixbum · · Score: 1

      RTFA, well actually the submission in this case... this is a ZDNet Review, not a release announcement.

    2. Re:Dupe by FortKnox · · Score: 1

      Wow... this, then the GTA multiplayer (which was a dupe from 2003), and the whole debacle last night where he actually yelled in his comment line. Maybe he should just hand over his editing privleges for the day. He's mentioned he's sick in his JE... maybe thats affecting his judgement?

      --
      Good quote, too many chars. Seriously, the slashdot 120 char limit sucks!
    3. Re:Dupe by AceCaseOR · · Score: 1

      Well, I didn't RTFA with the GTA Multiplayer article, but perhaps it's a complete version of the multiplayer (possibly set up to allow players to go on missions as well).

      --
      Zagreus sits inside your head, Zagreus lives among the dead, Zagreus sees you in your bed and eats you in your sleep.
    4. Re:Dupe by Anonymous Coward · · Score: 0

      I don't know... Taco is a dumbass, but timothy is pretty gay

    5. Re:Dupe by ArsonSmith · · Score: 1

      I'm sure glad they reposted this because I missed it the first time. I'd have missed out on a good article if it would have went un-duped.

      --
      Paying taxes to buy civilization is like paying a hooker to buy love.
    6. Re:Dupe by Anonymous Coward · · Score: 0
      Dude, good point! We should make sure Slashdot dupes ALL the good articles, just in case somebody missed one.

      Oh, but we don't know which articles are good without an article scoring system. Well, no problem, let's just dupe all the articles.

      Fuck, you people are idiots.

  20. Most important evar!! by Dachannien · · Score: 4, Funny

    How do you copy and paste verbatim from the linked article, but then spell 'criticism' wrong?

    1. Re:Most important evar!! by maxjenius22 · · Score: 1

      very carefully?

  21. Bugfest by Doc+Ruby · · Score: 3, Insightful

    And it will take 10 more years of use to find and address all the bugs in this huge, overdue upgrade. One reason the persistent incremental changes in open-source is better for users, is that we get started on finding and fixing bugs earlier, without a dizzying array of them from which to choose.

    --

    --
    make install -not war

    1. Re:Bugfest by DogDude · · Score: 2, Interesting

      I agree. Especially with something as critical as database software, I can tell ya' that if the final version comes out, say, this summer, that I won't even consider looking at MYSQL for another few years.

      --
      I don't respond to AC's.
    2. Re:Bugfest by Anonymous Coward · · Score: 0

      The first 5.0 release with those features has been out since December 2003.

  22. values by maxjenius22 · · Score: 2, Interesting

    So it doesn't randomly pick a value when the user tries to insert something invalid???

    Why would I switch from PostgreSQL now?

    1. Re:values by maxjenius22 · · Score: 2, Insightful

      Honestly, why would anyone use mysql when it ignores foreign key constraints and corrupts data by inserting arbitrary values? What advantage does it have over postgres, which is also free and actually supports data integrity?

  23. Everything in one release? by bovinewasteproduct · · Score: 2, Insightful

    I don't know about you, but the thought of someone adding that many core features at one time scares me. They should have renamed it and called it version 1.0, because thats what it really is....

    Plus, are they following the ANSI standards for the features that have them? If so, they are going to break compatiability with prior versions.
    I would wait until atleast version 5.1 before even thinking about using it.

    BWP

    1. Re:Everything in one release? by SQLz · · Score: 1

      You don't add all the features at one time, it has taken years.

  24. Store procedures are somewhat limited by Anonymous Coward · · Score: 0

    They currently only work with Kmart.

  25. How about Check Constraints.. TO_DATE.. etc by myrdred · · Score: 1

    Are those also present? I know the latest stable release lacks many things... just how many are being added in 5.0? The article seems to be sparse on details. Anyone have a more detailed feature-list of MySQL 5?

  26. Errors in MySQL by Anonymous Coward · · Score: 1, Informative

    I wonder if they will have thought of correcting a few pertinent errors in this new release ...

  27. Real DB? by sulli · · Score: 4, Funny
    It's like it'll be a real DB!

    Then what will Slash use?

    --

    sulli
    RTFJ.
    1. Re:Real DB? by dickeya · · Score: 1

      I didn't realize he had time to administer DBs outside of Velvet Revolver.

    2. Re:Real DB? by wootest · · Score: 2, Funny

      Post-it notes on a big wall, rearranged by monkeys.

    3. Re:Real DB? by multipartmixed · · Score: 5, Funny

      Why, version 3.2, of course -- to match the version of HTML they are almost confirming to.

      --

      Do daemons dream of electric sleep()?
    4. Re:Real DB? by SmokeHalo · · Score: 1

      Sure, he uses MyGTR.

      --
      I'm not good in groups. It's difficult to work in a group when you're omnipotent. - Q
    5. Re:Real DB? by wootest · · Score: 1

      I have a hard time imagining them conforming to *binary*, for gods sake.

    6. Re:Real DB? by ArsonSmith · · Score: 3, Funny

      Hopfully a stored procedure "Find Dupes"

      --
      Paying taxes to buy civilization is like paying a hooker to buy love.
    7. Re:Real DB? by The+Slashdolt · · Score: 1

      Ironically, this is my employers project management style. They can claim prior art. And I am not kidding....

      --
      mp3's are only for those with bad memories
  28. Really?! by The+Bungi · · Score: 0, Flamebait
    Store procedures. Triggers. Views. It's like it'll be a real DB!

    My ghod, I've been listening to the FOSS nuts argue this very thing for six years! I mean, if I were any more gullible I'd actually believe that MySQL was better than SQL Server and Oracle and DB2! In 1998!

  29. will they fix gotchas too? by RelliK · · Score: 0, Troll

    Wake me up when they fix this. Oh, and are they finally adding an "enterprise feature" called "subselect"?

    --
    ___
    If you think big enough, you'll never have to do it.
    1. Re:will they fix gotchas too? by Some+Bitch · · Score: 1

      Subselects were added 2 years ago in 4.1. It's not their fault that half the cheapass webhosts on the net still run 3.x.

    2. Re:will they fix gotchas too? by sql-gotcha · · Score: 2, Informative
      Err, RTFM? 13.1.8. Subquery Syntax. And an article too: Nesting SELECTs in MySQL 4.1. Note that this kind of statement:
      DELETE FROM t1
      WHERE id IN (SELECT MIN(id) FROM t1)
      won't work though, at least as of 4.1.
    3. Re:will they fix gotchas too? by Anonymous Coward · · Score: 0

      Perhaps the Postgresql guys will fix their list also?

      http://sql-info.de/postgresql/

    4. Re:will they fix gotchas too? by scheme · · Score: 1
      Perhaps the Postgresql guys will fix their list also? http://sql-info.de/postgresql/

      Do a simple comparison of the two lists. The postgresql list has 1 item that can cause incorrect results or data corruption (RANDOM item). The other items either affect performance, list non-compliance with sql standards, or are applicable to versions of postgresql two major versions ago. Even then, there are a lot less items in the postgresql list then the mysql list.

      --
      "When you sit with a nice girl for two hours, it seems like two minutes. When you sit on a hot stove for two minutes, it
  30. get over it already by jbellis · · Score: 4, Insightful

    if I read "well enough for most purposes" by a mysql fanboy one more time I will have to start drinking before noon.

    popularity isn't proof of clue, guys. How many people run windows, right?

    with postgresql and firebird there have long been available real open-source databases that are just as easy to get up and running as MySQL, but won't hamstring you when you start to learn more.

    I'm glad to see MySQL joining the club, but it must be shocking for the "we don't need no steenkeeng logic in the database" fanboys to adjust... Parent is case in point, I guess.

    1. Re:get over it already by Space+cowboy · · Score: 1

      Sorry, did you miss the part where it's done 103 million queries in the last 5 days ? At an average of 203 per second! As far as I'm concerned, that's pretty good performance, and that's what I want.

      Look, you might want (and hell you may even need) all the bells and whistles, but for most people it's a matter of "how big is mine".

      There's something decidedly irritating about being called a 'fanboy' when you're getting excellent service out of something, and you're happy with that.

      --
      Physicists get Hadrons!
    2. Re:get over it already by Anonymous Coward · · Score: 0

      Sorry, did you miss the part where it's done 103 million queries in the last 5 days ?

      Since when have people criticised MySQL for its performance? People criticise MySQL for doing things like silently changing data to fit constraints instead of preserving data integrity as the SQL standard requires.

      I was under the impression "most purposes" involving an RDBMS require data integrity. It's pretty intrinsic, wouldn't you say?

    3. Re:get over it already by Anonymous Coward · · Score: 2, Insightful

      This is a guy who maintains that ACID isn't really necessary for a database (see first post in thread). Sure, he processed 203 q/sec. Now, how much of that data is actually there and correctly stored? Your guess is as good as anyones. Frankly, if you think !ACID == DB you need your fucking head examined and probably a pink slip to boot.

    4. Re:get over it already by Anthony+Boyd · · Score: 4, Informative
      with postgresql and firebird there have long been available real open-source databases that are just as easy to get up and running as MySQL, but won't hamstring you when you start to learn more.

      No. If that were true, then they would have seen far greater adoption rates. PostgreSQL has a history of difficult installations -- I tried it years ago and was stymied, then tried it again in 2003 I think and was stuck doing VACUUM (sp?) over and over. It also had some byte-size limits, but I don't think I even understood that complaint or experienced it. In the meantime, for MySQL I just hit "install" and it did, with excellent defaults, so that I did not need to babysit it at all.

      And as for Firebird, no. I worked at Borland, I saw the limitations of that monster. I'm not suggesting that Firebird is problematic now -- I suspect it is devoid of problems to the point that I'd prefer it over PostgreSQL. I am merely disputing your assertion that it has been "just as easy" as MySQL. It hasn't. It may be now. But now may be too late.

      Also note that I am not suggesting that MySQL is perfect. But let's focus on legitimate complaints, such as the way it quietly recasts data and stores it, rather than error out. For example, storing dates as 0000-00-00 when your table setup did nothing of the kind. Once that little (in)convenience introduces itself to you for the first time, you really wish you had been using PostgreSQL. Of course, again, it looks like a "compliance" mode is being integrated into MySQL, so by the time I'm ready to ditch MySQL over this, they will have fixed it, and I'll stay. :)

    5. Re:get over it already by DogDude · · Score: 1

      Look, you might want (and hell you may even need) all the bells and whistles, but for most people it's a matter of "how big is mine".

      If you're calling foreign keys, stored procedures, etc. "bells and whistles", then you know -zero- about databases and database work. You should either be fired, or you should put yourself through school if you have a job programming for databases.

      --
      I don't respond to AC's.
    6. Re:get over it already by TheRaven64 · · Score: 1

      What were you trying to install PostgreSQL on? I've run it on Windows (cygwin), FreeBSD and Fedora, and in each instance installation and configuration has taken under 10 minutes (except on FreeBSD where I installed from source, but even then configuration was under 5 minutes).

      --
      I am TheRaven on Soylent News
    7. Re:get over it already by Space+cowboy · · Score: 1

      Foreign keys are great when they're necessary. For most web databases (and certainly all the ones I've written for), they'd be useful but are by no means essential - they're there to ensure referential integrity which can be done by error-checking in the caller. At least, that's how I do it.

      Stored procedures are (IMHO) a bloody awful idea. Why put the business logic into the database ? All it means is that you have to rewrite the whole thing when you switch DB's. Put middleware where it belongs - in the middle, and use ANSI SQL as much as possible - where you can't abstract it in the middleware. At least that's what I do.

      IIRC, stored procedures were introduced to remove the round-trip time between the client and the server, but since both client and server are on the same machine (or gigabit ethernet segment) for all my machines, this isn't a problem, for me. YMMV.

      I'm getting a lot of flak on this thread for defending MySQL as a non-ACID database - they typical /. response (if it's not purist-correct, it's a pile of...) is coming out pretty strong. Don't get me wrong, I think ACID will be a great step forward for MySQL - my point was it's a bit off to call a DB not "real" when it's the overwhelmingly most-used DB on the net. It's like calling Windows not a "real" os. Of course it is! Even if it doesn't do what I might like it to do.

      The other assumption is that because something is not ACID, it's going to be automatically corrupt - and that's just not the case. I've been running that site at ~100-200 query/sec average for over 5 years (the server's been upgraded - the old one was ~100/sec :-), and every page completely depends on the DB. If the DB was corrupting things it would be very very apparent very quickly. I've written a lot of code to make sure it doesn't get corrupt (and yes, I accept it would be easier if the DB was ACID - you still have to cope with the errors, though ACID or not!)

      Simon.
      (Phew!)

      --
      Physicists get Hadrons!
    8. Re:get over it already by IANAAC · · Score: 2, Insightful
      PostgreSQL has a history of difficult installations -- ...

      Fair game (well, was fair game, anyway). Now consider this:

      If you are converting from another commercial database to either MySQL or PostgreSQL, which do you think will be the more difficult install? My bet is you'll be weeping with MySQL.

      It's easy to say MySQL is an easier install when there's not data or application code. PostgreSQL becomes much more viable once you already have working code.

    9. Re:get over it already by Lefty+McGrep · · Score: 1

      If his code only allows certain data to be inserted into the fields in his database, whats the issue? I don't get the people who think only the database can possibly manage the itntegrity of the data being inserted. My god man, if you can't validate data before it gets inserted, YOU need to get a new job as well.

    10. Re:get over it already by DogDude · · Score: 1
      Well, I don't have time to give a database 101 class, but some of the big bullet points would be:

      • Unless you are 100% sure that you will be the ONLY person to EVER access the database, and you're 100% positive that your client app is perfect and will only insert correct data, then you'll have bad data.
      • Business logic goes into databases because mature databases handle business logic MUCH faster than any application-level code because stored procedures are compiled and optimized for that database, allowing performance that can't be touched.


      Those are just a few big basics that you're missing. Like I've told other people, you should either take some classes, or find a database mentor that can teach you the basics.
      --
      I don't respond to AC's.
    11. Re:get over it already by ahmusch · · Score: 1
      At least, that's how I do it.

      The fact that you do it that way with *more* round-trips to the database makes it the least-right way.
      Why put the business logic into the database?

      Because the data lives there, and for any application beyond the toy scope, you optimize for your database. Also, anyone else who shares your data with a different application then gets to experience the rare and unique joy of reimplementing your code in his application.
    12. Re:get over it already by RupW · · Score: 1

      Stored procedures are (IMHO) a bloody awful idea. Why put the business logic into the database ?

      Normally, you don't - you use stored procedures to

      1) fetch data from the database (e.g. several related selects at once if necessary, match up columns using data that you're not interested in returning, etc.)
      2) carry out sets of transaction-updates for you

      and invoke them from business logic in another tier. Stored procedures offer the convenience of keeping all the SQL code in one place and reduced overhead to call these operations - but, more importantly, the server knows that you're asking it to do the same thing over and over again: it can pre-compile the SQL into some form that's quicker to execute and it can store profile data from the procedures and efficiently tune execution plans per procedure.

    13. Re:get over it already by Sxooter · · Score: 1

      Oh puhleeze

      I've been using pgsql and mysql since 1999, back in the days of postgresql 6.5.2. It was dirt simple to install, and it took me all of a morning to read enough to figure out to cron up vacuum.

      You just sound like a lazy whiner to me.

      The process, and I quote, was:

      tar xvzf postgresql-6.5.2.tar.gz
      cd postgresql-6.5.2 ./configure
      make
      make install
      mkdir /usr/local/pgsql/data
      adduser postgres
      chown postgres.postgres /usr/local/pgsql/data
      su - postgres
      cat "export PGDATA=/usr/local/pgsql/data" >> .bash_profile
      source .bash_profile
      initdb

      Yeah, it was done before lunch, and I'd never installed any other databases in my life.

      Try installing db2. Now that is a pain in the ass.

      If you were too lazy to install PostgreSQL, you're too lazy to be a good dba or developer.

      --

      --- It is not the things we do which we regret the most, but the things which we don't do.
    14. Re:get over it already by BlueHands · · Score: 1

      Windows IS good enough for most people. Switching to something else IS the wrong choice for grandma. Maybe not for you but for millions Windows is the BEST choice. Not the most advanced or flexable or cheapest or easiest but the best for many people.

      Now, if someone claims they are leet because they can run mysql, then they ae morons. But sometimes mysql is going to fill the right nitch. As always, right tool for the right job.

      --
      I mod everyone down who says "I'll get modded down for this." I hate to disappoint.
    15. Re:get over it already by Anonymous Coward · · Score: 0

      way to miss his point and then help reinforce his point, all at the same time, good job

    16. Re:get over it already by DenialS · · Score: 1
      Yeah, it was done before lunch, and I'd never installed any other databases in my life. Try installing db2. Now that is a pain in the ass.

      Really? I thought you said you hadn't installed any other databases... anyways, installing DB2 is a matter of:

      ./db2setup
      [click through GUI installer:

      • enter password for instance user
      • enter password for fenced procedure user
      • enter password for database administration server user
      ]
      cat ". /home/db2inst1/sqllib/db2profile" >> .bash_profile
      source .bash_profile
      db2start

      ... and you should be done before breakfast, let alone lunch.

      There's a DB2 HOWTO at the Linux Documentation Project that provides detailed instructions for many popular Linux distributions, including special prereqs or workarounds for distros like Gentoo.

    17. Re:get over it already by Sxooter · · Score: 1

      Golly gee, did you think that maybe, just maybe, since the year 1999 I'd maybe, just sorta, installed another database SINCE then? Christ on a crutch. See, there's this thing called context. I know, it's a bit TWO syllable word and all, but you might try looking it up. And taking a logic class. And removing your head from your ass. Just a thought.

      And maybe DB2's gotten a little easier in the convening years, but it sure as hell wasn't that simple "back in the day".

      Thanks for the tip on installing DB2. I might have to try it out again, 5 years later.

      --

      --- It is not the things we do which we regret the most, but the things which we don't do.
    18. Re:get over it already by Anonymous Coward · · Score: 0

      Bullshit. The procedure I listed is spelled out quite clearly in the INSTALL file. Oh wait, your a fucking idiot like the original post too.

      never mind.

  31. PostreSQL an option? by Anonymous Coward · · Score: 0

    I don't know all the details between the two, but if you need all of these things now wouldn't it be possible to use PostreSQL?

    I know that it's a bit of a 'religious' argument, but can some explain why wouldn't use PostreSQL?

  32. parent is a fudder by fishdan · · Score: 0

    Something critical like...Wikipedia? Wikipedia's flight from Hurricane Charley was well documented, including their use of mysqldump in disaster preparations.

    --
    Nothing great was ever achieved without enthusiasm
  33. Wake me up when it goes to production. by blcamp · · Score: 2, Insightful


    Normally I put in beta software on my box (never in any production units, mind you... just my own personal box) just to "kick the tires" and see whether a new version of an app or some new piece of technology is going to get the job done.

    But not databases. I won't even mess with alpha, beta or even release candidates of ANY database software until it is RTMed or "gold". It's gotta work and work right, or there's no point messing with it. I don't want any suprises with database system issues when working on any projects... not even in the earliest development stages.

    I'd just as soon see that MySQL take thier time and get 5.x released when it is ready. And when it is released, I hope it works RIGHT.

    --
    The problem with socialism is that they always run out of other people's money. - Margaret Thatcher
    1. Re:Wake me up when it goes to production. by Anonymous Coward · · Score: 0

      If everyone did that they'd never iron out the bugs

    2. Re:Wake me up when it goes to production. by Anonymous Coward · · Score: 0

      I talked to someone that worked at MySQL about a year ago and he said that the beta cycle can vary in time due to the fact that MySQL will start the mandatory 6 month timer over if any significant bug is found in the beta version.

      Some open source projects are better at handling beta software over other project. One that comes to mind is ImageMagick. ImageMagick does a terrible job at testing and will release practically anything. Just my 2 cents

  34. Article unreadable by vorpal22 · · Score: 4, Informative

    The article was unreadable. I went to the page and was presented with a large, intrusive flash-based (I believe) advertisement that refused to let me read the text until it was over, and given the obnoxious nature of the ad, that's not a feasible option, IMO.

    1. Re:Article unreadable by Anonymous Coward · · Score: 0
    2. Re:Article unreadable by Siva · · Score: 1

      Can't blame you there, but you didn't really miss much. The entire article amounts to 9 sentences.

      --

      Keyboard not found.
      Press F1 to continue.
    3. Re:Article unreadable by RPoet · · Score: 1

      The following filters in my Adblock setup kicked in to make the article ad-free:

      http://ad. .gif?
      http://*.i.com.com (I know, quite specific)

      --
      "Oppression and harassment is a small price to pay to live in the land of the free." -- Montgomery Burns.
  35. At what cost? by Jhan · · Score: 3, Interesting

    So now MySQL is a "real DBE". Does that mean this new version is no longer 5-10 times faster than the "real DBE" (Informix) that we abandoned for the one reason that MySQL has extreme performance?

    I do hope all these new features are either off by default or easily turned off.

    --

    I choose to remain celibate, like my father and his father before him.

  36. Firebird more popular than Postgresql? by russx2 · · Score: 3, Interesting

    From the article:

    "It [MySQL] accounted for 40 percent of open source database deployments, while Firebird and PostgreSQL accounted for 39 percent and 11 percent of deployments respectively."

    Are these stats really true? Despite being a firebird user myself, I'd always assumed postgresql was a much bigger, more widely used product.

    Unless of course the author is including *all* databases based on the Interbase code in that percentage?

    1. Re:Firebird more popular than Postgresql? by Anonymous Coward · · Score: 3, Informative

      No, the stats aren't "true." They come from a single Evans Data survey whose results are uncharacteristic of all other surveys, including other surveys by Evans Data. Why can be explained if you look at the survey sample.

      Evans pointed out in their release that 90%+ of the respondees did their development on Windows. At the time of the survey, there was no PostgreSQL release version native on Windows. Further, Evans specifically surveyed users who use open source. PostgreSQL doesn't account for 11% of the world's database developers, either, more like 6-8% according to other sources. Then there's plain old sample error.

      So, that 39% of Evans respondees to *one single* survey of Windows-based OSS developers have and use Firebird? Completely plausible.

      Of course, this noise about Firebird should hopefully get more people to evaluate it. We've put a Firebird session into OSCON, so mabe the FB folks will join us in Portland?

      --Josh Berkus
      PostgreSQL Project

    2. Re:Firebird more popular than Postgresql? by johnjaydk · · Score: 1
      PostgreSQL is the "secret" oss database and that is a shame. I use it professionally and really love it. But MySQL gets all the ink ... Thats life.

      MySQL is good for some tasks and terrible for others. PostgreSQL really shines where MySQL sucks and is less impressive in cases where MySQL excels. Figure out what your needs are and chose wisely.

      --
      TCAP-Abort
    3. Re:Firebird more popular than Postgresql? by kz45 · · Score: 1

      Are these stats really true? Despite being a firebird user myself, I'd always assumed postgresql was a much bigger, more widely used product.

      Take a look at your local borders or barnes and noble. I can bet you will not find very many books on postgres (if any). You will, however, find many books on mysql.

      This is mostly due to popularity...

  37. Core feature or table type feature? by aweiland · · Score: 2, Interesting

    Some of the people making comments haven't really hit on one of interesting things in MySQL, the ability to use different table types.

    For instance you can't do transactions with MyISAM, but you can with InnoDB. You pick what you need.

    I think the question that needs to be asked is where in the mysql engine will these features be added? Into the core? Into the MyISAM tables? In a new table type (i.e. MyISAM2)?

  38. Re: alternatives? by Anonymous Coward · · Score: 0

    from now on we have to change our minds. We have (at least) two open source DB projects competing to get the same objetive: compete for enterprise level quality DB.

    Is there any simple database focusing only in simplicity and fast read queries?

  39. sqlite may be useful for the simpler tasks by ubiquitin · · Score: 1

    As mysql bulks up, if you still want wicked-fast raw inserts with low-overhead engine, consider sqlite. Personally, I'm eager to get the triggers, views and stored procedures, as it will enable PHP apps to mature a bit.

    --
    http://tinyurl.com/4ny52
    1. Re:sqlite may be useful for the simpler tasks by finnw · · Score: 2, Informative

      sqlite has its own performance weaknesses.
      Last time I looked at the source (about 6 months ago), ORDER BY was handled by buffering the results in memory and sorting them before returning them.
      You might expect that an index on the column(s) you are sorting by would be used to order the results, but it isn't.

      --
      Is Betteridge's Law of Headlines Correct?
  40. link to TF Change Log or TF What's New by Anonymous Coward · · Score: 0

    /. editors are on an early April 1st workday

  41. well by Sv-Manowar · · Score: 2, Interesting

    this is great news for the open source database community, but i can't help but wonder if we shouldn't be more interested in PostGreSql instead, given it's more open license terms

    MySql a.b. have previously shown their willingness to change their license terms and this has manifested itself in issues with projects like PHP who notably have changed to pushing SQLite more heavily with PHP5.

    1. Re:well by oliverthered · · Score: 2, Interesting

      I think MySql should stick at what it's good at and not try to do something it isn't good at.

      Joe sixpack isn't going to use Oracle 9i for his blog, and your bank will never use MySQL for financial transactions.

      If anything MySQL should be cutting 'junk' so that it leans more on the SQLLite side of things instead of the PostGreSql side.

      --
      thank God the internet isn't a human right.
  42. The biggest problem is not technical by scorp1us · · Score: 5, Interesting

    ...but legal. The community seems to have over-looked the license change from the 3.xx days. I should know. I had software that was permissible to be run on gratis-MySQL, but as of 4.0, the license changed. I now use PostgresSQL which I throughly advocate, not just because of the license, but because of the feature set and the anal developers.

    There where 3 reasons why MySQL got popular:
    * Free
    * PHP
    * Windows support

    Free has been removed because fo the license change. PHP is a non-issue, these days, and naitive Windows support is now in PostgreSQL 8.0.

    Now, we have a much more level playing feild. On brief analisys we have:
    * Easy replication on MySQL/ Not so easy on PostgreSQL (when only soncidering the free varietyfree)
    * Experimental/new features on MySQL, but throughly tested features on PostgreSQL.
    * Limited license on Mysql, BSD license on Postgres.

    Those three are, IMHO, the remainging differences pertinant to typical DBS selection.

    Then there are the addional features. I like the sandards-compliance and no gothcas (MySQL Timestamp) of PostgreSQL.

    Just my $0.02

    --
    Slashdot's rate-of-post filter: Preventing you from posting too many great ideas at once.
    1. Re:The biggest problem is not technical by DAE51D · · Score: 2, Informative

      Yes. The license does really suck for companies. Our company is stuck at 4.0.18 as well because after that point, they switched from GPL to their own license. http://www.mysql.com/company/legal/licensing/comme rcial-license.html It's not very condusive to using mySQL on a sold appliance/product because mySQL wants > $600 per license!!! https://shop.mysql.com/ Hurry up and save 0%. offer ends March 31st. LOL!

    2. Re:The biggest problem is not technical by Trifthen · · Score: 5, Informative
      * Easy replication on MySQL/ Not so easy on PostgreSQL
      Not really.

      Go ahead and click on any of the links on that page which describe bugs fixed in a release of the many branches. In almost every one, there's a critical bug that causes replication to fail, turn itself off, crash mysql, or otherwise act in an unpredictable manner. We've wanted to use it for two years now, but every release has some terrible flaw that makes this impossible.

      Heck, they've only recently fixed a bug in the 4.0 branch that's been there since at least 4.0.12 which caused mysql to silently segfault and restart itself. Not to mention the bug before that, which segfaulted, restarted mysql, and randomly corrupted open tables. 4.0 is just now getting to the point where I'd recommend it to other people. I won't touch 5.0 with a mile-long pole until it hits 5.0.20.

      --
      Read: Rabbit Rue - Free serial nove
    3. Re:The biggest problem is not technical by MemoryDragon · · Score: 2, Insightful

      Add to that, table inheritance, point in time recovery in postgresql...

    4. Re:The biggest problem is not technical by Anonymous Coward · · Score: 0

      I had software that was permissible to be run on gratis-MySQL, but as of 4.0, the license changed.

      Please explain your FUD.

    5. Re:The biggest problem is not technical by quantum+bit · · Score: 1

      * Easy replication on MySQL/ Not so easy on PostgreSQL

      Check out Slony if you haven't recently. Not exactly what I'd call "easy", mind you, but certainly not unreasonably difficult to set up.

      Besides, given the complexities inherent in the whole concept of database replication, I'd be somewhat suspicious of a solution that was *easy*.

    6. Re:The biggest problem is not technical by scorp1us · · Score: 2, Informative

      This is not FUD at all. I leave it to the reader acusingmy of FUD to obtain and compare the licences between v3 and v4.

      3 Allowed MySQL use where MySQL was used to fetch and organize data that was already availible through other means. Not only did we have a sequential text-log of all the data, but by running MySQL in parralell and doing some parsing and storing offsets of where the data was in the file, it greatly simplified searching.

      v4 not only prohibited that, but it forbids use in any commercial environment. There is ONE exception. That is the PHP exception clause. PHP is (and commercial sites run on PHP) are permitted to use PHP. If they had not granted that, MySQL would eb effectively dead. It is short-sighted to assume that the only software interacting with MySQL is PHP. The client libraries are very often directly linked in.

      Under the v3 license, this was the case. But the v4 license would require the app to be GPL as well.

      IT IS ALL WELL DOCUMENTED. READ IT.

      With PostgreSQL's BSD license, NONE of this crap happens.

      --
      Slashdot's rate-of-post filter: Preventing you from posting too many great ideas at once.
    7. Re:The biggest problem is not technical by scorp1us · · Score: 1

      I meant easy to setup. I made no claims to reliability :-)

      --
      Slashdot's rate-of-post filter: Preventing you from posting too many great ideas at once.
    8. Re:The biggest problem is not technical by Trifthen · · Score: 1

      True, true. You got me there. ^_^

      --
      Read: Rabbit Rue - Free serial nove
  43. Stored procs and Triggers and Views oh my! by WillAffleckUW · · Score: 1

    Be vewwy vewwy careful, I'm hunting Oracle users ...

    So long as they don't use PL/SQL for them, I'll be very interested in the implementation of stored procedures and triggers, that's for sure!

    --
    -- Tigger warning: This post may contain tiggers! --
  44. Paying the Ferryman by sabat · · Score: 2, Funny

    And pay your $599 SCO license fee, you lazy slack-offs!

    --
    I, for one, welcome our new Antichrist overlord.
  45. They just pulled an all-nighter, dummy! by solomonrex · · Score: 5, Funny

    Or maybe they just hired all those burned-out EA employees.

    ex-EA'er: "Can I get 3 whole months to do 10 years of wish lists?"
    MySQL management: "Take your time- have 4!"
    "WOW....! You're the best boss a guy could hope for!~sniff~"

  46. this is advertorial by SethJohnson · · Score: 2, Interesting



    This blurb on Slashdot is an advertorial. There's absolutely no real meat to the ZDNet article. It's got one quote from a guy at mySQL mentioning three new features. The older slashdot story pointing to the changelog at mySQL has way more information than this ZDnet piece. And it doesn't conveniently feature a big banner ad for SUN hardware.

    It was submitted from an anonymous reader. I am betting that anonymous reader is a sales guy at ZDnet looking to boost hit reports for their Sun banner ads. "I'll call those dorks at slashdot and pay them to link to a little pseudo story about mySQL."

  47. InnoDB is ACID-compliant. by DoctoRoR · · Score: 2, Informative

    Why does this stuff always get propagated? There are several table types in MySQL. If you want ACID, use InnoDB and not the default MyISAM:

    http://www.mysql.com/products/mysql/

    Also http://www.innodb.com/index.php

    1. Re:InnoDB is ACID-compliant. by pHDNgell · · Score: 2, Interesting

      Why does this stuff always get propagated? There are several table types in MySQL. If you want ACID, use InnoDB and not the default MyISAM:

      Isn't that what wikipedia was running when they had their database corruption due to a power outage that caused them to have to replay the whole thing from backups (minus whatever transactions were lost)?

      So it gives you transactions, possibly consistency. It doesn't seem to provide durability.

      Short of a block on a hard drive no longer being readable, I can't see how a power outage should make an ACID compliant database corrupt.

      --
      -- The world is watching America, and America is watching TV.
  48. Sarcasm not accepted around here by ari_j · · Score: 4, Funny

    Nobody at Slashdot is ever sarcastic. Ever. Especially me. I've never been sarcastic, and I don't understand sarcasm at all. I can't smile and laugh when someone makes an obvious crack at the fact that the insanely popular web site where his joke will be viewed is run by MySQL. The joke itself is stored in the database he's making fun of. It's a good thing, though, that he wasn't being sarcastic, because people here have a hard time with sarcasm.

    That's right, everyone at Slashdot hates and fails to understand sarcasm. Except moderators. Those guys love the stuff. They eat it up and mod funny things "funny" even though the sarcasm they perceive isn't really there, and the comments are just trolls or flamebait.

    1. Re:Sarcasm not accepted around here by That's+Unpossible! · · Score: 1

      What we need is a sarcasm detector...........

      (fill in rest of joke here)

      --
      Ironically, the word ironically is often used incorrectly.
    2. Re:Sarcasm not accepted around here by javaxman · · Score: 1
      They eat it up and mod funny things "funny" even though the sarcasm they perceive isn't really there, and the comments are just trolls or flamebait.

      Heh heh, trolls are funny.

    3. Re:Sarcasm not accepted around here by Drathos · · Score: 1

      we have one.. if only i could remember were it was.. now i remember! it's right .. here.. hrm..

      it's that smoking pile of rubble in the corner..

      --
      End of line..
    4. Re:Sarcasm not accepted around here by pilkul · · Score: 1
      What you and CmdrTaco are doing is irony, not sarcasm. Merriam-Webster sez (among other meanings which are irrelevant to this case):

      irony 2 a : the use of words to express something other than and especially the opposite of the literal meaning

      sarcasm 2 a : a mode of satirical wit depending for its effect on bitter, caustic, and often ironic language that is usually directed against an individual

      You're not being particularly bitter or caustic, nor ad hominem, so that isn't sarcasm.

      Of course I kind of understand that you decided to avoid using the word "irony" because then you would probably have gotten a similar reply from somebody who listened to an Alanis Morissette song and decided that all uses of "irony" are incorrect. But some things really are irony!

    5. Re:Sarcasm not accepted around here by RKThoadan · · Score: 1

      So you mean slashdot somehow manages to totally change my personality every time I get mod points? Wow, That's some powerful code.

    6. Re:Sarcasm not accepted around here by Anonymous Coward · · Score: 0

      ... and a duplicate post detector.

    7. Re:Sarcasm not accepted around here by Anonymous Coward · · Score: 0

      ... and a duplicate post detector.

    8. Re:Sarcasm not accepted around here by Anonymous Coward · · Score: 0
      ... and a duplicate post detector.

    9. Re:Sarcasm not accepted around here by ari_j · · Score: 1

      Yes, I was using irony, the appropriate definition of which is a subset of sarcasm. Let's see - I was directing it against the parent comment, moderators, and Slashdotters in general; and without being bitter and caustic, what I said has no meaning. So I was, at least, being sarcastic. Of course, I said I wasn't, so my ass is covered either way.

      Taco is also fine, because the subtext of what he "sez" (seriously, if you're going to lecture me on the definition of words I use, at least make sure that what you type consists of words) implies bitterness toward the many people, Slashdotters in particular, who frequently claim that MySQL is not a real database because it lacks the particular features he calls attention to. So he, too, was being sarcastic.

    10. Re:Sarcasm not accepted around here by ari_j · · Score: 1

      Aw, crap. s/subset/superset/. And here I was, pretending to be perfect. :P

  49. You're a DB, however by Anonymous Coward · · Score: 0

    DB as in douchebag.

  50. It's like it'll be a real DB! by soybean · · Score: 1

    emphasis on "like"

  51. Wow! by Anonymous Coward · · Score: 0

    They introduced row-level locking with InnoDB and now have triggers and stored procedures at the alpha stage. They are finally (almost) ready to enter the 21st century! Seriously though, why is this news if there are other more proven and feature-rich alternatives out there like PostgreSQL? Especially since those alternatives are light years ahead of mySQL??

  52. Re:Mysql is still a rip off by gregarican · · Score: 1

    Why was this modded down? Certainly not offtopic. And not too much of a troll or flamebait since it's pretty on target (even if a bit abrupt).

  53. NOW IT'S READY FOR THE ENTERPRISE!! by defile · · Score: 5, Insightful

    Copied from my blog^Wweb based journal.

    My retort to a mailing list flamewar over the enterprise readiness of MySQL vs. Oracle vs. PostgreSQL vs. tin cans and string .

    Once you start getting into "serious" work, or "enterprise" level computing, which is all anyone argues about, every single assumption gets tossed out the window.

    Thought your OS was stable? Yeah, it's pretty stable, but when it gets hit all day every day at 100%, it crashes for some reason every few months. I'd love to say that Linux is the exception here, but well, it isn't.

    Maybe you bought the highest quality disks? And avoided the "bad" vendor? Wrong! This year the bad vendor is the one you bought plenty of! Looks like your recovery plan didn't consider that 25% of your disks would fail in the first year!

    Thought you had enough RAM? You don't! And you can't add more because you're on a 32-bit platform. Sucker! Start migrating to 64-bit and learn a whole new bunch of gotchas the hard way.

    Hey! This RAID adapter has an awfully funny glitch! When you pop a brand new disk in, if you reboot, it treats it as a whole new array, and the funniest part is that it renumbers all of the other arrays! Kernel panic: can't mount root device! What a laugh! Good thing we have RAID here to give us added reliability!

    Thought you'd never max out that fridge computer? Well, you just did. It looks like your developers decide to get sloppy when they think they have infinite capacity. A couple of weeks of performance analysis and retuning the algorithms instead of doing real new work!

    Thought that replication setup would scale infinitely? Well, infinitely actually means 10,000 queries/sec. Yup, that's the ceiling. No choice now but to re-architect the whole system into a decentralized dataset. Hey, since it's all so decentralized, lets just store CSV files! Added bonus: management types love it!

    Six months of re-engineering to decentralize the whole system, and another six months to phase it in. And it sure will require downtime!

    For all of the talk of mission critical feature this and enterprise functionality that, in the end, these "real work" loads are handled by the resourcefulness of your people, because no platform is going to even come close to solving all of your problems.

    Package X vs. package Y does not make a difference in the big picture. If only. MySQL, PostgreSQL, Oracle, BerkeleyDB, or peach fuzz? The answer is obvious: pick the one your team is most capable and most comfortable with. Got it? Great! You've just solved the easiest problem you're ever going to have.

    Bah! Humbug.

    1. Re:NOW IT'S READY FOR THE ENTERPRISE!! by SparafucileMan · · Score: 1

      ahahahahahahahah so true.

      i wonder if any these people actually program for a living or what? i only spend 1/10 or 1/20 of my time programming. the rest is designing, fixing unexpected bugs, fixing user errors, thinking through the trillion implications of my design, coordinating who is doing what, making meetings with users, meetings with management, making sure the DB is still up, etc... o, and the contract just changed, so now the project is worthless anyway...

      These article/threads are like children bickering over whether baseball is better than football.

      real men are BO JACKSON and could do either, as it is with programming.

      and then, when you reach that point, you'll just use LISP anyway and think everything else sucks ass and is for the commodity programmers who live in the basement and worship Java, Oracle, and... *shudder* design patterns.

    2. Re:NOW IT'S READY FOR THE ENTERPRISE!! by Tony-A · · Score: 1

      are handled by the resourcefulness of your people, because no platform is going to even come close to solving all of your problems.

      Well, one intelligent comment at least.

    3. Re:NOW IT'S READY FOR THE ENTERPRISE!! by Anonymous Coward · · Score: 1, Funny

      Every operating system?

      I can safely say I administer several dozens of servers, some of which are pounded on *a lot* (the web servers and one of the internal file servers too). I have NEVER, repeat NEVER had Linux crash on me for 2 years, as long as I've done this.

      You, my friend, have crappy hardware. Or choose your kernels very badly.

    4. Re:NOW IT'S READY FOR THE ENTERPRISE!! by defile · · Score: 1

      You, my friend, have crappy hardware. Or choose your kernels very badly.

      Blah blaah blaah.

      Would I have offended less people if I said that our servers running OpenBSD were crashing?

      How long was I supposed to make the original post? Let me go on...

      In the ENTERPRISE, you get to learn when ${CURRENT_DISTRO_VENDOR} says STABLE, they really mean STABLE-ish.

      In the ENTERPRISE, fucking idiots come out of the woodwork and cause some political battle over choosing ${CURRENT_DISTRO_VENDOR}, and that ${HIS_DISTRO_OF_CHOICE} servers have been running for years without any downtime doing the same exact job. Sort of!

      In the ENTERPRISE, you end up compiling your own kernels from scratch because you learned that going with the distro's kernel should work in theory, but just doesn't.

      In the ENTERPRISE, you get to learn that if you hit BIND and syslog with a thousand messages a second, they deadlock, and good luck managing to ssh in when syslog() calls blocks forever because ssh is trying to record your login!

      In the ENTERPRISE, you learn that the syslog daemon you picked, of all fucking things to worry about, doesn't have a -n option to not resolve hostnames. So you use LD_PRELOAD to make gethostbyname() always fail.

      In the ENTERPRISE, you get to learn that almost every shipping company will cause subtle but fatal damage to your servers if you ship them across the country!

      In the ENTERPRISE, server's bitch is you!

  54. Have they fixed the language incompatibilities? by mellon · · Score: 2, Interesting

    One of the things that's a real problem for me with MySQL is the places where MySQL doesn't follow the SQL language standard. This means that MySQL scripts typically only run against MySQL. This is probably just ignorance on my part - perhaps they fixed this long ago, and people are just coding to the old standard - but does anybody know anything about this? I wasn't able to find anything about it in the press release.

    1. Re:Have they fixed the language incompatibilities? by Anonymous Coward · · Score: 0

      Which "the standard"? a DB only capable of SQL89 or whatever would be pretty much useless.

    2. Re:Have they fixed the language incompatibilities? by mellon · · Score: 1

      Generally speaking, if there is a way to do something in the language standard, it should be done that way, and not in some other way. If there is no way to do the thing you want in the standard, then I guess you have to do it a different way. I would tend to consider the FIPS standard to be the most current, but I'm no expert. The main place I've run into problems with compatibility is in the way that UNIQUE is specified, and also differences between VARCHAR and special types that MySQL provides that, frankly, aren't very useful and have equivalents in standard SQL.

  55. Fixing 10 years of criticism, 10 years too late by Osty · · Score: 5, Insightful

    In the ensuing 10 years, they've thoroughly corrupted the minds of young programmers and DBAs by making them think it's okay to sacrifice data integrity for the illusion of speed ("illusion", because mysql chokes when you get into complex data sets or queries; the vaunted speed of mysql only applies when you're working with a data set so simple you could represent it with flat files or xml without any difficulty). That it's okay to work around the shortcomings of a RDBMS in your application code (no, I am not going to implement transactions, referential integrity, or subqueries in my application code. That's just stupid). That you don't need views or sub-selects or triggers or stored procedures. That adding those features actually slows down your RDBMS (well, yeah, if you implement them poorly).

    While it's nice to see that they'll finally support most of the features of a proper RDBMS, it's too little too late. Even if they ship tomorrow it'll be years before this new version is ubiquitous (how many ISPs and hosting providers are still running an ancient 3.x version of MySQL?). The best way for them to have "fixed" those 10 years of criticism was never to have allowed the criticism in the first place -- by fully implementing an RDBMS, or at least acknowledging the benefits of the features you don't implement, like foreign keys, rather than spouting out crap about how adding those features will slow things down, and any "smart" programmer can do without them anyway. At least that way they could've avoided looking like hypocrites.

    "You don't need transactions. Transactions just slow things down. Look, we have table-level locks. Use those. You can ensure data integrity from your application by using table-level locks. Performance concerns on locking a full table to update a single row? What?" and then, "Would you look at that? Transactions! You can get them if you use this new table type. Of course, if you don't have that new table type and you try to use it, or you do have the new table type but you don't explicitly mark your tables as that new type, you're not going to get transactions. Oh, we won't fail, we'll just silently not open a transaction, and silently not rollback or commit when you ask us to."

    "Sub-selects? Sub-selects are slow. Why would you need sub-selects when you can do two queries, pull all of that data back to your application (because you don't need stored procedures either), and mimic the sub-select there?" and then, "Oo! Sub-selects! Pretty!"

    etc ...

    1. Re:Fixing 10 years of criticism, 10 years too late by zoftie · · Score: 1

      MySQL was an outgrowth of the data acquisition project for particle accelerator or some such thing. Their motivation was to do inserts as fast as possible, which is why the design was so crappy, relatively to what it supposed to be. However, at the time horsepower was still rather expensive, meaning per page rendered with usage of some sort of database mechanism ... yes MySQL was faster if you used it right. Website data is not as crucial as say, bank data. And if you do your backup regularly, then losses would be minimal. MySQL database file format was far far more resilient, compared to postgres(7.2), which required index rebuild on a bad crash. MySQL was really really good deal for cheap hosting. Invisibe hand showed what people use most. Now many are graduating to postgres as real database. MySQL will still be viewed as pretend RDBMS, except mysql zealots. It has built an image for itself. If it does all the new tricks (proper transactions, views, cursors,replication) , then its not mysql anymore in my mind. its mysqlNG or some such thing. you get the point.
      2c

    2. Re:Fixing 10 years of criticism, 10 years too late by reverendslappy · · Score: 3, Interesting

      Amen! I've posted my criticisms of MySQL here before, only to be taken to task by the unwashed masses of MySQL "admins".

      The reality of the matter (that you articulated quite eloquently) is that MySQL has never been a true RDBMS due to it's lack of features. The aspect you mentioned of MySQL encouraging poor development habits is one that I hadn't thought to mention, though I deal with it on a daily basis.

      Far too often, I find myself assigned to clean up after several developers in another department here who create disasters of database-driven crapplications on MySQL without following the most basic tenets of database design (referential integrity, normalization, etc... If I had a dollar for every time I've come across one of these guys' big, honking, 74-column tables, followed by someone asking me "Why are there so many 'dupes' in this table?"...<deep breath>).

      For the longest time, I couldn't figure it out. Were they lazy? No, I had personally witnessed their work-ethic -- which was solid -- and they always got their deliverables in on time, spending lots of extra time in the office (there's a reason for that, of course...). Were they incompetent or unskilled or just dumb? No... All three of them always wrote very stable, elegant (albeit copious) application code. Although, with the shitty DBs they created, I guess they had to write a lot of application code -- lots and lots and lots of it -- to just make their stuff work. Anyway...

      Eventually, a position in my department opened up, and my one-table friends decided to apply. In my interviews with them, I discovered that before working here (where they're occasionally exposed to Oracle, Sybase, and SQL Server), they had experience with only one database platform. Take a guess what it was. Think hard...

      Needless to say, they didn't get the job (although I now have two of them writing application code ONLY... and they're pretty f'ing good, interestingly enough). Obviously, they're an extreme example, and I can't fairly attribute their shortcomings solely to using MySQL. But it certainly didn't help (I mean why bother creating a normalized schema when you can't ensure referential integrity at the DB level anyway, right?). Sure, they could have found a way to learn the skills somehow or they could have been more curious or driven to learn, and maybe they just aren't interested in DB stuff and maybe they shouldn't be being asked to do it, I dunno. But after seeing their resumes, I haven't hired one person -- not a single one -- who doesn't have database experience outside of MySQL. I just can't see a MySQL-only person fitting into a Oracle or Sybase or, heck, SQL Server world (yet, I guess).

      Anyway, rambling aside, I think the moral of the story is that using robust tools lends itself to building robust skills, particularly in the realm of RDBMSs. MySQL isn't evil and it isn't a bad little database platform for happy little applications, and I'm sure a ton of now very-skilled DBAs and developers might have gotten started using it. But a true RDBMS it has not been, for ten freakin' years. And more importantly, MySQL skills do not real DBAs make.

      Anyway, if it is in fact now a competitive product, I guess my collegues and I will have to stop jokingly calling it "Access for Programmers". But if it stacks up and (FINALLY) does what a lot of us need a DB to do, with the speed and stability it's already known for, I'll throw it behind one of my apps tomorrow. I've got my fingers crossed, but after 10 years of persistent let-downs, don't blame me for not holding my breath.

    3. Re:Fixing 10 years of criticism, 10 years too late by BigZaphod · · Score: 1

      That kind of attitude is not the fault of MySQL being late with features. It is the fault of the person with that attitude.

      It seems that for many people, learning is hard. When they spend a significant amount of energy learning something that did not come easily to them they tend to be MUCH more defensive to anyone who comes around with an alternate point of view (regardless of evidence).

      I think that all people have been followers in their lives at some point, but that MOST people never venture out on their own and even attempt to live any other way. This attitude that you speak of is a classic sign of that follower mentality. They learned and used MySQL because it was "cool" and "everyone" else was using it. That, in itself, isn't a huge problem. If it weren't for forces like that, nothing would ever standardize or gain any kind of momentum. The problem is that most people never get beyond that. It is the classic "I have a hammer, so everything looks like a nail" syndrome. This is hardly the fault of MySQL.

    4. Re:Fixing 10 years of criticism, 10 years too late by SparafucileMan · · Score: 1
      (no, I am not going to implement transactions, referential integrity, or subqueries in my application code. That's just stupid)

      i think your problem boils down to the fact you want the DB to do everything when really it doesn't matter. the application is there and the DB NEEDS IT cause no user sits down and writes SQL statements. if you were a competent programmer, doing "DB" things in your "application" wouldn't be stupid, it'd be easy, cause you'd know your data structures and your sorting algorithms like any CS grad. o, and meanwhile, the user could care less about your DB triggers as long as the damn application works. they probably don't even know there is a database back there. and what the user doesn't know, doesn't matter.

    5. Re:Fixing 10 years of criticism, 10 years too late by Osty · · Score: 2, Insightful

      i think your problem boils down to the fact you want the DB to do everything when really it doesn't matter. the application is there and the DB NEEDS IT cause no user sits down and writes SQL statements.

      Right and wrong. Yes, my problem is that I want the DB to do what DBs do -- enforce referential integrity, ACID compliance, encapsulate business logic where it makes sense (near the data), etc. You're wrong about it not really mattering, though. Ask yourself, with 20+ years of research into relational database design, why would you think that you can provide better referential integrity in your application than a proper RDBMS? How could you possibly enforce ACID behavior efficiently from your application? Why should you have to business logic in your application when it could be stored near the data where a change would not require a new build of your application? The DB needs the application to provide the user a useful view of the data in the database. It should not need the application to make sure that data is in a consistent state. Remember, more than one application may be using the same database (including applications you didn't write, such as management tools like phpMyAdmin). Unless you replicate the same integrity logic in all of your applications (and pray you don't have any bugs!), you will eventually run into problems where someone else has screwed up your data.

      if you were a competent programmer, doing "DB" things in your "application" wouldn't be stupid, it'd be easy, cause you'd know your data structures and your sorting algorithms like any CS grad.

      Ah, the personal attack. Nice. Why not take it one step further and write your own storage mechanism? By re-implementing RDBMS features in your own application, you've relegated the database to nothing more than a fancy, searchable file system. If that's all you need, fine, but that means you don't need a RDBMS at all and you shouldn't pretend that what you're using is one. I know my data structures and sorting algorithms, but that's not going to help me enforce data and referential integrity in my data.

      and meanwhile, the user could care less about your DB triggers as long as the damn application works. they probably don't even know there is a database back there. and what the user doesn't know, doesn't matter.

      That's all true, up until the point where your database craps out on you (you've seen it happen to Slashdot frequently, Penny Arcade, and pretty much every MySQL-backed website out there). Then it's painfully obvious to the user. However, this isn't about the end user. It's about the programmer, and using the proper tool for the job. There's absolutely no reason you should have to replicate the functions of an RDBMS in each and every one of your applications, and if you find yourself doing so it's pretty clear that you're using the wrong tool.

      Think about it. Why would you enforce referential integrity from your application? Why should have to write special "rollback" code (consisting of deleting what you just inserted in the simple case, or much worse for update scenarios) in your application? Why should you have to pull down more data than you absolutely need? There's a reason these concepts are integral to relational database design, and it's hilarious to think you can implement them better in your shopping cart web app than someone who's dedicated to building relational databases. (Hey, maybe you can, but you shouldn't have to)

    6. Re:Fixing 10 years of criticism, 10 years too late by quantum+bit · · Score: 4, Insightful

      i think your problem boils down to the fact you want the DB to do everything when really it doesn't matter. the application is there and the DB NEEDS IT cause no user sits down and writes SQL statements. if you were a competent programmer, doing "DB" things in your "application" wouldn't be stupid, it'd be easy, cause you'd know your data structures and your sorting algorithms like any CS grad.

      It's not that simple in the real world. Think about things like concurrency. If you have 200 clients running your app at the same time and 10 of them are trying to update a complex set of related tables, how do they avoid stepping on each others toes? Are you going to have your client apps communicate with each other and coordinate the inserts? Or just lock all the tables and kill performance? How do you ensure that everyone who is reading those tables sees a consistent data set?

      Or you could let the DB server do it, since it knows both the data model and the state of all the clients. Things like transactions keep clients from seeing unfinished inserts (and PostgreSQL and Oracle have MVCC to make this very efficient).

      Sure, for websites and blogs it doesn't really make a difference. Every once in a while you'll see some odd data appearing on the page but if you refresh it will be gone. MySQL has historically been very good at running simple things like this.

      Anything more important than that needs real data integrity at the database level. Application level checks can't *guarantee* the state of the database when more than 1 user is connected, no matter how careful they are.

    7. Re:Fixing 10 years of criticism, 10 years too late by delmoi · · Score: 1

      I think your problem boils down to your broken shift key.

      --

      ReadThe ReflectionEngine, a cyberpunk style n
    8. Re:Fixing 10 years of criticism, 10 years too late by defile · · Score: 1

      That's all true, up until the point where your database craps out on you (you've seen it happen to Slashdot frequently, Penny Arcade, and pretty much every MySQL-backed website out there). Then it's painfully obvious to the user. However, this isn't about the end user. It's about the programmer, and using the proper tool for the job. There's absolutely no reason you should have to replicate the functions of an RDBMS in each and every one of your applications, and if you find yourself doing so it's pretty clear that you're using the wrong tool.

      Blaaah blaah blah. It occurred to me recently that the only reason I even feel the need to use an RDBMS in a web application is because under Apache, it was easier to store data in an RDBMS than gain permission to store it in the filesystem in some concurrency safe way on a shared hosting environment.

      That environment is so dangerous that I took these assumptions with me when I had 10 servers with root access. : /

      The best change I ever made for my productivity and sanity was writing a tiny little module that reduces the entire RDBMS into a circa 1985-style dBase file. It's great! The entire module only has a handful of SQL calls, and the application is like SQL WHO?! The solution to my concurrency problems was to only allow one process to hit the db module at a time.

      What? It won't scale, you say? I guess when the site starts having a hundred hits a second, I can worry about allowing some processes to have shared read only access and block writers until they have exclusive access. Who knows, maybe when there are a thousand hits a second, I'll have something like commit/rollback! Or I could just rewrite the fucker from scratch!

      At least, I would have said that until I discovered that I didn't even need to use Apache, that I didn't need to keep around a flock of threads to handle requests -- then my productivity really skyrocketed -- everything stays in memory and once in awhile I hit a button that commits all of the data structures to disk! One day the data got sooo big that it locked the whole site for a single second to do the commit, so I axed the problem by only committing the modified data every 30 seconds instead! The system's never more than 30 seconds out of date, and it's never in an inconsistent state! And there's no RDBMS to maintain, no SQL to care about, and it's lightning mother-fucking fast, you know, the way a 3GHz computer with 2 gigs of RAM is meant to be! ROFL!

      Sure, management bitched that they couldn't peak at the site data through Microsoft Access, so 15 minutes later they had a spigot that jizzed CSV all over their faces. That shut them up fast.

      But seriously, please keep debating the merits of one SQL database versus the other SQL databases, it will have such an impact on your life.

    9. Re:Fixing 10 years of criticism, 10 years too late by defile · · Score: 1

      It's not that simple in the real world. Think about things like concurrency. If you have 200 clients running your app at the same time and 10 of them are trying to update a complex set of related tables, how do they avoid stepping on each others toes? Are you going to have your client apps communicate with each other and coordinate the inserts? Or just lock all the tables and kill performance? How do you ensure that everyone who is reading those tables sees a consistent data set?

      Check this out: you _ s e r i a l i z e _ the requests!

      Why, yes, serializing the requests when they each take 30 seconds would blow concurrency out of the water, but call me strange -- when I say to myself "hey, this thing takes 30 seconds to complete", I don't say "if my RDBMS had all of this insane complexity built into it, I wouldn't have to care that it takes 30 seconds!! DAMNIT!"

      Everyone's so used to running things in their own virtual process with unlimited memory and unlimited wall clock time and having your write() block because of some guy's slowassed modem, that if you spend an hour thinking of a different world, everything that implies an RDBMS suddenly disappears.

      Alas, the solution is a really hard pill to swallow: figuring problems out for yourself!

      Far be it from me to fault anyone that needs an RDBMS to keep their paycheck coming.

    10. Re:Fixing 10 years of criticism, 10 years too late by Sxooter · · Score: 1

      Actually, that exact attitude was promulgated by MySQL the company in the documentation they themselves wrote.

      So, it's kind of disingenious of you to pretend that they weren't a big part of making that attitude so common.

      --

      --- It is not the things we do which we regret the most, but the things which we don't do.
    11. Re:Fixing 10 years of criticism, 10 years too late by SparafucileMan · · Score: 1
      Unless you replicate the same integrity logic in all of your applications (and pray you don't have any bugs!), you will eventually run into problems where someone else has screwed up your data.

      Use common libraries. Problem solved.

      That's all the DB is: it's a common library that happens to be called a "database" because lots of specialization has gone into it. Right? So it's sits in it's own "process"...big dead....

      Noone sits around saying "ah library has to be design perfectly", they just need it to work. Now, you're worried about referential integrity...but i'm not really sure that's a big issue. At least with the DBs I work with, the main issue is the user coming to people and saying "the data isn't correct" and it's not correct because they entered it incorrectly or whatever, not because the referential integrity broke down.

      Now, yes, you want your data to be correct. But it's not. And it never will be. You can centralize it in a good DB and hope that things work out, but that's due to your centralization, not your "database", whatever that is. You're still stuck dealing with all the other billion problems with the data.

      Maybe I'm just babling and not dealing with the topic. I'm not a DBA. I'm a coder and a mathematician. I look at these debatesl ike "who gives a fuck, it's all same, just make sure the program works." maybe all these years i've been whoring out the DBAs but... *shrug* the user's don't care about DBAs, they care about my program using the DB ;)

    12. Re:Fixing 10 years of criticism, 10 years too late by Osty · · Score: 1

      Use common libraries. Problem solved.

      No, the problem is just moved to a different area. You're still implementing everything in your application, you're just re-using the work you've already done. Why wouldn't you re-use the work other people have already done (in the form of a robust RDBMS solution)?

      That's all the DB is: it's a common library that happens to be called a "database" because lots of specialization has gone into it. Right? So it's sits in it's own "process"...big dead....

      It depends on what you mean by "database". When I say "database", I really mean "relational database management system", or RDBMS. That is most certainly not just a set of libraries. It's an engine that provides services to consumers, and makes certain guarantees (that your references will be correct, that a rolled-back transaction will be rolled back, that a committed transaction will be committed, etc). Yes, you can push all of that into libraries used by your application, but why in the world would you want to move those services farther away from the data than necessary? And what do you do when someone forgets to include the library, or doesn't know about it, or uses a third party application against your database that doesn't know about your fancy fake-RDBMS library?

      Now, you're worried about referential integrity...but i'm not really sure that's a big issue. At least with the DBs I work with, the main issue is the user coming to people and saying "the data isn't correct" and it's not correct because they entered it incorrectly or whatever, not because the referential integrity broke down.

      Referential integrity is one of those things that could be implemented fully in an application, if you're really into pain. So yes, if you write your application with that in mind you can add enough error checking to make sure the user doesn't do the wrong thing. However, that's not all there is to data integrity. Consider transactions. If you have to do five different DB operations where everything must succeed or it all fails, and you fail step three, how do you rollback the first two steps? If they were inserts, that's no big deal -- just remove that data. What if they were updates? Now you have to think ahead, retrieve the original data and store it somewhere (which could really suck if you're updating 500,000 rows, for example) before you do the update. And don't forget concurrency. You have to lock the data you're working on, which means you really need a way to lock individual rows in tables (you can escalate to a table lock if you end up locking too many rows in the same table, but you don't want to start with a table lock because others may need to read/write data you're not touching). Where do you draw the line? Should your database provide locking mechanisms but not transactions? Should your library provide some way of locking data, and the database is just an indexed file? Should your library build and maintain indexes on the data and relegate the database itself to nothing more than a raw storage mechanism? Or should your database provide all of that for you? You'd laugh if I told you that your operating system should do nothing more than provide a minimal interface between hardware and software (hey, DOS!). Why is it any different with a RDBMS?

      Maybe I'm just babling and not dealing with the topic. I'm not a DBA. I'm a coder and a mathematician. I look at these debatesl ike "who gives a fuck, it's all same, just make sure the program works."

      I'm not a DBA either. I'm a programmer. However, like any smart programmer, and especially a commercially employed programmer (as opposed to an academic programmer), I recognize that my time is my most valuable asset and I refuse to waste my time reimplementing the wheel when I don't have to. Even if I do it once and reuse the library everywhere, I

    13. Re:Fixing 10 years of criticism, 10 years too late by defile · · Score: 1

      What it really comes down to is using your time effectively. If you and I were to write the same application, but I used a proper RDBMS and you used MySQL, my application would be done sooner because I wouldn't have to reinvent the wheel (or, your application would be less stable because you didn't bother with referential integrity checks, transactioning your data updates, etc). You app might be a bit faster (doubtful if we're talking about non-trivial datasets, and especially not if you've reimplemented many RDBMS features in your application layer), but it's highly unlikely the end user will notice that you're doing 5000 transactions per second and I'm only doing 4500.

      Not installing and managing an RDBMS is my idea of using my time effectively.

      Customer wants a small CRM? CGI under Apache that writes DBM files. Takes a day or three.

      Customer wants a large CRM with 10,000 users? Build around an async I/O library that speaks web, maintains an in-core database, flushed to disk every 30 seconds. Takes a week or three.

      Customer wants a really large CRM with 100,000 daily users? Build multiple sites in the previous fashion, one to handle accounts, one to handle contacts, one to handle queries, etc. Tie them all together using the magic of cookies and internal or external redirects. Takes a month or three.

      No SQL? No RDBMS? Sounds like heaven to me.

    14. Re:Fixing 10 years of criticism, 10 years too late by sapgau · · Score: 1

      I guess is all about using functionality that will help you maintain your data as "correct" as posible. Hell, if your users know perfectly well what type of data they need to input every time then you have no need for additional checks from the database.

      But if, for example, you need to group all data entered for the state of Colorado and many different types of users entered what ever they thought was valid then you will have to go and decide if you want all posible interpretations of the name: will it be CO or Col or Colorado or COLORADO or CL or CLRD or mikey mouse or....?

      In this case Referental Integrity is our friend and will help us restrict the range of values, and sometimes is not the programmer who defines them but it becomes a business rule thought out in a meeting room somewhere in the shipping department.

      Is all about preventing your work becoming a pain in the a$$.

      Oh, and DBAs are kind of redundant sometimes but when you need one is because you REALLY know you need a good DBA.

  56. Firebird? by ari_j · · Score: 1

    Isn't that a web browser? I don't see how it's relevant here. ;-D

  57. Question by The+Spoonman · · Score: 2, Interesting

    What about bi-directional replication? I know, t'ain't easy, but is it easier now?

    --
    Which is more painful? Going to work or gouging your eye out with a spoon? Find out!
    http://www.workorspoon.com
    1. Re:Question by Anonymous Coward · · Score: 0

      wait more 10 years ... mysql AB said "shutup".....until 2015

  58. They're releasing two special versions by Anonymous Coward · · Score: 0

    So now MySQL is a "real DBE". Does that mean this new version is no longer 5-10 times faster than the "real DBE" (Informix) that we abandoned for the one reason that MySQL has extreme performance? I do hope all these new features are either off by default or easily turned off.

    They're releasing two special versions with smaller feature sets. They're called "MySQL 4.1" and "MySQL 3.23". Strange naming conventions, I know.

  59. how did this get modded insightful? by jbellis · · Score: 4, Funny

    "the PostgreSQL philosophy is to throw in everything and the kitchen sink and then make it work right, whereas the MySQL approach is to add things one at a time, making sure that everything works right from the beginning"

    I guess that's one way to make MySQL's "foreign keys are for wimps" documentation look good: anyone who implements more than MySQL does is just throwing stuff together and worrying about debugging later! Never mind that just about anyone else is more standards compliant; the MySQL team are heroes of stability and everyone else is just trying to add features for marketing.

    Nobody really needs that ACID crap anyway, and if you say you do, you're just a poseur...

  60. Wanna make it better? by DroopyStonx · · Score: 1

    Allow it to take an existing MSSQL db scheme and transform it to MySQL.

    THEN you'll be talkin..

    --
    We have secretly replaced these Slashdot mods' sense of humor with a rusty nail. Let's see if they notice!!
  61. My prediction by Aumaden · · Score: 2, Informative

    Prognosticator that I am, I predict that MySQL 5 will achieve release status between April 18 and 21.

  62. Re:Why so many Postgres trolls are on /. by Anonymous Coward · · Score: 0

    Well done!

  63. OK, how about java stored procedures? by hey! · · Score: 2, Interesting

    This can be done in Oracle and I believe Postgres. Not only do they perform better than native stored procedure languages, they potentially allow you to take code that benefits from being in the database tier and make it portable.

    --
    Post may contain irony: discontinue use if experiencing mood swings, nausea or elevated blood pressure.
    1. Re:OK, how about java stored procedures? by Anonymous Coward · · Score: 0

      I've found java in Oracle to be slower than PL/SQL (like 10 times slower on an app I ported). It also has the disadvantage that you can't read the source during times of stress and trouble.

      Its the wrong tool for the job since java isn't a db language and DBAs aren't java programmers.

    2. Re:OK, how about java stored procedures? by hey! · · Score: 1

      Hmmm. Hasn't been my experience. With JIT, it should be much faster. Of course YMMV with your design and methods of testing. If for example you are creating and disposing of JDBC connections using the thin driver, well, of course it's going to be dog slow. You probably want to abstract this process by some kind of factory object.

      --
      Post may contain irony: discontinue use if experiencing mood swings, nausea or elevated blood pressure.
    3. Re:OK, how about java stored procedures? by Anonymous Coward · · Score: 0

      The Stored Procedures implementation in MySQL was written with this in mind, there are hooks so that you can place other stored procedure languages in the implementation.

      One implementation had to be chosen, and SQL:2003 seemed like the most natural one to chose.

  64. Re:Record locking anyone? by gregarican · · Score: 1

    I thought using the InnoDB version of mySQL row-level locking is indeed available. This has been the case for awhile IIRC.

  65. Idea for best possible MySQL by Frank+T.+Lofaro+Jr. · · Score: 1, Funny

    Make the newest version of MySQL a wrapper for Postgres. :)

    --
    Just because it CAN be done, doesn't mean it should!
    1. Re:Idea for best possible MySQL by Queuetue · · Score: 1

      Someone modded you funny, but I think you're right - if someone developed a mysql "interface layer" to postgres - simplifying the management and allowing the mysql libraries to connect natively, I believe it would trigger a tremendous amount of adoption.

      Call it postgres lite - whatever features and speed you lose due to the interface, you can make up for down the road by a "proper" port of the app to postgres - but you won't have to worry about migrating the data, users, procedures, etc.

      This is probably a lot of work, but it's possible MySQL, PostGres and the users will all benefit from the process.

  66. So? by DogDude · · Score: 3, Insightful

    Sure it's not ACID, but it does well enough for most purposes

    Also works well enough for "most purposes": Flat files, MS Access, etc. That doesn't mean I'm going to build any kind of important app around them.

    --
    I don't respond to AC's.
    1. Re:So? by Karma+Farmer · · Score: 1

      Also works well enough for "most purposes": Flat files

      MySQL basically gives you flat files with an SQL syntax and a network layer.

      For some applications, that's enough. For other applications, it's not enough.

    2. Re:So? by trawg · · Score: 1

      I've built several important applications around flat file databases - because sometimes they're right for the job.

      That's why we use MySQL for a lot of things. Its right for the job. Its cost effective, it serves our purposes, and we're happy enough with its limitations. We've been using it merrily in production for over four years - sure, we're not operating banks or managing nuclear missile silos, but we're not counting beans either.

  67. This isn't just "customer base changed" by jbellis · · Score: 4, Interesting
    I guess you don't know the history here like the grandparent does. MySQL really promulgated a lot of disinformation.

    Here's what the MySQL docs (source: http://web.archive.org/web/20000619203550/http://w eb.mysql.com/Manual_chapter/manual_Compatibility.h tml) used to say about foreign keys, for instance:

    There are so many problems with FOREIGN KEYs that we don't know where to start:

    • Foreign keys make life very complicated, because the foreign key definitions must be stored in a database and implementing them would destroy the whole ``nice approach'' of using files that can be moved, copied and removed.
    • The speed impact is terrible for INSERT and UPDATE statements, and in this case almost all FOREIGN KEY checks are useless because you usually insert records in the right tables in the right order, anyway.
    • There is also a need to hold locks on many more tables when updating one table, because the side effects can cascade through the entire database. It's MUCH faster to delete records from one table first and subsequently delete them from the other tables.
    • You can no longer restore a table by doing a full delete from the table and then restoring all records (from a new source or from a backup).
    • If you have foreign keys you can't dump and restore tables unless you do so in a very specific order.
    • It's very easy to do ``allowed'' circular definitions that make the tables impossible to recreate each table with a single create statement, even if the definition works and is usable.

    The only nice aspect of FOREIGN KEY is that it gives ODBC and some other client programs the ability to see how a table is connected and to use this to show connection diagrams and to help in building applicatons.

    1. Re:This isn't just "customer base changed" by stu_coates · · Score: 1

      I guess they've never heard of "Referential Integrity" then?

    2. Re:This isn't just "customer base changed" by dcam · · Score: 2, Insightful

      I was just typing out an impassioned response to this, when I reread your comment and realised you were quoting from the MySQL documentation.

      This is just insane. There is no other way to describe it. Clearly concepts like DRI clearly just whooshed right over the heads of the MySQL team.

      --
      meh
  68. Here's a step-stool by spun · · Score: 2, Insightful

    Let me help you down off your high horse. Plenty of 'Database Professionals' use MySQL. Not every project needs triggers and views. A real professional uses the tool best suited for the job and doesn't try to over-charge his clients for things they don't need.

    --
    - None can love freedom heartily, but good men; the rest love not freedom, but license. -- John Milton
    1. Re:Here's a step-stool by Anonymous Coward · · Score: 1, Insightful

      "Real" professionals also look to the future. Many times I have added features to applications which required porting from MySQL to PostgreSQL (e.g., features which require transactions). I have never needed to port from PostgreSQL to MySQL.

      Since it is not any harder to work with PostgreSQL than MySQL, and since there is zero difference in cost, and since there is a real likelihood of having to eventually upgrade, why would a "real" professional ever suggest MySQL? It borders on the unethical to suggest MySQL to a paying client.

    2. Re:Here's a step-stool by Anonymous Coward · · Score: 0

      No, it isn't unethical. The main focus of MySQL has always been speed. MySQL is MUCH faster than PostgreSQL. If speed is an issue, then MySQL is the proper database to use (and MySQL has supported transactions since 4.0 see here). PostgreSQL is fine for a small to medium site or business, but for a mainstream site, it will not keep up.

    3. Re:Here's a step-stool by scheme · · Score: 2, Informative
      No, it isn't unethical. The main focus of MySQL has always been speed. MySQL is MUCH faster than PostgreSQL. If speed is an issue, then MySQL is the proper database to use (and MySQL has supported transactions since 4.0 see here). PostgreSQL is fine for a small to medium site or business, but for a mainstream site, it will not keep up.

      I guess the .org and .info dns registries aren't mainstream then. They're running postgresql to handle those registries and they seem to keep up without problems.

      --
      "When you sit with a nice girl for two hours, it seems like two minutes. When you sit on a hot stove for two minutes, it
    4. Re:Here's a step-stool by Anonymous Coward · · Score: 0

      Yeah, and all those records are changing how many times per minute?

      Wait, they aren't? Oh damn. There goes your point.

    5. Re:Here's a step-stool by Anonymous Coward · · Score: 0

      To quote myself and add emphasis:

      It borders on the unethical to suggest MySQL to a paying client.

      I have used PostgreSQL since it was POSTGRES and my experience with MySQL goes back to about 1995 when it was first generally released. I've never had a situation where PostgreSQL's performance was so bad that MySQL was a better choice.

      I am also aware that MySQL has supported a form of "transactions" for some time but that is not MySQL's only limitation (in my original post "e.g." means "for example"). MySQL's propensity to fail silently or to silently do the wrong thing makes it unsuitable for applications which must be robust.

    6. Re:Here's a step-stool by scheme · · Score: 1
      Yeah, and all those records are changing how many times per minute?
      Wait, they aren't? Oh damn. There goes your point.

      Guess again. The domain records are updated at least once when a given domain expires. Given that there are a few million .org domains, you're looking at a volume of at least 50,000 updates a day. Add in nameserver changes and other things and you are easily handling a lot of updates per day. Now consider the lookups for whois or other services and you've a respectable amount of activity.

      Just go to the postgresql.org website and check out the case studies to see other implementations using postgresql. Among other things BASF is using it to handle a agribusiness site that handles 25,000 concurrent users.

      But you probably don't care since you're just trolling.

      --
      "When you sit with a nice girl for two hours, it seems like two minutes. When you sit on a hot stove for two minutes, it
  69. Now that is precision by dingbatdr · · Score: 2, Funny

    You know your level of confidence to four significant digits? Impressive!

    --
    The truth is an offense, but not a sin.------R. N. Marley
  70. LOL by Zebra_X · · Score: 2, Insightful

    In one release they will get the features out there - and the next 4 or 5 releases will be spent optimizing performance. It's a step in the right direction - but it will take more time for MySQL to be ready for prime time.

  71. postgresql 6.x is long gone... by jbellis · · Score: 2, Insightful

    I've been using postgresql since 7.0 in 2000. I admit that I never experienced what are largely characterized as the Bad Old Days of 6.x, but I doubt most people calling postgresql hard to setup haven't, either.

    If we talk about 7.x and if "./configure; make install; initdb; set up cron job to run vacuum" makes postgresql hard to install I guess I was wrong, but if it does your threshold of "hard" is going to cause you a lot of pain. :)

    1. Re:postgresql 6.x is long gone... by Anonymous Coward · · Score: 0

      Cronjob?

      These are Windows users who couldn't work out the Cygwin install, you expect them to be able to write a cronjob or even know what one is?

    2. Re:postgresql 6.x is long gone... by Anonymous Coward · · Score: 0

      No, but I'd expect them to know how to use the windows scheduler.

      This is an RDBMS we're talking about, not f'ing minesweeper, there's got to be a _certain_ amount of assumed knowledge.

  72. i'm confused.... by drew · · Score: 4, Informative

    So, are they just going to pretend that 10 years worth of flaming on message boards, mailing lists, etc. about how you don't really want those features in your rdbms because you can just implement them in application code without slowing down the database never actually happened?

    --
    If I don't put anything here, will anyone recognize me anymore?
    1. Re:i'm confused.... by thebatlab · · Score: 1

      Nope. They're just finally responding to customer wishes.

  73. Yeah -- but does it compile on Linux w/NPTL by Mister+Liberty · · Score: 1

    Sad to say, from last I checked, a rhetorical question. bjd

    1. Re:Yeah -- but does it compile on Linux w/NPTL by Anonymous Coward · · Score: 0

      Compiled fine for me (FC3 with NPTL). There was one minor glitch with the 2.6.x kernel headers in 5.0.2, but that was easily fixed by renaming a variable.

  74. Trouble again by Anonymous Coward · · Score: 0

    3 a.m. in the morning, ring ring
    -Hello
    -New Mysql is out, you must implement it ASAP
    -WHAT ?!? its still .0. Let's wait for .1
    -No no, our developers have tested it on their beta machines, it works ok, deploy it on our Redhat ES 3.0 right now ! We need the most recent version.
    -But it's our production server, and php...
    - NOW NOW NOW !

    after 48 hours .. Ring ring..
    -Our customer database got f**** what the h*** happend ???
    -Well , i said its .0
    -But our developers tested it, it was ok
    -On a real time enviroment?
    -Ah .. er... Get back to 4.xxx !!! Now !!!

    And every time a new revolutionary version comes out ...it's the same.....

  75. Bunch of useless posts by Dacmot · · Score: 1

    Has someone with a clue about DBMS's actually tried the beta? Is it slower than 3.x or 4.x? Are these features good? Well implemented? Practical?

    I would really like to see these questions answered.

    I have no clue about anything.

    1. Re:Bunch of useless posts by Anonymous Coward · · Score: 0

      Views:
      Clean implementation, pure updateable views (changes to the view will happen in the base table, you cannot update views with GROUP BY, UNION or similar clauses, since there's no way to know the actual base table row referenced in those cases).

      Stored Procedures:
      Works fine, there are still a few bugs left in compilcated procedures, the main thing lacking is a good debugging interface with breakpoints and variable checking right now.

      Triggers:
      Somewhat limited implementation right now, the rest will probably arrive in 5.1 with CHECK CONSTRAINTS and MySQL level FOREIGN KEYS, since lots of the codebase between those three probably will be shared.

      Strict Mode:
      One of my favorites, instead of truncations with warnings you now get errors for inserting non-existing dates, too big values that won't fit in a column, etc.

      SHOW SESSION STATUS:
      over 50 new status variables have been added to help tune your server, and now you can also chose to see those on a per connection basis, so you can see how your last query ran and how many row-reads/sorts/whatever it used, as well as optimizer cost and lots of goodies.

      Optimizer:
      The optimizer has gotten tweaked quite a bit, now you can define how deep you want it to search for execution plans, it handles GROUP BY a lot better, especially in combination with MIN(), MAX() type functions.
      The best thing here is probably that the old limitation of only one index used per table instance in a query could be used is gone.

      XA-layer:
      The new two-phase commit layer for committing data with a transaction-safe MySQL engine and an external layer if needed (will also make things like automatic failovers a lot easier)

      INFORMATION_SCHEMA:
      Now you can finally query/join/use WHERE to find your tables/indexes/whatever

      About all those new features, they are very practical, the performance for some cases still need to pick up a little (but assuming that's beta-tuning's job to do), I have not seen any slowdown in current applications that I've test-run on 5.0 that doesn't use those features, so it's pretty safe to say that it won't affect existing applications negatively.

      This is just a subset of the new things, if you want the full list, I think the changelogs are your best way to find it.

    2. Re:Bunch of useless posts by Anonymous Coward · · Score: 0

      Views:
      Clean implementation, pure updateable views (changes to the view will happen in the base table, you cannot update views with GROUP BY, UNION or similar clauses, since there's no way to know the actual base table row referenced in those cases).


      You cannot use subquery in view and no "instead" or "rule" syntax to handle complex query that makes it updateable.

      Triggers:
      Somewhat limited implementation right now, the rest will probably arrive in 5.1 with CHECK CONSTRAINTS and MySQL level FOREIGN KEYS, since lots of the codebase between those three probably will be shared.

      current trigger is really uselessness!

      1) Cannot call procedure call in trigger
      Create trigger xxxxx each row
      BEGIN
      END....

      You cannot write one procedure call and is shared by many tables.

      2) There cannot be two triggers for a given table that have the same trigger action time and event.

      this make triggers will be more complex and difficult to understand as a number of different task will be performed in the same section of code.

      3) You can query other table in trigger statement

      create trigger aa_update before update on aa for each row
      begin
      declare bb_name varchar(30);

      select name into bb from bb where id = :new.bb_id;

      set :new.bb_name := bb;
      end

      You can select data from other tables within trigger.

      As a normal mysql development. Rush, just make functions look like to be work then claim "fixed ... stop critcism.

      Example : spaital data (myisam only)
      merge (myisam only)
      full-text (myisam only) -- really crap full-text implementation if it compares to other DBs... no stemming, no dictionary..

  76. foreign keys? try write-ahead logging by js7a · · Score: 5, Insightful

    write-ahead logging is why I use and advocate PostgreSQL. Witness the recent power failure problems at Livejournal in which WAL recovery would probably have cut downtime to a few hours instead of days.

  77. A real DB... by Anonymous Coward · · Score: 0

    Albiet 10 years too late. The story of OSS's life. Always late to the game, and then when they finally do release some bug-ridden piece of crap code, pundits switch into Zealot mode, claiming it's better than Windows. Yeah, maybe the Windows we all knew 10 years ago... Give up, fuckers. You'll always be late to the game because you started WAY late in the game. You're never going to win, your code will always be a steaming pile of crap, and eventually you'll fork yourselves into a useless oblivion.

  78. PostgreSQL by Anonymous Coward · · Score: 0

    So is PostgreS better? i wanna start fooling around with database's, but i'm tight on time, don't want to waste it learning one that i'll end up hating (because it's not as good as the other one).

  79. The Mines Underneath by Enonu · · Score: 0

    Triggers:

    Evil. Your company will use it to create a patchwork system of code to "fix bugs" or add business logic in every application instantly. Then all of the sudden, you decide to switch your mentality of how you use databases because you get a clue on how application testing should be performed (on an in-memory database that can be brought up and down instantly). But 'lo and behold your in-memory database might not support or have those triggers. Hello slow unit tests and vendor lock-in!

    Stored Procedures:

    Sometimes a necessary evil. These are almost as bad as triggers, however they don't execute unless you explicitly call them. However, they have the same version control and lockin problems that triggers do.

    Any Other New Feature:

    Basically, unless it can be described using a standard SQL dialect that's well supported, I'd stay away from it unless absolutely necessary. Please also refrain from deluding yourself on the meaning of necessary.

    1. Re:The Mines Underneath by WillAffleckUW · · Score: 1

      re Triggers, Stored Procs, and other features being evil ...

      You can host all these above in the Java tier, or use PHP if you want, but the nice thing about Triggers is using them for Add, Update, and Delete.

      It's a very documentable procedure to have the Delete trigger on the Database tier handle referential integrity issues and avoid row locking and orphan rows in associated tables. It keeps all that away from the Java tier, so you can not worry about it.

      The same goes for Add and Update - you can ensure at the Database level that any required associations actually exist, or are prebuilt for later update.

      But, yes, you could totally avoid them, provided you can be sure that the Java or other coders actually know what to do.

      Which is a BIG assumption.

      --
      -- Tigger warning: This post may contain tiggers! --
  80. Opinions... by danheskett · · Score: 4, Insightful
    I worked with a group of professionals to port an COM+/MSSQL project to PHP/MySQL3.x platform.

    A 150GB database is very lower mid-range for a real-world database. Even with very "highly optimized" replacements of stored procedures and well-designed queries to replace views, and every tweak we could find or think of, they could never match the performance the client was used to on the old platform, even with more powerful hardware. After months of tweaking, the project failed, and I had to eat a lot of billable hours. The database choked down with any significant INSERT or UPDATE activity. In testing and demos, it was great - fast and zippy. When we threw the switch for a simulation of a real days work logged from the live system, the world nearly ended -- a 24 hr day of work for the live system took at our best 28 hours. For example, we had problems with queries that should require only indexed fields scanning an entire table for any given query. These are the problems you may never notice if you just run a small website from MySQL, but will hurt you when you have a table with 100M records in it.

    I hope and pray that 5.x allows me to port this application. I'd love to get the whole thing end to end on a free platform. (Postgres wouldn't fly with the customer at the time because of vague issues with not knowing the product, not wanting to gamble on another OSS project, etc).

    Everything about getting this app to MySQL was a nightmare. It was a complete non-stop cluster.. well.. you can imagine. By the time the project was called off I had devoted my most skilled programmer to looking for bottlenecks in and hacking MySQL code.

    We revisited the effort when the 4.x series hit its stride, but were afraid of the chance of failure again. We noticed that hard limits had been raised, and that the client lib was solidly performing, but, well, we never got things to that level where it beat what was already in place.

    Right now the database stands at 550GB or so (the server was upgraded to SQL2000 a while back [without incident, I may add]). If had of stuck with MySQL the first time through... I shudder to think where things would be 2+ years later. Failure, in this case, probably saved a lot of trouble.

    So, to the educated masses: can anyone speculate about this releases capabilities? The list of requirements would be:

    550GB, projected to be 1TB by 2007?

    2500 tables

    Full-text searching in approximately 1500 tables

    Queries that routinely join 25-150 tables

    ~800 stored procedures

    ~1500 views

    ~1000 triggers

    500-750 inserts/updates per second average, 20000 inserts per second peak, (approximately 40M new rows per day)

    1800-2500 queries per second average, 15000 queries per second peak

    Is MySQL 5.x the answer to my prayers? Or just a cruel reminder of why MS software costs what it does?

    1. Re:Opinions... by Anonymous Coward · · Score: 1, Insightful

      I worked with a group of professionals to port an COM+/MSSQL project to PHP/MySQL3.x platform.
      A 150GB database ... Everything about getting this app to MySQL was a nightmare. ... Postgres wouldn't fly with the customer


      Somewhere in this there's an idiot. It's either you or the customer.

      Is MySQL 5.x the answer to my prayers? Or just a cruel reminder of why MS software costs what it does?

      Postgres is free.

    2. Re:Opinions... by bani · · Score: 1

      don't forget... microsoft didn't write mssql -- they bought sybase and relabeled it.

    3. Re:Opinions... by Samus · · Score: 1

      Are you trolling or just plain insane? Most competent dbas would balk at just a 25 table query. I've written some pretty hairy queries in my life and I shudder to think what the inner join syntax would look like for 150 tables. I also wonder just what you are storing in your database if the rows are 100M a piece. Perhaps you should think twice about using your database as a file server.

      I can at least agree with you that MySQL is not an appropriate choice for anything but a trivial application.

      --
      In Republican America phones tap you.
    4. Re:Opinions... by Anonymous Coward · · Score: 0

      With that volume of data, tables and everything, there's 3 I would recommend to a customer: Oracle, DB2, MSSQL.

      If he was asking for something cheaper, perhaps Postgres can do it, perhaps it can't, I dunno. I'd be glad to try.

      Now come on: 2500 tables - no referential integrity, no stored procs, no views, inserts about par with queries.... MySQL?!?

      Like the previous AC said, somewhere there's an idiot...

    5. Re:Opinions... by quantum+bit · · Score: 2, Informative

      (Postgres wouldn't fly with the customer at the time because of vague issues with not knowing the product, not wanting to gamble on another OSS project, etc)

      Gaaaaah! The tragedy of your story is that Postgres quite likely would have worked well for the project your describe. MSSQL still uses row locking, so Postgresql > MSSQL for loads with high insert/transaction rates and many concurrent queries.

      MySQL is great for simple stuff but absolutely bogs down when you throw anything complex at it. PostgreSQL isn't quite a match for Oracle yet, but it's getting damn close for mid-level stuff that doesn't need replication.

    6. Re:Opinions... by johnjaydk · · Score: 1
      In your case I would have gotten Oracle, DB2 or the hell out of town. If you want to run a big gig like the one you outline then you have to come up with some cash.

      Personally I would have tried with PostgreSQL instead but it's still 10 times bigger than what I've tried so far with PG. There are 2T PG bases out there but on that scale I suggest you go pro.

      --
      TCAP-Abort
    7. Re:Opinions... by Anonymous Coward · · Score: 0

      Ingres might do?

    8. Re:Opinions... by Anonymous Coward · · Score: 0

      I've sucessfully designed and implemented a system that had requirements much greater than this, used MySQL 3 and was a resounding sucess. Unfortunately MySQL doesn't let you *think* like like a typical MSSQL DBA/Programmer. For data sets this size you must structure your data in such a way that all queries are index based. I'm under an NDA, so I can't give exact details. However, I believe I could provide an example. A series of products various attributes needed to be tracked on a per-day basis. This was done by using the SKU as the key and storing each value per day of the year as one big table (with 367 columns.) With a INT value for each column (that represented whatever the table was tracking for that SKU for that particular day.) There were about 15 different attributes tracked each day for about 5 million items. Because the data was acessed for all non-backend processes on a per-SKU basis it took hundreths of a second to get the results of a query for all of an item over a year.

      I don't remember the exact numbers but the database was hovering around 400 Gb when the project started and today it's many times larger and humming along fine on cheap commodity server hardware.

      Generally (at least with 3.x) you should avoid table joins whenever possible. MySQL slows to a crawl on multiple table joins (it's probably an exponential increase.)

      I guess I should just give the typical MySQL user's response.

      # 550GB, projected to be 1TB by 2007? # 2500 tables

      MySQL can handle this without problem, providing it isn't designed using a MSSQL paradigm. Just like changing an algorithm oft results in the best speed improvements in code. So does changing a design paradigm (because you are in fact switching algorithms.)

      # Full-text searching in approximately 1500 tables

      Umm.... Probably should handle this in the application layer (that's what we did.) Full text searches are for pussies. ;-P Fortunately we already had an in-house industrial grade search application. The data was stored in the database and output nightly to a special search application database that allowed full text searches.

      # Queries that routinely join 25-150 tables

      Don't join tables, at the very most only two tables at a time.

      # ~800 stored procedures

      My small MySQL user's mind cannont fathom why you would need 800 stored procedures. Let alone why you would re-translate all these into another database platform instead of finding a different way when you were rewriting it.

      # ~1500 views

      Ok, it's not *that* hard to just perform SELECT's and joins to get your data into the same condition you get when it's a view.

      # ~1000 triggers

      Again I've worked on several very large corporate databases and none of them needed *this* many triggers. Again.... I hate to say.... this must be handled at the application layer. It's kind of lazy programming to use these. You have to put so much of the code into the database itself. You must teach the triggers what needs to happen when a value is updated whilst your code already knows this. You end up writing things twice in two different languages (SQL and VB/PHP/C#/Python/Perl etc.) It's much cleaner to have the database store data and the program know how to access and use data.

      # 500-750 inserts/updates per second average, 20000 inserts per second peak, (approximately 40M new rows per day)

      Easy with properly MySQL-designed database.

      # 1800-2500 queries per second average, 15000 queries per second peak

      Again, well written, key only databases can easily meet these requirements. So I guess this is really no answer at all. The application your speaking of would require a complete rewrite in order to work well with MySQL. However, if it was written this way I believe from previous experience that it would in fact run faster than the old system, even if the system was MSSQL. This is a moot point however, it's alread written the way it is. If you want an OSS database to perform this task using the paradigm you've chosen then you'll have to wait for one to add these features (and do a GREAT job doing so.)

    9. Re:Opinions... by yoz · · Score: 1

      That was eight years ago, and there have been at least three major new releases (I haven't been keeping up) since then. I know how hard it is for some people to credit MS with actually writing decent solid code, but it's just possible that they have, you know?

    10. Re:Opinions... by gregfortune · · Score: 1

      Four things.....

      1) Every database has quirks and bugs you run into during development of large systems. Face it, not everyone is dealing with a 500GB dataset.

      2) Did you pay for a MySQL.com support contract? If not, you really should have. There's a serious advantage in paid support (probably exists for postgres as well...).

      3) You've heard of Wikipedia, correct? Yeah.... That's one big, heavily used, MySQL db. Last I heard, they were planning for the future and testing for multiple terabyte data sets. Seems like they're up around 500GB now. See http://meta.wikimedia.org/wiki/Wikimedia_servers for details on their server setup.

      4) Your point about problems only showing up on large datasets that would be invisible with smaller datasets is dead on. I recently loaded apache logs into mysql and ran across a bug indexing TEXT columns. I finally had to index on a CRC32 of the data to get acceptable performance. As I understand, the fix should show up in the next release of 4.11, but I never would have cared with less than a a couple hundred thousand rows.

      It's a bummer you ran into problems the first time through and it's also a bummer your code wasn't flexible enough to switch engines as necessary. A foray into postgres to validate problems with mysql vs problems with general approach would probably have been helpful. Oracle is free for development so that should have been investigated as well.

      On your next attempt, I'd suggest you approach it by prototyping across several likely engines and see which handles your particular problem with the most grace... And try to stay away from engine specific hacks so you can move it easily in the future.

    11. Re:Opinions... by bani · · Score: 1

      their track record speaks for itself, so the answer would be: highly unlikely

      its not hard at all -- if MS would actually write decent solid code then I would have no problem crediting them.

      as long as they continue to pump out rubbish code, they will be continue to be criticized for it.

    12. Re:Opinions... by ThisIsFred · · Score: 1
      I hope this doesn't cause those with MSSQL horror stories to come out of the woodwork, but...

      A 150GB database is very lower mid-range for a real-world database.
      I wouldn't classify that as a low- or mid-range size. If we compare against the total number of installations, I'd classify the low-end at a few hundred megabytes or less, since there are so many low-traffic sites running dynamic content or forums populating the web. I've seen MySQL installations choke with a hair over 200MB of data (not crash, but run ungodly slow), so I'm not surprised with the result. MySQL is clearly not the tool for the job here, and I don't know who recommended it based on your client requirements, but it was a mistake. In fact, I'm surprised that it even worked at all, however sluggish it was.

      These are the problems you may never notice if you just run a small website from MySQL, but will hurt you when you have a table with 100M records in it.
      From my very first experimentation with MySQL, I was exposed to the all the criticisms that many Slashdotters have posted here today. My understanding is that it's popular because Joe Sixpack can store his tiny data set somewhere, and it's more convenient to access than reading a bunch of flat files. Its popularity is helped by the network effects of its use, whereby the expectation for Software X is that you're running MySQL, and often MySQL support is the first thing that's added.

      I hope and pray that 5.x allows me to port this application. I'd love to get the whole thing end to end on a free platform. (Postgres wouldn't fly with the customer at the time because of vague issues with not knowing the product, not wanting to gamble on another OSS project, etc).
      That's a rather unusual situation. Your customer is paying you to rework their whole application end-to-end, but they're overruling your recommendation for a better tool to get the job done?

      Is MySQL 5.x the answer to my prayers? Or just a cruel reminder of why MS software costs what it does?
      I doubt it. The MySQL developers would have to admit something is wrong before they could answer anyone's prayers. I hate to pigeon-hole MySQL based on its reputation, but hey, it deserves it. And for what you're doing, I don't see how MSSQL's cost is a problem. MSSQL is a decent product for mid-size installations. For low-end stuff, it's too pricey, but if you buy volume licensing, it's not that bad. What is it, $2000/CPU for unlimited connections?
      --
      Fred

      "A fool and his freedom are soon parted"
      -RMS
    13. Re:Opinions... by dcam · · Score: 1

      Well, now you can credit them for rewriting Sybase as SQL Server, producing a better product.

      According to my history of SQL Server, Microsoft rewrote SQL Server for windows NT in 1992. Until then the results of the joint development with Sybase had run only on OS/2. This was not just a simple porting to a new platform, the kernel was rewritten as part of the port, while the products still remained exactly compatible in features.

      Since then SQL Server has had what I would call 3 major releases. 6.5, 7, 2000 and they are on the point of releasing 2005 (yukon).

      FUD is FUD, whether it comes from open source or elsewhere.

      You've just earned yourself a foe.

      --
      meh
    14. Re:Opinions... by kpharmer · · Score: 2, Insightful

      > Is MySQL 5.x the answer to my prayers? Or just a cruel reminder of why MS software costs what it does?

      Well, what's your time worth? what's the business worth that would be supported by this database? How much risk can you take?

      Assuming that you've got money at stake here, your best bet would be to stay completely away from mysql at this point in time: you aren't seriously thinking of porting 1000 triggers and 800 stored procedures to mysql's initial beta release of this functionality are you?

      Given your requirements, I can't imagine considering mysql or even postgresql right now. On the other hand, there might be scenarios in which you could begin to break up this database into components, and perhaps some of these components could live in other technologies.

      For instance, can some of your reporting & read-only queries run against a separate database? This is a typical oltp / olap split in which transactions hit a small transactional database with minimal data retention, then the data is moved over to a separate database for reporting & analysis. The reporting database ('data warehouse', 'datamart',etc) typically uses a denormalized model to avoid so many joins, typically also uses parallelism & partitioning for far better performance. You'll miss db2, oracle, sybase, or informix here. Even sql server most likely.

      The above wouldn't get you completely out of sql server, but is probably achievable. And would help to avoid trying to port thousands of triggers & procs.

    15. Re:Opinions... by bani · · Score: 1

      http://slashdot.org/~dcam/foes

      lol. looks like you have some serious problems you need to sort out.

    16. Re:Opinions... by dcam · · Score: 1

      I think not. I look forward to adding foes and friends as a way of separating the chaff from the wheat. You are chaff.

      You will notice that my friends list is as long as my foes list, which seems relatively balanced to me.

      I could respond in a true slashdot manner and insult you for any deficiencies that I consider you have (real or imagined), but I don't consider that insults really add to a discussion.

      --
      meh
    17. Re:Opinions... by gregfortune · · Score: 1

      "A 150GB database is very lower mid-range for a real-world database."

      I wouldn't classify that as a low- or mid-range size. If we compare against the total number of installations, I'd classify the low-end at a few hundred megabytes or less, since there are so many low-traffic sites running dynamic content or forums populating the web. I've seen MySQL installations choke with a hair over 200MB of data (not crash, but run ungodly slow), so I'm not surprised with the result. MySQL is clearly not the tool for the job here, and I don't know who recommended it based on your client requirements, but it was a mistake. In fact, I'm surprised that it even worked at all, however sluggish it was.


      It's pretty obvious that their tables weren't indexed properly. Please tell me you already knew that. Poor developers are not an indication of a poor engine...

    18. Re:Opinions... by Jamesday · · Score: 1
      20,000 inserts per second is the interesting number there. How are you doing that now on the hardware side? How long is that insert rate sustained? How much data volume in those 20,000 inserts per second?

      5.0 has a more greedy query optimizer and better index use so it may help. Or not.

      Have a chat with the MySQL performance team before giving it another try. Sounds like an interesting project.

      For anyone who doesn't know why those inserts are interesting, a single 15,000 RPM hard drive can do about 300 seeks per second (fudging a bit because writes are slower than reads), so this is talking about a peak insert rate which, if sent directly to the drives, would require every seek available from 70 15,000 RPM hard drives. Fortunately, there's RAM page caching and logs, the logs can be written sequentially and write caching disk controllers exist. But it's still interesting. The reads are far easier to handle. For scale, Wikipedia runs at perhaps 30 updates per second average, with about 2500-3500 mostly simple queries per second.

    19. Re:Opinions... by Mr+Bill · · Score: 1

      Read up on Write-Ahead Logging (WAL).

      WAL's central concept is that changes to data files (where tables and indexes reside) must be written only after those changes have been logged, that is, when log records describing the changes have been flushed to permanent storage. If we follow this procedure, we do not need to flush data pages to disk on every transaction commit, because we know that in the event of a crash we will be able to recover the database using the log: any changes that have not been applied to the data pages can be redone from the log records.

      And since the log file is written sequencially, a transaction can usually be commited with a single fsync. Of course eventually everything needs to be written to disk, but it can be batched and should be more efficient than writing each transaction to disk on its own.

      --
      Cees

    20. Re:Opinions... by Sinner · · Score: 1
      Queries that routinely join 25-150 tables
      You really were mad to try this with MySQL. But I can kinda understand where you're coming from. After all, nowhere on the MySQL site does it say "MySQL sucks at big joins".

      Don't get me wrong, what MySQL does well it does very, very, well, and I think some of its critics are living in a dream world. I've used a bunch of databases, and they all suck in unique and interesting ways. But I have serious doubts whether MySQL will *ever* be suitable for this sort of workload.

      Actually, with something this hairy, I'd be inclined to say "if it ain't broke, don't fix it", with a possible postscript of "if it is broke, buy Oracle".

      --
      fish and pipes
    21. Re:Opinions... by winchester · · Score: 1

      It is so wonderful to see that to you, all this stuff looks easy. If it is, which I, as a full-time DBA doubt severely, then please, please enlighten us with examples!

    22. Re:Opinions... by BJBob · · Score: 1

      As far as I can recall it went something like this...

      MS got Sybase SQL Server at around v4.2 and re-badged it to MS SQL Server. They worked with Sybase to improve it and that took it to 6.0.

      Around that time they bought Foxpro and built some/all of its query engine into SQL Server and got 6.5 (so much better than 6.0!).

      Then along came 7.0. What a difference!!!

      They re-wrote almost the whole app. Comparisons between the code base from 7.0 and Sybase 4.2 are almost impossible - it was just a different app.

      2000 was a set of improvements to the 7.0 codebase and 2005 will probably be more of the same, taking it towards interoperability with Longhorn/WinFS.

    23. Re:Opinions... by danheskett · · Score: 1

      First off, a good database is far more efficent than the filesystem for retrieving random "files"/records. Second, even good filesystems are incredibly bad at handling large number of small files. It's just not efficent. Third, even good filesystems are bad at having a huge number of files open and closed every second.

      I take offense to your claim I am incompetent. Most DBA's apparently expect bad performance and crappy software. The setup I describe works and works fine under two proprietary databases. It is fast, reliable, and produces nearly perfectly normalized data. All the design guides for MySQL tell you to "normalize to the nth degree, and then make it practical" meaning to repeat data for the sake of sparing your database server stress. That's garbage. I couldn't afford to waste 25% keyspace, or have 10%-20% data repetition. That's the whole point of relational data. No repeats. Fast access. Complex queries.

    24. Re:Opinions... by danheskett · · Score: 1

      Thanks for the ideas!

      A few quickies:

      1. I was able to change backends, but Postgres at the time was early and unheard of mostly. I successfully was able to run the system parallel on the Win setup and the Linux setup through some magic network hacks.

      2. We tried to work with some abstraction layers, but unfortunately, there really was nothing that could handle the load. The core of the project was written in C, and was just basic function code. Some IFDEFs helped to make things cross-platformish. We really needed to work directly with the mysql client libraries unabstracted to get any significant performance.

      3. So true about large datasets. Load 98M rows into a table and try to figure out why a certain select scans the whole table instead of just indicies.. argh.

      4. We did prototype, and under simulated load, MySQl was convincingly well behaved. We got near a launch date before our verification checks caught up with us. Things like data going in, and being immediately re-selected out only to be a few bytes off. Drat!

      Anyways, thanks for the response!

    25. Re:Opinions... by Anonymous Coward · · Score: 0

      Don't join tables, at the very most only two tables at a time.

      You sir, are an idiot who doesn't understand the first thing about normalised data, and hasn't done any serious database work at all.

      The report that I'm supposed to be working on right now joins over 10 tables and has two nested subqueries. And you know what? This is not rocket science, it's not even extraordinarily complex.

      If you want an OSS database to perform this task using the paradigm you've chosen then you'll have to wait...

      No, you won't. PostgreSQL.

    26. Re:Opinions... by danheskett · · Score: 1

      I was afraid you'd say somethng like that. That seems to be the consensus.

      It sucks to be a consulant who believes in OSS from the ground up, with all thier soul, from a deep level, and then to tell them: "nope, sorry, there exists no open source software that meets your needs, or even comes close. now, let's get that 1.5M quote from Oracle out".

      Ohh well.

    27. Re:Opinions... by Anonymous Coward · · Score: 0

      Did you ever take a look at Firebird?
      http://firebird.sourceforge.net/

      Might have the features you need, and stands up well against Postgres.

    28. Re:Opinions... by LilMikey · · Score: 1

      Sybase is still a major database player. How'd they sell off their database and still manage to sell an enterprise database themselves? I'm not doubting you or anything just want to learn some history.

      --
      LilMikey.com... I'll stop doing it when you sto
    29. Re:Opinions... by Anonymous Coward · · Score: 0

      As I understand it, Sybase and MS joined forces to develop the project (up to 6.0, I think). I guess Sybase couldn't afford the work on their own. Then Microsoft forked the development at 6.0 to suit their own requirements. There was some sort of "cross-license" agreement up to then, I think.

      You're right about Sybase, of course. They're still a significant player (I did some freelance work on it around 1997).

    30. Re:Opinions... by Anonymous Coward · · Score: 0

      Wow... a gnarly application (/me shudders at those joins. I understand the purpose, but I can just barely imagine what they look like!).

      That said, I think Postgres or Firebird would be better... I've never played with either on large apps, but I thought Firebird (ex-Interbase) was supposed to kick-ass -- then again, time I looked at it for big stuff was 1997 (!).

      But the MVCC should at least help.

    31. Re:Opinions... by Anonymous Coward · · Score: 0

      gahaha.

      dude. dude. DUDE!

      you seriously need to get out more. your life so obviously revolves around /. and thats not healthy.

      put the mouse down, step away from the keyboard and get some sunlight eh?

    32. Re:Opinions... by Anonymous Coward · · Score: 0

      yet another luser whose life revolves around /.

      very, very sad.

      to quote william shatner: get a life!

    33. Re:Opinions... by Anonymous Coward · · Score: 0

      there's a saying we have in enterprise IT in financial circles:

      MSSQL: when mediocrity is your role model.

  81. What everyone else misses... by ImaLamer · · Score: 1

    This software comes with ABSOLUTELY NO WARRANTY. This is free software,
    and you are welcome to modify and redistribute it under the GPL license

    I see a lot of people complaining that MySQL doesn't have this or that and that it's hard to get things implemented in the database engine but I don't see many people saying that they've done anything with MySQL to make it better or make a reproduction that stands on it's own with the features they want.

    It works for me, I've not changed it. So what's your excuse?
    1. Re:What everyone else misses... by platypus · · Score: 1

      It works for me, I've not changed it. So what's your excuse?

      Postgres

      SCNR

  82. Re:Mysql is still a rip off by Anonymous Coward · · Score: 0

    Because the account is a troll account and he's automatically modded down -1 for having such shitty karma.

  83. Is this a dupe by Anonymous Coward · · Score: 0

    Well, Taco posted it so I'm pretty sure its a dupe.

    1. Re:Is this a dupe by klipsch_gmx · · Score: 0, Redundant

      lolz

  84. Re:Why so many Postgres trolls are on /. by Anonymous Coward · · Score: 0
    Then I realized that people who use MySQL actually have jobs and are working while Postgres users are still living in there parent's basement

    Actually, I've found that I post on slashdot much more often when I'm at work. Shh...don't tell my boss.

  85. MySQL - I love it! by kilodelta · · Score: 2, Interesting

    We just upgraded to MySQL 4.1.1 - suits our needs. Fast, cheap and reliable.

    I would love to ditch our one critical MS-SQL server and convert it to MySQL but that one is heavily dependent upon triggers and stored procedures for two databases. Until MySQL 5 is up to snuff we won't even entertain transitioning those two.

    That being said, I note that the MySQL Migration Toolkit is very nice. Too bad you can't suck the data from an MS-SQL server yet. But give it time - someone will figure out how to do it.

  86. But does it support WITH RECURSIVE? by mark-t · · Score: 2, Insightful

    I must really sound like a broken record... I distinctly recall asking _exactly_ the same question when the announcement for PostgreSQL 8.0 appeared on slashdot.

    1. Re:But does it support WITH RECURSIVE? by CaptainPinko · · Score: 1

      btw, does PG?

      --
      Your CPU is not doing anything else, at least do something.
    2. Re:But does it support WITH RECURSIVE? by mark-t · · Score: 2, Informative

      No

  87. Re:Why so many Postgres trolls are on /. by SparafucileMan · · Score: 1
    Even better: no one responds to LISP flamewars in favor of LISP because the LISP programmers hit nirvana decade ago, consider the DBA a commodity who just needs to make sure 1 = 1 and that the damn server is up. The LISP programmer meanwhile, in enlightenment, sees only (x), (x x), and (f x).

    "Oh, you mean SQL...yeah i used to use that back in the day...before I realized it wasn't even Turing-Complete. How's life in India these days?"

  88. Conformance by XanC · · Score: 2, Funny
    Why, version 3.2, of course -- to match the version of HTML they are almost confirming to.

    More like to match the HTML they are not conforming to.

  89. RIP the simple database by Baavgai · · Score: 1, Insightful

    Reasons to choose MySQL for a project:
    - It's small and simple.
    - The project will maintain logic in the application layer.
    - Other "Enterprise" databases seem like overkill for the project.

    Reasons to choose a more bloated MySQL with new features already well established in other database servers:
    - None

    Seriously, I can't imagine that this would be required or desired. Are they actively trying to move themselves out of the niche that they fill so well?

    1. Re:RIP the simple database by Baavgai · · Score: 1

      Hmm, Troll for simply stating a point of view? Not even condescending or inflammatory?

      Crap, now I'm going have to turn my filters off on topics in case a similar narrow minded pinhead modded out some other unpopular view.

      My faith in the /. mod system has been wounded. I have to metamod more...

  90. Re:Why so many Postgres trolls are on /. by monsterzero2002 · · Score: 0

    listen pal, there is nothing wrong with living in my parents basement. Nice and cool in the summer. And yes I use Postgres.

  91. Data integrity by metamatic · · Score: 1

    Data integrity is not just for banking. When the company's content management system goes down and they want to know what was lost, the answer "I don't know, we'll have to roll back to the previous backup and have you re-enter all the edits made since then" is not going to win you many friends...

    --
    GCHQ Quantum Insert installed. If only our tongues were made of glass, how much more careful we would be when we speak
  92. Debian by metamatic · · Score: 1

    You won't see Debian ship it unless they fix the licensing to make it free software again.

    That and sub-queries are the two things I want MySQL to fix...

    --
    GCHQ Quantum Insert installed. If only our tongues were made of glass, how much more careful we would be when we speak
    1. Re:Debian by Anonymous Coward · · Score: 0

      Moot point. Debian won't be around long enough to ship it because they're so busy being pedantic that they're becoming irrelevant and nobody cares about them anymore, not even their own users and developers.

      BTW, MySQL has subqueries. Has had for a little while now.

    2. Re:Debian by metamatic · · Score: 1

      Well, presumably subqueries were added in v.4, which I won't see because it's not free software.

      Anyhow, I'm switching to PostgreSQL...

      --
      GCHQ Quantum Insert installed. If only our tongues were made of glass, how much more careful we would be when we speak
  93. 400% of the market by GojiraDeMonstah · · Score: 1

    According to my math, anyway.

    "...It accounted for 40 percent of open source database deployments...
    "I believe it will change how MySQL is perceived in the market," said Axmark, who then added that he thought this release would make MySQL an option for at least ten times as many users as before.

    --
    "Stop throwing the Constitution in my face, it's just a goddamned piece of paper!" - George W. Bush Nov. 2005
    1. Re:400% of the market by EdMcMan · · Score: 1

      I am glad I'm not the only one who picked up on that.

    2. Re:400% of the market by Lord+Bitman · · Score: 1

      and of course we know that nobody uses non-opensourced source databases.

      Too bad it's impossible to imply somebody is stupid by saying "Your math sucks" without getting modded "flamebait" or "troll". You'd think "informative" would work.

      now, the statistic that 64% of administrators have said they use open source dbs might be relevent, if of course any of those could be considered to be part of the "market"- I doubt my PHP/MySQL driven message board counts as part of the "Market".

      --
      -- 'The' Lord and Master Bitman On High, Master Of All
  94. Re:foreign keys? try write-ahead logging by Unordained · · Score: 3, Interesting

    ... or Firebird with safe-write enabled. There's no appreciable start-up cost even if your db server lost power in the middle of a large transaction. It will reclaim "garbage" space during normal activity as it discovers areas that aren't in use because their transaction got rolled back by the power failure. Handy. (Firebird and PostgreSQL are extremely similar in terms of transactional capabilities; the big difference was SWEEP vs. VACUUM, which apparently Pg took care of in 8.0?)

  95. Is it still small and easy? by MobyDisk · · Score: 1

    MySQL fits a niche. Once all these features are added, will it still be the small, fast, easy to install SQL server? If so, I think someone should fork it and keep the old version. Can anyone address this?

  96. Re:foreign keys? try write-ahead logging by ahodgson · · Score: 2, Informative

    No, you still need to vacuum Pg 8.0. It includes an auto-vacuum daemon that does a decent job, though.

  97. Come on stop whining! MySQL is SUPER! by Phiu-x · · Score: 1, Insightful

    First: Transactions isolation and innodb can solve most of these integrity problems. Both can be used with current (and earlier) versions of MySQL.

    Also, just make sure you give just enough rights to your users so they don't fsck up the database.
    And why would someone make change to the tables ?? These are supposed to be done prior going into production phase as in the design phase. Have you ever heard of relationnal database theory stuff like the normal forms? There is really no such things as a bad MySQL but really just bad (or absence of) good design. You really need to look over this while developping a system. I learned to never trust the engine and use the programming language to determine if my data where correctly committed/erased, etc. The database is just that : a place where to store your data. I understand that its sometimes tempting to rely on the database error system instead of your own mecanism, but you should be smarter than the database and think about where those things (bad integrity, errors, suspicious things) could happen and prevent them or if you can't, code an error checking/catching mecanism to deal with them : error catching is the way to go.

    I don't know about your background, but alot of criticism about MySQL come people who have poor programming skills and tend to code half-assed attempts of systems thinking that the database will solve all of their problems when they don't even know that an index on a frequently used column could increase their query times by ten folds...
    Others come from very high-end legacy systems (think Oracle) and bitch and whine about MySQL not having this or that feature. Excuse me but Oracle's views , triggers and stored procedures are really usefull, but most of these things (if they are THAT necessary) can be done by having a good design and appropriate coding behind the application/system.

    I'll say it again: a database is a place where to store data and preventing their corruption by providing you with an integrity checking mecanism
    . That's it. Now if other features exists and you can make good use of them then good for you. But I see these as extras and not necessary when good design an implementation is done. Its really a pity these days when people bitch about MySQL but don't know how to implement a good data storing scheme using plain old textfile. (In my days ... ;) Count yourself lucky to have something like MySQL available for free today.
    Phew ... My two canadian pennies.

    --
    This is a stolen sig.
  98. too late by danharan · · Score: 2, Insightful
    From TFA:
    MySQL is the most widely used open source database, according to a Evans Data Corporation survey released in January. It accounted for 40 percent of open source database deployments, while Firebird and PostgreSQL accounted for 39 percent and 11 percent of deployments respectively.
    Since Firebird is expected to hit 2.0 sometime soon, I'd expect them to give MySQL some competition. And how can anyone on /. forget PG?

    Since I'm using Hibernate for most new development, there's nothing stopping me from looking at the more advanced RDBMSs out there. Given how MySQL told us we were wimps for wanting things such as triggers and FKs, I don't really trust them to keep understanding what I need as a developer.
    --
    Information: "I want to be anthropomorphized"
  99. you're kidding, right? by portscan · · Score: 3, Informative
    from the article:
    "stored procedures, triggers and views,"

    or just spend 2 minutes on the mysql website and you could have found this.
  100. What? No! by delmoi · · Score: 1

    That post was about mysql5. This post was about how they fixed 10 years of criticism in one release, and how it was the most important release ever!

    Duh, get it straight.

    And why don't more people use Postgres?

    --

    ReadThe ReflectionEngine, a cyberpunk style n
  101. Re:foreign keys? try write-ahead logging by Anonymous Coward · · Score: 2, Informative

    InnoDB (that livejournal use for most of their tables) implements a doublewrite buffer for flushes to disk like this, but you can disable that if you want for performance reasons (*not* the default, though), like you probably would if you have battery backed up drives.

    The problem with LiveJournal was that they had this flag turned off to sync() properly since they trusted their hardware's settings to be true.

    This would have happened with any other RDBMS as well.

  102. MOD PARENT UP! by Anonymous Coward · · Score: 0

    This is a rather important detail when taken in the context of the grandparent post.

  103. Hey wait a second... by TiggertheMad · · Score: 1

    Was that like, irony?

    --

    HA! I just wasted some of your bandwidth with a frivolous sig!
  104. Try reading a book by johnjaydk · · Score: 1
    Installing PG from source is not exactly rocket science. But if you need the steps spell'ed out then I can recommend the book "Practical PostgreSQL" (http://www.faqs.org/docs/ppbook/book1.htm/) It's slightly dated but still work just fine.

    Sure you need to vacuum the tables with frequent insert/update/deletes but thats the price of REAL ACID. It's not like cron jobs are that hard to setup anyway.

    --
    TCAP-Abort
  105. Re:Come on stop whining! MySQL is SUPER! by LurkerXXX · · Score: 5, Insightful
    First: Transaction isolation and innodb can NOT solve these integrity problems.

    The integrity problems are specifically because of poor implementation of foreign key and other constraints. Read up at http://sql-info.de or a million other sites on the net. There are fundamental problems in their implementation. It doesn't matter if you are using transaction isolation or innodb tables, MySQL silently changes data in many many circumstances. This is bad.

    My 'users' aren't touching the database design. The database developers are. Multiple developers. When one makes a change and goes off shift, the next guy working on the table should immediately know if something changes made by the previous developer have invalidated some new data/scheme he's implementing. A database should never silently accept errors. It should always flag someone and refuse to make (or appear to make) a bad change.

    I don't know about your background, but a lot of MySQL users haven't a clue how a real database should be designed or what real data integrity is. I'm not bitching about MySQL not having features, I'm bitching about it's shoddy implementation of the features it already has. Foreign keys (in innodb) do not work right! Constraints do not work right! Many other basic features that MySQL claims to have do not work right!

    I'll say it again: A database should protect your data. It should not silently change data it doesn't like, instead of aborting the transaction and throwing proper error message.

    Postgres is also available for free. And it's designers appear to care about data integrity.

  106. Oh yeah by delmoi · · Score: 1

    Also, in any company you're going to have more then one program written by more then one person hitting the DB. Just the way it is. The less chance of having a bug in the DB itself (which everything depends on) the better.

    --

    ReadThe ReflectionEngine, a cyberpunk style n
  107. Marketshare by yankeessuck · · Score: 1

    David Axmark's just saying he expects up to 10x as many users.

    The 40% figure refers to their OSS marketshare. Well, what's MySQL's marketshare of the entire database market (OSS and non-OSS)? If it's less than 10% then it's mathematically possible if all these people suddenly deploy MySQL overnight.

    Also, he didn't say when he expects his userbase to actually hit the 10x mark. It's probable that the size of the overall database market will have grown by then.

    1. Re:Marketshare by GojiraDeMonstah · · Score: 1

      My original post was meant to be a joke. I suppose it was less than 100% successful.

      --
      "Stop throwing the Constitution in my face, it's just a goddamned piece of paper!" - George W. Bush Nov. 2005
    2. Re:Marketshare by yankeessuck · · Score: 1

      Yeah, I thought the whole marketshare thing was pretty obvious but then again this IS Slashdot so one never knows...

  108. MPU by yem · · Score: 1

    Oh yeah.. that f**ked me something nasty last year. It runs Pg now ;)

    --
    No, I did not read the f***ing article!
  109. A Needed Update by 00+Agent+Kid · · Score: 1

    I hope that they change the way invalid data is handled. Now, if I enter a string into an integer field, it just changes the data to some number (usually zero) instead of throwing an error. I would also like to be able to have some sort of cron job like function in MySQL.

    I don't think that this is the 'Most Important Ever' update for MySQL, but it is indeed a needed one.

    --
    INACTIVE ACCOUNT
  110. raw speed, you say? by ^Z · · Score: 1

    Check out K Database. I wonder if anything beats it. And yes, it has quite powerful SP language.

    Two disadvantages, though: it wants lots of RAM, and it costs much.

    --

    Computers make very fast, very accurate mistakes

  111. Re:foreign keys? try write-ahead logging by Unordained · · Score: 3, Interesting

    Doesn't "Vacuum" now run without having to take the database offline? As I understand it, that was what was keeping Pg from being truly 24x7. "Sweep" in firebird runs as a background process and -might- slow down the server while it's running, but doesn't prevent anything from happening. I thought that's what Pg had switched to?

  112. Serialization == non scalable. by LoztInSpace · · Score: 1

    Sure if something takes 30 seconds you might want to look for the underlying problem. Consider though that even if the particular operation takes 100th of a second, once you serialize you are limiting yourself to 3000 users before you are GUARANTEEING 30 second access times.
    Not good.

    1. Re:Serialization == non scalable. by defile · · Score: 1

      Oh my, you're right! If that happens, it means I might have to... USE MY BRAIN AGAIN! *GASP!*

      Why does anyone expect something that worked fine with 10 users to work fine with 100,000? It'd be swell if it did work out that way, but do you always write a quicksort if a bubble sort will do just fine, knowing you can switch to a quicksort later on if it becomes a problem?

      "Enterprise" projects are so full of unique challenges, I don't see why something like the way you store your data makes a fuckola of a difference in the grand scheme of things. Everything gets rewritten a few times anyway. Even eBay.

      It's much more harmful when you get into the mindset that application A automatically means data storage scheme Y, or specifically, Brand O's data storage scheme Y.

    2. Re:Serialization == non scalable. by xeno-cat · · Score: 1

      Why write a bubble sort when you can have a quik sort for free?

      Kind Regards

      --
      "A few great minds are enough to endow humanity with monstrous power, but a few great hearts are not enough to make us w
    3. Re:Serialization == non scalable. by defile · · Score: 1

      If you have to write a sorting routine, bubble sort is the easiest to write, easiest to maintain, and will work fine on modest datasets.

      Should these assumptions fail you, you can go back and write a better algorithm.

      These lessons can carry over to data storage too.

    4. Re:Serialization == non scalable. by SparafucileMan · · Score: 1
      "Enterprise" projects are so full of unique challenges, I don't see why something like the way you store your data makes a fuckola of a difference in the grand scheme of things. Everything gets rewritten a few times anyway. Even eBay.

      Yeah, that is the point. Who gives a fuck. Just get the damn thing up and make it work and make it not loose money.

      Cause you're just going to be rewriting it every month anyway.

    5. Re:Serialization == non scalable. by defile · · Score: 1

      Cause you're just going to be rewriting it every month anyway.

      I've noticed that a lot of people are absolutely terrified of writing code. They don't actually want to think about the problem, they just want to put a black box in its place and say mission accomplished.

      It's a nice ideal, but I'm not sure the developer wouldn't have been better off solving the problem uniquely, exactly, and effectively without involving some other beast of a module that has its own release cycles, maintenance hassles, etc.

      It may take me longer to solve the problem myself, but it feels like time better spent because I know what's there -- it's not a black box.

      I can take ownership of the problem..... bingo! Just answered my own question. ;)

    6. Re:Serialization == non scalable. by LoztInSpace · · Score: 1

      Oracle seems to work ok with 10-100000 users because they have been doing it for years. One of the reasons they can is because huge effort is put into everything possible being non-serial.
      If you're still writing sort routines then I'd suggest you are looking at problems at a lot lower level than the enterprise and are happy to reinvent the wheel. Personally I prefer to use libraries & existing, proven technology where it exists.
      The way you store your data is important. It is everything. Applications come and go. Trends change, technology changes, but the underlying facts and accumulation of information about your business, clients and competition does not. That is why you need to care how you store your data. Would you use a bank that stored its accounts in an .XLS file on Bob the manager's C drive?

  113. Let me guess by gnovos · · Score: 2, Funny

    It'll be released on Feburary 31st?

    --
    "Your superior intellect is no match for our puny weapons!"
  114. Re:foreign keys? try write-ahead logging by Pathwalker · · Score: 2, Informative

    A regular vacuum does not block reads or writes. It does block changes to the table definition, so you won't be able to add, delete, or change the type of fields while it is running.

    Running vacuum full or vacuum freeze do lock the table while they are running, but the need for vacuum full can be avoided by running vacuum before the free space map fills up, and vacuum freeze is only needed to prepare a read only database so that it never needs to be vacuumed again.

    This is discussed in the docs here.

  115. Re:Why so many Postgres trolls are on /. by Anonymous Coward · · Score: 0

    just like BSD section. Many linux trolls flaming BSD. No point, just copy old post.

    Here is a better. At least people they can point out mysql's weaknesses.

  116. Some Wikipedia corrections by Jamesday · · Score: 1

    We're actually only preparing for 400GB of disk space on our current generation of Wikimedia database servers. Once all of our compression work is finished we'll be down to perhaps 100GB in the database. Without compression we'd be at about 300GB already. Of course, people are just going to keep editing, so we'll use the extra space and compression power soon enough. Next generation will be after a terrabyte of usable RAID 10 space.

  117. Re:foreign keys? try write-ahead logging by js7a · · Score: 1

    True, but for a small server (or any kind of server without reliable UPS) MySQL isn't is fault tolerant as InnoDB or PostgreSQL.

  118. Worst. Slashdot Post. Ever. by ananegg · · Score: 1

    What? someone had to say it!

    --
    Insert Pithy Quote here.
  119. Re:Why so many Postgres trolls are on /. by Anonymous Coward · · Score: 0

    mysql user = slient dog........

  120. We keep critcism!!!! by Anonymous Coward · · Score: 0

    anyone want to say!

    please continue this thread!!

    mysql will be king of DB in 2020!

  121. How about fixing the ACID compliance? by Daniel+Phillips · · Score: 3, Interesting

    Without proper ACID compliance, everything else is decoration. The recent failure of one of the Wikipedia MySQL servers to start up again after a power failure proves beyond a reasonable doubt that MySQL is not ACID compliant.

    (Was the corruption due to a disk lying about cache flush/disable? Easy, test the disk. If it doesn't lie, then MySQL was the culprit.)

    --
    Have you got your LWN subscription yet?
  122. Re:Come on stop whining! MySQL is SUPER! by sapgau · · Score: 2, Insightful

    I learned to never trust the engine and use the programming language to determine if my data where correctly committed/erased, etc. The database is just that : a place where to store your data. I understand that its sometimes tempting to rely on the database error system instead of your own mecanism, but you should be smarter than the database and think about where those things (bad integrity, errors, suspicious things)

    Part of the benefits of having a good db product is that you have a good level of trust when you delegate data for storage or retrieval. I don't think you need to go back and re-check the data you inserted/updated, you should check for unexpected errors and delegate to your application accordignly.

    Sounds like your code is getting coupled with a sort of database management system because you suspect or can't trust your database to do fairly atomic operations.

    My CAN$0.02

  123. OT: "Do good work!" by Anonymous Coward · · Score: 0
    Reminds me of the story about Gus Grissom, one of the early astronauts (read more here or here):

    "During one visit to the Convair factory in San Diego Grissom was asked to speak before the employees. Grissom hadn't the faintest idea what to say and on the spur of the moment said 'Do good work.' It became the mantra of the workers, helping them always remember that those particular Atlases would have a person on top."

  124. Re:foreign keys? try write-ahead logging by jadavis · · Score: 1

    In PG, vacuum has never required the DB to be offline.

    In the distant past, vacuum required more problematic locks. Now it doesn't interfere with concurrent transactions. It even has built-in delays so that it effectively has a lower priority (which is configurable).

    PG has been a 24x7 DB for many people for quite some time. Now, however, PG does better when under very high load 24x7.

    --
    Social scientists are inspired by theories; scientists are humbled by facts.
  125. Re:foreign keys? try write-ahead logging by RonBurk · · Score: 1

    Consider how many copies of MySQL are running on IDE disks. Do any IDE disks in common use actually support a reliable "tell me when this data is flushed to the magnetic media" operation? It certainly appears that Microsoft doesn't think so. Therefore, I speculate that few, if any people who switched from MySql to PostgreSQL because of WAL actually understood the likelihood of data loss that remained.

  126. Re:foreign keys? try write-ahead logging by js7a · · Score: 1

    Supporting a reliable flush callback is not the same thing as supporting a reliable flush operation. I can not speak for the so-called "storage area network" but most forms of NFS support fflush(), last I checked. Perhaps SMB does not?

  127. SAPDB? by Argon · · Score: 1

    Did they "fix" MySQL or did they rename the database they acquired from SAP.

  128. Re:foreign keys? try write-ahead logging by jadavis · · Score: 1
    This is an excerpt from "High Performance MySQL (emphasis mine)":

    We know that MySQL records queries in the binary log after it executes them. We also know that MySQL writes transactions to the binary log after they have been committed. What happens if MySQL crashes, or someone pulls the plug in the microseconds after a transaction has been committed but before it writes the transaction to the binary log?

    The result is that the master will contain the results of having completed the transaction, but the slaves will never see it. Ever. The transaction may have been a simple insert, or it could have been something as dramatic as a DROP TABLE command.

    There is currently no workaround for this problem. Luckily MySQL crashes are rare. Make sure the power cables are plugged in tightly!


    Wow. In PostgreSQL that would be considered a major bug. The fact that MySQL does not view it that way scares me.
    --
    Social scientists are inspired by theories; scientists are humbled by facts.
  129. Re:foreign keys? try write-ahead logging by jadavis · · Score: 1

    As long as you turn off write caching, you're good.

    --
    Social scientists are inspired by theories; scientists are humbled by facts.
  130. Re:foreign keys? try write-ahead logging by Anonymous Coward · · Score: 0

    If they hang around on the postgresql mailinglists for about a month they should know this. It's a frequent topic over there - especially when O_DIRECT vs fsync() equivalents were discussed for the windows port. Apparently in some OS's they do either disable the IDE disk's write caches and/or have a way of flushing them.

  131. Re:Come on stop whining! MySQL is SUPER! by jadavis · · Score: 2, Insightful

    Most of your points just fall apart when multiple applications are accessing the same data set. In order to "never trust the engine" all the applications need to independently verify the consistency of your data.

    If one application does something slightly wrong (perhaps due to a crashed webserver or whatever) if could leave inconsistent results in the database, and could cause other applications to fail, perhaps with very hard to find bugs.

    For all the applications to reliably maintain the consistency of the data requires redundant code orders of magnitude more complex than simply relying on the DB engine. What if a web server crashes after it inserts some data but before it checks if it's right? What if another application accesses wrong data before the first application fixes it? All of these are non-trivial problems that take database developers a long time to get right.

    I see why you came to the conclusion that you should "never trust the engine" when your engine is MySQL. However, perhaps it will save you some time if you use a database that you can trust (like, pretty much any other RDBMS).

    Also, some databases are more than just a place to shove/grab data. They call them "Relational Database Management Systems". Relational mathematics (which have been developed over 30 years) are used to abstract the data from the physical storage. That's important, because application A might prefer to write data in one way, and application B might prefer to read that data in another way. RDBMSs avoid client-side manipulation or processing. You can not only get whatever data you want, you can get it in whatever form you want.

    The kind of databases you're talking about are record databases, or some such. Those were available many years ago, and people decided they needed something better. Relational databases took over for a reason.

    --
    Social scientists are inspired by theories; scientists are humbled by facts.
  132. yes, and are you surprised? by KZigurs · · Score: 2, Insightful

    And you even attempted to consider MySQL for such a project? Started development? Oh my, oh my. I hope you have learned your lesson.

    I really wonder why, oh why, people even consider PHP/MySQL combo for any significantly active application development, lest likes of enterprise applications.

    PHP is (and still it is) just a templating system for www applications. It's ridiculous, it's slow, it's insecure, but it's simple and forgives any brainfucks mistakes so that he can insert that dynamic list of his favorite pr0n movies of all time. MySQL is small, reasonably elegant, small-datasets oriented database with minimized mainteance overhead (on expense of chance to tune any more advanced options).

    You could, possibly, just possibly, pull this off with a postgresql (we have), assuming you had a good DBA with experience in PG configuration and optimisations, but even attempting it with MySQL?

    Fuck, CHOOSE THE RIGHT TOOL FOR THE JOB! And even if you have client that believes in yet another OSS publicity shit flying around (like, we are the only, the best, M$ is evil, oracle has larry, db2 is so oldschool and informix is satan's outspawn) RUN, the shit will hit the fan really soon.

    (and yes, your requirements most obviously calls for a nice, good Oracle 8i+ database (it isn't THAT expensive) with java frontend and data objects caching in middle layer. Nothing that experienced programmer couldn't compile within a month (based on tablecount). And everybody would be happy. Oracle DBA's are pretty easy to find, even reasonably competent ones and Java programmers grow on trees.)

    1. Re:yes, and are you surprised? by danheskett · · Score: 1

      In my defense:

      1. MySQL appeared to work after initial porting. The issues that came up were deep, and only showed when under real non-simulated load.

      2. PHP is really just a small shell of functions for the user to see. The true work was done in regular old C.

      3. As far as Oracle, they were talking 1.25 to 1.5M.

  133. fancy features by KZigurs · · Score: 1

    Fancy features like data integrity or brakes in your car.

    Hell, I guess the keys for your apartament is just a fancy feature too.

  134. The wonders of progress by KZigurs · · Score: 1

    I feel, kinda, like if RDBMS had been finally discovered ;)

  135. Re:foreign keys? try write-ahead logging by Kent+Recal · · Score: 1

    That's why people consider MySQL a read-only RDBMS.

  136. Re:foreign keys? try write-ahead logging by Kent+Recal · · Score: 2, Informative

    You can not reliably turn off write caching on IDE disks.

    Quote:
    However, some IDE drives will report that their write cache is turned off, but still use it and remain unreliable. It is difficult to fine out which drives are lying without extensive testing.

  137. Re:Come on stop whining! MySQL is SUPER! by Kent+Recal · · Score: 1

    I learned to never trust the engine and use the programming language to determine if my data where correctly committed/erased, etc.

    Quite interesting what MySQL taught you...

    So, you seriously perform a SELECT after each and every INSERT or UPDATE?
    You do realize how that affects your systems performance?

  138. WAL by Jamesday · · Score: 1

    I used roughly one seek/rotation per update and some fudge factor, for the fsyncs. Assumed update=transaction, which isn't necessarily so, just worst case.

    The InnoDB engine in MySQL uses the write-ahead logging approach. Writes to its log and does an fsync to flush it but caches the database page updates in RAM. Flushes those as time allows, at a checkpoint or when the number of dirty (modified) pages exceeds the user-configured threshold.

    Of course, write caching disk controllers and more fancy storage systems change the numbers substantially. Was trying to give those who haven't looked at this sort of thing some idea of what was being discussed. I'm interested to know what it's currently running on.

  139. Pardon my ignorance, but... by SoulSkorpion · · Score: 1

    ...if MySQL is Open Source, why didn't anyone go in and fix the problems themself? I realise misfeatures like this are difficult to correct without revising the whole design, but surely in ten years at least some of the crap could be fixed?

  140. Re:foreign keys? try write-ahead logging by ahodgson · · Score: 1

    They fixed that somewhere in the 7.x series.

  141. Re:Terri Schiavo, dead at 41 by Doctor+Faustus · · Score: 1

    And then do it again.

  142. Up to Google to say that by Jamesday · · Score: 1

    I don't track Google's activities that much.

  143. ok ;) by KZigurs · · Score: 1

    My apologies - I probably was a little harsh.

    Anyway - yet another lesson learned :)

  144. Re:foreign keys? try write-ahead logging by Jamesday · · Score: 2, Informative

    The book chapter you quoted from isn't current, though it's still very useful as an overview. Recent versions handle this, both logging consistently and rolling back consistently, including to replicating slaves. See the manual section on the binary log.

  145. MySQL status by shani · · Score: 1
    We've got a couple of servers handling querys in a cluster:

    Uptime: 10418160 Threads: 4 Questions: 2625533853 Slow queries: 3766 Opens: 737894304 Flush tables: 1 Open tables: 64 Queries per second avg: 252.015

    Uptime: 12681405 Threads: 4 Questions: 2630532355 Slow queries: 1900 Opens: 749532935 Flush tables: 1 Open tables: 64 Queries per second avg: 207.432

    We are very query-heavy, as you can see from our update server:

    Uptime: 12139590 Threads: 5 Questions: 164806650 Slow queries: 3362 Opens: 17307356 Flush tables: 142 Open tables: 64 Queries per second avg: 13.576

    The query servers get millions of queries per day, admittedly only thousands of updates (tens of thousands, but still). We have been using InnoDB for several years now, and have never had any problem with database corruption, etc.

    I did do benchmarking of Postgres for the types of queries in our application several years ago, and found that it was 10 to 20 times slower than MySQL. That was using MyISAM tables, which were the best ones available at the time.

    Before we converted to InnoDB we did benchmarking of MyISAM versus InnoDB, and discovered that for a single query InnoDB could be 3x slower than MyISAM. But for our server under peak loads it was only about 10% slower than MyISAM - and InnoDB removed a degenerate case where our entire server was blocked for minutes at a time. :-/

    From what I can see, MySQL performs well, is straightforward to maintain, and has all the functionality we need (and then some). Converting to Postgres - or indeed any other SQL database - makes about as much sense for us as migrating from Linux to GNU Hurd.

  146. Re:foreign keys? try write-ahead logging by Jamesday · · Score: 1
    FWIW. I disagree with the Microsoft recommendation to turn off torn page detection when you have a battery backed up hardware caching controller. Both Wikipedia and Livejournal had those controllers and experienced what Microsoft calls torn pages. Better to know than not. To give some idea, since the problems at Livejournal and Wikipedia:

    One controller vendor has released a new firmware update, required for all users of battery backed up cache. Anyone with a 3-Ware SATA controller and battery backup should get their latest firmware. Wikipedia has two of these controllers.

    A SCSI controller vendor didn't turn of hard drive write caching (!!) and didn't provide any way to get through the controller to do it, has released a utility to let you turn off the hard drive write cache on some models, with more to come. Not turning off drive caches made the battery almost completely useless. Wikipedia has three of these controllers.

    A phone call to a drive vendor pre-sales support said that their 400GB SATA drives would still cache writes if told not to cache writes. When I pointed out that this effectively guaranteed data loss the support person checked then transferred me to their labs, which said that yes,the drive really would respect the cache off setting, so it actually is safe. Glad they got it right in the end (I hope - but I'll still be testing!).

    Not related: Apple was found to ignore fsync flushes, caching instead. MySQL now has a workaround for that. And some FC3 versions apparently don't properly respect fsyncs either.

    MySQL, recognising the sad reality of the OS and hardware layers, is doing something more about it (beyond write-ahead logging, doublewrite and page checksums), judging by blogs and their public responses to my public comments on this.

    I'm distinctly unimpressed by the below the database layers and their respect for what's needed to have reliable storage. If you're serious about reliability, don't even think of trusting the OS, controller and drive layers. Test, with real power disconnects and active disk writes going on at the time.

    If you are worried about power problems and are using racks, here's one easy tip: power distribution unit with meter or comparable but with remote on-off. It's quite irritating to lose power because of an overloaded circuit. Wikipedia saw it happen once at rack level when more machines were being added and possibly a second time related to a circuit breaker trip.

  147. Why people have stuck with MySQL by Daedalon · · Score: 1

    No. If that were true, then they would have seen far greater adoption rates. PostgreSQL has a history of difficult installations

    I'll second that. Last autumn I tried to switch my phpBB-centric sites from MySQL 4.0 to PostgreSQL 7.4. After a week's efforts to get my databases converted, the results were these:

    • I can tell anyone is lying who says getting PostgreSQL up and running for the first time is not harder than MySQL.
    • I had found tons of URLs that used to contain tools designed for the purpose.
    • I had found several Perl-tools that I wasn't able to get to produce anything more useful than several error messages. Several other tools I found that were written C or other languages were as lucky...
    • ...except one simple PHP script. After some modifying and changing the allowed memory usage in php.ini to about 20-fold.
    • And finally, that when I did things in things in the order of 1) installing phpBB normally, 2) deleting the contents of the created tables with phpPgAdmin and 3) importing the newly converted ex-mysqldump which had to be created by phpBB's backup database option without the table structure, I could have my sites working as read-only archives.

    So, while I knew the best solution for my current and future database needs (in terms of license and features) was PostgreSQL, I wasn't able to find a way to move my sites from MySQL to PostgreSQL without sacrificing all the messages and user accounts in my forums.

    Seems that the home page of mysql2psql at least has been updated since I last checked, so it could finally do what it is supposed to. It sure should if switchers from MySQL to PostgreSQL were considered welcome.