Slashdot Mirror


MySQL 4 - Is it Stable?

Shaklee3 asks: "I have been running version 3 of MySQL on the company's website for quite a while now. We recently ran into a problem where we needed the new features of version 4 that uses the UNION clause. We are running FreeBSD 4.6-STABLE and Apache 1.3.26. I know they reccomend not using it in a production environment yet, but from what I hear it is already being used on a few major websites. Does anyone have experience with version 4, and is it stable enough to run on a high traffic site?" If you feel MySQL isn't ready for prime-time, where specifically do you feel it needs improvement?

453 comments

  1. All I want for Christmas... by Hollinger · · Score: 5, Interesting

    Is Sub-selects and foreign keys. These are probably the two biggest features I've constantly found myself needing / wanting.

    1. Re:All I want for Christmas... by PunchMonkey · · Score: 5, Interesting

      For Christmas? I want views!!! Precious views!! I need to secure certain data from the prying eyes of account managers and sales folk. So everynight I'm rebuilding these summary tables for each user! Argh!!!

      There's no such thing as row-level security.... my kingdom for views in mysql!!!

      --
      I'll have something intelligent to add one of these days...
    2. Re:All I want for Christmas... by swingkid · · Score: 2, Informative

      So use a real database: Oracle, Sybase, MSSQL, Postgres, DB2 (etc, etc) all have such features.

    3. Re:All I want for Christmas... by Libor+Vanek · · Score: 2, Offtopic

      I agree - without these features I don't call MySQL database. I'm doing some SIMPLE intranetwork groupware (mainly managing information about companies, people and contacts) and some of my SQL queries are 4 lines long and has got 3 sub-selects (I use PostgreSQL and I'm VERY happy with it).

    4. Re:All I want for Christmas... by kylant · · Score: 5, Informative

      MySQL includes the fabulous InnoDB which offers foreign keys, great performance and row-level locking.

    5. Re:All I want for Christmas... by Karora · · Score: 5, Informative
      Is Sub-selects and foreign keys. These are probably the two biggest features I've constantly found myself needing / wanting.

      Then you probably should be using PostgreSQL, which has had these features for some time. It also has UNION, functional languages, extensible types, full transaction support, SQL standard syntax, unlimited row length...

      Stick with MySQL when performance is critical and you want to do straight SELECTs from simple tables with few joins and very few updates.

      Go with PostgreSQL if you want an RDBMS that supports transactions, that scales when writers and readers both use the DB at the same time, if you want to support complex queries or if robustness, programmability and configurability are important to you.

      --

      ...heellpppp! I've been captured by little green penguins!
    6. Re:All I want for Christmas... by SpatchMonkey · · Score: 2, Offtopic

      If you need indexed tables and performance is critical then why not use this instead of mySQL? I mean, for the limited SQL syntax that is actually available in mySQL, you may as well not bother using it.

    7. Re:All I want for Christmas... by zmooc · · Score: 3, Informative

      Shameless plug: we use SapDB for all of our customers. It's GPL, stable and we're really happy with it.

      --
      0x or or snor perron?!
    8. Re:All I want for Christmas... by PunchMonkey · · Score: 1

      You're trusting your sale and accounting data with mySQL? You brave, brave man ..

      I trust the data I pull out of it to be good. It's used to generate reports only and for sales guys to do quick queries with. Data's imported nightly at which time I do various queries/checks to make sure the data's in synch with the big old Oracle database.

      --
      I'll have something intelligent to add one of these days...
    9. Re:All I want for Christmas... by __aaklbk2114 · · Score: 1, Insightful

      Then you probably should be using PostgreSQL...

      Or you may want to look at SAP DB.

      It's free, open source, comes with an unlimited license and has the support and backing of one of the largest enterprise application comapnies.

      It runs on most platforms including Linux, Solaris, other *NIX, and Windows. It has interfaces for C/C++, Java, Perl, ODBC, Python, and PHP.

      You benifit from a proven, highly scalable, SQL compliant database that continues to be developed and maintained by an actual company which gets revenue from paying customers who use its other non-free products which are built on top of SAP DB.

      SAP made it open source because they feel, "...that times have changed, that databases are becoming part of the basic technology infrastructure, and as such, they need not be proprietary or complex. SAP sees that the time is right to drive open-source development of database technology and contribute to this effort by making SAP DB Open Source. Open-source development is revolutionizing the way software is created, as shown by the success of Linux, and SAP - which is already providing the first comprehensive e-business solution on Linux - wants to encourage this development."

    10. Re:All I want for Christmas... by verch · · Score: 1

      You actually have people doing SQL queries for reports? Rather than views, I would suggest a quick webpage that runs hardcoded queries for the types of reports you want these people to able to run. I would never give anyone real access to the DB if you don't want them to have access to all the data.

    11. Re:All I want for Christmas... by cduffy · · Score: 1

      Let's say you let folks in Department A write their own scripts for generating reports, because you're too damn busy to do it for them. If that's the case, you need to let them run their own queries -- but still want to keep access restricted.

      Building that "quick webpage" yourself isn't worth it if it means you have to maintain software that otherwise they'd build and operate themselves.

    12. Re:All I want for Christmas... by TardisX · · Score: 2, Insightful
      People keep saying this.

      If it's so good, why isn't it the default?

      What is the con?

      --

      Command attempted to use minibuffer while in minibuffer
    13. Re:All I want for Christmas... by m_ilya · · Score: 1, Redundant
      Still BerkleyDB is much more low level than MySQL.

      Also I heard that BerkleyDB doesn't scale for big databases. I.e. for good perfomance it must fit in RAM.

      --

      --
      Ilya Martynov (http://martynov.org/)

    14. Re:All I want for Christmas... by PunchMonkey · · Score: 1

      You actually have people doing SQL queries for reports? Rather than views, I would suggest a quick webpage that runs hardcoded queries for the types of reports you want these people to able to run. I would never give anyone real access to the DB if you don't want them to have access to all the data.

      Sure, although the end users don't write the SQL themselves. They use MS Excel, and sometimes Access. There's an Access front-end for canned reports; but our sales guys here need ad-hoc reports. They want to see how well specific products are selling in specific regions. They want to have data according to the fiscal periods of different accounts. But, they should only be able to see their own accounts.

      --
      I'll have something intelligent to add one of these days...
    15. Re:All I want for Christmas... by rtaylor · · Score: 5, Interesting

      Regarding performance:

      Postgresql starts out slower in comparison, but the curve degrades much less when you throw more people at it.

      For ~10 simultaneous connections or less, MySQL will be faster in simple situations (simple tables, few joins, few updates / deletes). After ~10 connections Postgresql starts to shine.

      After about 200 to 300 connections Postgresql seems to be a touch faster than Oracle, but the difference in speed isn't enough to make either a choice over the other.

      Anyway, great to see a MySQL release coming up. We regularly use it for batch analysis (dedicated machine, single connection, large record sets, selects only) but are debating moving to BDBs for speed reasons.

      --
      Rod Taylor
    16. Re:All I want for Christmas... by BoredStupid · · Score: 1

      I don't know, an open source version of SAP's RDBMS? Sounds like bad juju to me.

    17. Re:All I want for Christmas... by duncangough · · Score: 1, Troll

      No contest, use Sybase

    18. Re:All I want for Christmas... by Daniel+Dvorkin · · Score: 4, Insightful
      without these features I don't call MySQL database
      [sigh] Any method of storing data electronically is a database. MySQL is a database, Oracle is a database, PostgreSQL is a database, Access (God help me) is a database, a flat text file is a database, a bunch of random text files scattered all over your hard drive that you have to search with grep constitute a database.

      Now, if you want to argue that MySQL isn't a very good database, that's your business. (I disagree; I make my living as a MySQL DBA, and love it. But you have a right to your own opinion.) But saying that it's not a database because it doesn't have feature x is like saying that a car without cruise control isn't a car.
      --
      The correlation between ignorance of statistics and using "correlation is not causation" as an argument is close to 1.
    19. Re:All I want for Christmas... by quinto2000 · · Score: 1

      It is in the default install for MySQL 4.0. MySQL AB just doesn't take the approach of bundling everything that isn't yet completely integrated.

      --
      Ceci n'est pas un post
    20. Re:All I want for Christmas... by Anonymous Coward · · Score: 0

      Views?? Isn't that just a query? Make a web frontend they have to use that builds these reports or queries or views if you like.

    21. Re:All I want for Christmas... by Anonymous Coward · · Score: 0

      MySQL DBA is an oxymoron. What could you possibly be doing with your time?

    22. Re:All I want for Christmas... by lucifuge31337 · · Score: 0, Flamebait

      Of course it is. mySQL is a "relational" SQL-ish front end for BerkeleyDB.

      --
      Do not fold, spindle or mutilate.
    23. Re:All I want for Christmas... by Anonymous Coward · · Score: 0

      holy shit, that is a funny sig.
      took me about 100 seconds to get it at first.

    24. Re:All I want for Christmas... by dmelomed · · Score: 1

      What scares most with all these old-time DBs is the cruft they've grown over the years. Complexity. Could somebody testify to its stability?

    25. Re:All I want for Christmas... by dublin · · Score: 3, Insightful

      I want views!!! Precious views!! I need to secure certain data from the prying eyes of account managers and sales folk.

      Sounds to me like you're really trying to hammer that socket-head capscrew into place, rather than finding an appropriate Allen wrench.

      It's amazing to me how many people in the open source community continually try to force mySQL into doing jobs it's clearly not up to. This is especially puzzling, since there *are* good, modern, high-performance, high-function databases out there, things like Postgresql, Interbase,and the Sleepycat Berkeley DB (not SQL, but really fast and solid) among many others.

      For quick, dirty, and fast, without the hassles of dealing with SQL at all, there are options like NoSQL and Starbase, both of which are based on the Stream/Modifier concept of the original /rdb that allows fast, flexible database operations and allowing the use of the full power of the Unix environment. ( It's easy, leverages a zillion other existing tools, and everything you learn is directly applicable to anything else you do in a Unix environment.)

      It seems most people want SQL just because it somehow legitimizes their project as "serious", when in reality, it often just adds undesirable complexity and support cost. SQL is often unnecessary and actually undesirable, if you allow yourself to consider the possible benefits of NOT using a SQL database.

      Also, keep in mind that *any* database (and especially ones that are already very fast,like BerkeleyDB or Starbase) is lighting fast in RAM, and memory is now cheap enough to make putting the whole DB in memory a very do-able thing: A gigabyte or several of database is BIG, and easily supportable on very affordable server hardware.

      And of course, there is a reason those commercial database companies exist: They often offer capabilities that open source users may never have. I am looking right now at a new application which will be *much* faster and cheaper based on Intersystems' unique Cache database than it eould be on any of the more common big names. It's important to choose the right tool for the job. (In this case, I need lots of transactions in a very large sparsely populated database, Cache is excellent there, an order of magnitude better than Oracle or DB2, which is why Cache is the leading DB choice for electronic medical records systems, and has been for years.)

      MySQL is not the answer to every database problem. Or even most of them, truth be told. Personally, I find it to be a minimally competent, fussy, and underpowered tool. It's good for some things, but to be honest, I've always thought its appeal had more to do with being the first real open source SQL DB than with being good.

      As always, this boils down to choosing the right tool for the job. Not exactly rocket science, but something way too many people don't bother to do.

      --
      "The future's good and the present is nothing to sneeze at." - Roblimo's last ./ post
    26. Re:All I want for Christmas... by stripes · · Score: 2
      Also I heard that BerkleyDB doesn't scale for big databases. I.e. for good perfomance it must fit in RAM.

      It scales "just fine", as in there is a big performance drop off once you actually have to start touching the disk a lot, but it's not like anything can avoid that. The speed was much faster for large (but simple!) tables then Sybase was at the time I tested. And I do mean huge tables. Much much more data then fits in RAM, or one single disk. Or RAID shelf (at the time at least).

    27. Re:All I want for Christmas... by Sesq · · Score: 1

      Just use the right tools. We use CQCS and precompiled queries. This is the only way the accounting and sales people have access to the data.

    28. Re:All I want for Christmas... by gmhowell · · Score: 2

      We have a Cache DB for our medical billing system. I don't know if it is the front end or the back, but it sucks balls. Slow and funky.

      Based on your positive impressions, perhaps I'll see if our vendor just doesn't know what they're doing. (I suspect it's whoever wrote the lousy client. It's... Well, perhaps it's not bad, but I've learned my lesson about what should and shouldn't go into software contracts.)

      --
      Jesus was all right but his disciples were thick and ordinary. -John Lennon
    29. Re:All I want for Christmas... by gmhowell · · Score: 2

      Perhaps if you substitute 'database' with 'RDBMS' it makes more sense?

      --
      Jesus was all right but his disciples were thick and ordinary. -John Lennon
    30. Re:All I want for Christmas... by Thomas+Charron · · Score: 2

      Oh yea, and that whole cash thing.. LOL

      --
      -- I'm the root of all that's evil, but you can call me cookie..
    31. Re:All I want for Christmas... by ErikZ · · Score: 2

      This is why I had my last job. Instead of giving the users access to the data, IT sets up a wall around all their resources.

      They were also in the middle of a nervous breakdown because everyone was constantly hammering them with requests. Make your data secure and back it up, and let the people you serve do their own IT.

      --
      Democrats or Republicans. They are both taking us to the same place and they are not afraid of us anymore.
    32. Re:All I want for Christmas... by DaveHowe · · Score: 2

      You actually have people doing SQL queries for reports? Rather than views, I would suggest a quick webpage that runs hardcoded queries for the types of reports you want these people to able to run. I would never give anyone real access to the DB if you don't want them to have access to all the data.
      Close enough to what we do - we generate predefined Crystal reports, and have a web front end that passes parameters we define into the report to select exactly what data the report provides; all the user limit validation is done in the web front end, and the upside is that they can do the queries from anywhere - even customer sites via HTTPS (no licence issues for Access, and they can grab the output as a csv, html or pdf whichever is more convenient for them)

      --
      -=DaveHowe=-
    33. Re:All I want for Christmas... by Anonymous Coward · · Score: 1, Insightful

      The current problem with InnoDB is that the size must be fixed and does not grow automatically. There are a couple of ghetto methods to deal with this, but until the development people actually make this table type autogrow, it is not good for a large, growing db.

    34. Re:All I want for Christmas... by Tadghe · · Score: 4, Insightful

      "It's amazing to me how many people in the open source community continually try to force mySQL into doing jobs it's clearly not up to"

      It's amazing to me how often people who make this sort of comment miss the boat so to speak. People stick with MySQL as opposed to switching to PostgreSQL, SapDB,Firebird and the like for the same reason that VB programmers tend to stick with VB, the same reason that Susie Homeuser has stuck with Windows all these years. It has very very little to do with mySQL being "better" than the others. People stick with Mysql because it's quick to learn, easy to setup and reasonably scalable for many applications. People are staying with mySQL because they are comfortable with it, it's already installed and they know how to use it.

      Want people to switch to PostgreSQL or (Heaven forbid) *SapDB, then give Joe Admin or Derek Programmer a UI to them that works like Mysql, then make them as easy to install/backup/restore as Mysql.

      At the risk of being labled a troll, realize that mySQL will continue to be the OSS DB of choice for the hoards so long as it continues to be the quickest, easiest way to setup a (semi) RDBMS.

      *SapDB is a (IMHO) a pile of steaming speghetti code that I would not wish on my worst enemy. Try taking a look at the code (www.sapdb.org) or if you lazy, just read some of the messages on the SapDB Yahoo group (http://groups.yahoo.com/group/sapdb-general/messa ge/909) for instance.

      --
      Bugs Bunny was right.
    35. Re:All I want for Christmas... by m_ilya · · Score: 2
      MySQL does have one table handler based on BerkeleyDB. It was first table handler to support transactions.

      But it is not the only table handler MySQL has and not even the only table handler with transactions support. Moreover it is not even the fastest table handler.

      --

      --
      Ilya Martynov (http://martynov.org/)

    36. Re:All I want for Christmas... by dup_account · · Score: 1

      Ummmm nice troll??? People aren't expecting MySQL to do everything. This person only asked for views. And why shouldn't MySQL be able to eventually do these things? MySQL is easy to set up and use. That's why people use it. I would gladly try Postgres as it has some features that are currently missing from MySQL. But I don't feel like dealing with it.....

      You also overlooked the fact that Views is just part of what the person uses MySQL for. Some of your options show this... He may have a successful production system based on MySQL, but would like just one more feature, is all....

    37. Re:All I want for Christmas... by Anonymous Coward · · Score: 2, Informative

      The current problem with InnoDB is that the size must be fixed and does not grow automatically.

      It doesn't?
      "InnoDB tables can now be set to automatically grow in size (autoextend)."
      MySQL - D.1.2 Changes in release 4.0.2 (01 July 2002)

    38. Re:All I want for Christmas... by Anonymous Coward · · Score: 0

      Well I've been using DB2/400 (that DB2 on IBM's AS/400 or iseries) since it came out. A few years ago there was a big performance boost, but since then reliability has become awful. Simple grouping queries silent fail without returning any error message to the caller. Reporting these to IBM doesn't get anywhere. They're just not interested anymore, i.e. the good people have left. We've had to rewrite various processes in crusty rpg just to get reliability. Guess which platform doesn't get any new development at my company?

    39. Re:All I want for Christmas... by TooTallFourThinking · · Score: 1

      ha! big words from a coward. ;)

    40. Re:All I want for Christmas... by Anonymous Coward · · Score: 0

      Also, keep in mind that *any* database (and especially ones that are already very fast,like BerkeleyDB or Starbase) is lighting fast in RAM, and memory is now cheap enough to make putting the whole DB in memory a very do-able thing: A gigabyte or several of database is BIG, and easily supportable on very affordable server hardware.

      Uhh.... A gigabyte is a big database? Maybe if you're storing the telephone numbers of every girl you've dated, but a production database for a company usually takes up several hundred gigabytes.

    41. Re:All I want for Christmas... by Fjord · · Score: 2

      Just remember that everything you put in the contracts, ultimately, ends up costing you money.

      --
      -no broken link
    42. Re:All I want for Christmas... by aminorex · · Score: 1

      No, it doesn't, because a relation is a table is a
      relation, and MySQL stores data in tables, so it is
      relational. The "database" part of RDBMS is already
      covered by the previous poster, so that leaves the
      "management system" part. It is a system. It does
      manage databasess in relational form. I'd have to
      conclude that it is an RDBMS.

      --
      -I like my women like I like my tea: green-
    43. Re:All I want for Christmas... by Anonymous Coward · · Score: 0

      InnoDB is that supposed to be a contraction of Innovative and Database? Bwahaha! MySQL's innovative.. yeah if this were the 1970s and not the 2000s.

    44. Re:All I want for Christmas... by Steveftoth · · Score: 0, Redundant

      And why shouldn't MySQL be able to eventually do these things?
      For the same reasons that MySQL shouldn't also implement every feature that anyone asks for. It's not that DB. MySQL is a good db, but it cannot be everything to everyone. If you really want a feature, then just implement it, that's what open source is for. Fork the source and make your own branch. Of course most people would rather just sit back and be back seat coders (managers ;)

    45. Re:All I want for Christmas... by Anonymous Coward · · Score: 1, Insightful

      IMS uses 'tables,' but nobody would call it an RDBMS. You've incorrectly defined a relation to be a table, which is not the whole picture. Somebody above said MySQL lacked foreign keys - that alone makes me think it isn't a true RDBMS. I've never used MySQL because of its shortcomings in features, though I'd agree that it is meant to be an RDBMS (which lacked ACID compliance...). What makes it so? You can define the relation between different sets of data instead of the static, hierarchical data schemas of something like IMS. Or at least, you're supposed to. I don't know how you would do that without foreign key support. Anyways. MySQL might be some pseudo-RDBMS, but not just because it has tables. Go read E.F. Codd's paper on relational models before you go trying to explain RDBMS' based on each word again.

    46. Re:All I want for Christmas... by Anonymous Coward · · Score: 1, Insightful

      You plain wrong.
      Just look at the Codd's requirements for RDBMS first. Then try to call MySQL "database" again.

    47. Re:All I want for Christmas... by gmhowell · · Score: 1

      Unfortunately, everything we *didn't* put in contracts is also costing us money (lost productivity, lack of some flexibility in reporting, etc.) The only question is which costs more.

      --
      Jesus was all right but his disciples were thick and ordinary. -John Lennon
    48. Re:All I want for Christmas... by Fjord · · Score: 1

      I agree. I work on the other side of the fence, at a consulting services firm. We basically feel anything can be done, all it takes is time and all it costs is money. If a customer doesn't contract a certain amount of flexibility, we aren't going to spend their money (time and materials) on it because we can only assume they don't want us to. Some flexibilty costs more in a system. There will always be lost productivity because the system isn't that much better, and in the long run that lost productivity will outclass the cost of the improvements. But sometimes the money isn't there.

      --
      -no broken link
    49. Re:All I want for Christmas... by Not+The+Real+Me · · Score: 1

      Several hundred gigabytes?!
      What kind of company are you talking about?

      I used to work at a Fortune 500 company (LA Times), our department did not have any database even close to 1 gig. Hundreds of megs yes, but hundreds of gigs? No.

      I do work for a real estate management company now. The records go back 10 years. The database is about 500 megs.

      All your fields must be char(255), and you probably create an index on every single column. You also probably create compound indexes on your char(255) fields as well.

    50. Re:All I want for Christmas... by Anonymous Coward · · Score: 0

      because electronic medical records systems need to be fast?

      No, it's inertia based on a long time past sales deal.

    51. Re:All I want for Christmas... by rodgerd · · Score: 2

      Multi gigabyte DBs are common. The LA Times may be a Fortune 500 company, but I doubt that it has the requiremetn (like, say, the bank I contract to) to keep all its transactions around online for a year. The part of that I look after - and have indexed up the wazoo for MI purposes - only covers their least used channel, and is much bigger than you're used to dealing with.

    52. Re:All I want for Christmas... by alexburke · · Score: 2

      SapDB seems to be something I wouldn't wish on my worst enemy. I'm glad you see fit to unleash it on your clients...

    53. Re:All I want for Christmas... by Not+The+Real+Me · · Score: 1

      There's a difference between a multi gigabyte database and a database with hundreds of gigabytes.

      Multi gigabyte is more than 1 gigabyte. The original poster said hundreds of gigabytes which is several factors greater than multi gigabyte.

      Both places I've worked for kept all transactions online for years (R.E. mgmt 10+ years, the Times 4+ years).

    54. Re:All I want for Christmas... by axxackall · · Score: 1
      What scares most with all these old-time DBs is the cruft they've grown over the years. Complexity. Could somebody testify to its stability?

      What you say is completely true related to Oracle. Since early 90s Larry's team forget to fix very strange very same bug in every other release (it's usually fixed right in the next patch): sometimes (seldom) you swap two fileds in the query and the query is failed "due to internal Oracle error".

      It proves to me that Oracle RDBMS was not designed well since the beginning, then it was patched very well. But we all know that unless you clean your design up the bug will come again and agaian and again.

      By the way, be careful with MySQL - it was not designed to be ACID since the begining. And it was not redesigned well yet. Be aware about potentially lost transactions, consistency and data.

      --

      Less is more !
    55. Re:All I want for Christmas... by JabberWokky · · Score: 2
      People are staying with mySQL because they are comfortable with it, it's already installed and they know how to use it.

      Which creates a second tier effect - the software my company writes is semicustom content management software. We started out supporting a long list of databases. Fairly quickly, it shrunk down to Oracle and MySQL. We have clients using Sybase, but the vast majority use Oracle or MySQL - the former because they chucked money at the problem, and the latter because they just needed something that worked and Joe Admin set it up for them and said it was Good.

      Ironically, I've seen more mucked up data problems (stuff like "the database didn't come up after the UPS fried and shut down the servers") for Oracle than MySQL. MySQL seems to be steady, stable and deliver what the people who use it need. OTOH, the people who use Oracle *really* use Oracle - often their entire company runs on it, and they have hefty databases with records going back years (medical records and the like).

      And that second tier feeds back - when people ask us what kinda of database they need, we suggest Oracle or MySQL - which, given that the numerical majority of our clients are small business, leads them to installing MySQL, which reinforces our MySQL focus.

      We're looking at producing whitebox drop-in servers early next year - at that point we may go with something else. Strictly from a financal standpoint, it ain't gonna be Oracle... but I can't totally rule out MySQL, especially now that we have server failover working. I really need to get a cluster lab set up and test the latest versions of low cost databases - failover is minimally acceptable, but good load balancing and proper replication would be ideal.

      --
      Evan (no references in this post)

      --
      "$30 for the One True Ring. $10 each additional ring!" -- JRR "Bob" Tolkien
    56. Re:All I want for Christmas... by Anonymous Coward · · Score: 0

      No way, we have one user who does his own reports, and he takes more of my time than any user who requests reports. Oh, and most of his reports are wrong in some small way. Oh Oh, and he likes to compare the output from his wrong reports to my reports; then he tells me that my reports are wrong, so I have to walk through the logic in my reports with him.

    57. Re:All I want for Christmas... by Espectr0 · · Score: 0

      You said: "Any method of storing data electronically is a database"

      Actually, that's a file manager. Access and FoxPro are file managers. Being able to throw data at a file is NOT a database.

      Databases are a little smarter, allow you to have transactions (yes, all databases are supposed to do that by definition...) concurrent data, integrity, etc..

    58. Re:All I want for Christmas... by Anonymous Coward · · Score: 0

      Just for the record, MySQL when using the InnoDB table handler has real transactions, foreign keys, and full ACID compliance. InnoDB also provides for row-level locking, row multi-versioning, journaling (for fast recovery after crash), hot backup (with a relatively cheap commercial tool) that obtains NO locks on InnoDB tables and many other nifty features...

    59. Re:All I want for Christmas... by Anonymous Coward · · Score: 0

      Just look at the Codd's requirements for RDBMS first. Then try to call MySQL "database" again.

      OK, now let's try to name two different things. Are you ready?

      The first is a 'database' (DAH-tah-base, or DAY-tah-base if you live in non-English speaking countries)

      The second is a 'Relational Database Management System' (Re-LAY-sha-nil DAH-ta-base MAN-ij-mint SIS-tim).

      Do you understand how the two could be considered different things?

      Oh, another tip for you, just in case hitting you in the face with a brick isn't enough: DATABASE is not the same as RELATIONAL DATABASE.

    60. Re:All I want for Christmas... by dublin · · Score: 2

      I'm not a DB expert by any means, but here's what I do know about Intersystems' Cache - it can be faster than anything else in certain real-world applications:

      I used to be Market Segment Manager for healthcare at Sun Microsystems. This is back when Sun was a "who?" in healthcare IT (outside of medical imaging, where we were dominant, but buried in OEM gear behind the name of a Seimens, GE, etc.)

      When the Ultras came out, we wanted to aggressively go after some of the spaces where we would be a good fit. One of those was electronic medical records and managed care systems, both of which tend to be large, sparsely populated databases.

      We worked closely with a clinical system vendor (which has an excellent product and has moved from a relatively unknown newcomer to one of the most favored products in the industry) and helped them face off not only Sun gear vs. IBM, HP, and DEC, but also to find the best DB to work with the hardware environment.

      According to thier own tests, this user reported the following: Oracle and DB2 were essentially neck and neck, but Oracle offered better network support, was cheaper, and was considerably easier to do business with than IBM. They were stunned to find that for thier application, Cache was THIRTY times faster than Oracle out-of-the-box. It was still nearly 10X faster even after doing "unnatural things to Oracle that you wouldn't want to live with."

      Similar results were reported a few months later by another ISV that built the first large-scale managed care enrollment system that was proven capable of scaling to millions of members.

      I'm also somewhat familiar with what was for a long time the showcase site for Intersystems: Boston Children's Hospital and the Harvard Medical Center. This system has grown along with the hospital server-by-server. In 1995-ish, the clinical system there was based on around 150 PC servers scattered throughout the facility. Intersystems Distributed Cache Protocol keeps the data on the move so it tends to reside neares its point of most frequent use automatically. I don't know of anything other DB that provides this sort of modular scalability and caching performance that's so important in the real world., although there may be something else similar.

      I'm impressed because people I know that really know this stuff are impressed, again, I make no claim to being a database guru myself.

      --
      "The future's good and the present is nothing to sneeze at." - Roblimo's last ./ post
    61. Re:All I want for Christmas... by mi · · Score: 2
      [sigh] Any method of storing data electronically is a database

      Keep sighing. It would not be a database, but a DataBase Management System -- DBMS.

      Another response to your nit-picking suggested the term RDBMS -- or Relational DBMS. Well, not every DBMS is Relational.

      --
      In Soviet Washington the swamp drains you.
  2. postgres by GigsVT · · Score: 2, Flamebait

    If you find yourself wanting more features, then ditch the toy DB and get something better like Postgresql.

    I don't understand why people like MySQL so much when postgres is just as easy to set up and deal with, and has a much more complete feature set.

    --
    I've had enough abrasive sigs. Kittens are cute and fuzzy.
    1. Re:postgres by CynicTheHedgehog · · Score: 4, Interesting

      Don't forget that PostgreSQL is faster than most people realize. I read a benchmark that showed that on some queries it's even significantly faster than Oracle. Of course, on other queries it was significantly slower, but it all comes out in the wash. What was interesting is that while MySQL was faster on a lot of queries, Oracle and PostgreSQL actually outperformed it on a couple. What I want to know is if there are any businesses out there that can load balance PostgreSQL and have a proven track record for support similar to Oracle's "Gold" level (or whatever they call it). When all is said in done that has got to be cheaper than Oracle licenses.

    2. Re:postgres by Anonymous Coward · · Score: 0

      Thank you. The MySQL developers have made it clear that adding the features required to have a SQL-compatible RDBMS is not something they're going to do, especially if it sacrifices "speed" (in a day where 1U Athlon 1600+ servers can be purchased for $995, and RAM is cheap enough that you could practically load the DB into a ramdisk). I've been developing a web store based on PHP/PostgreSQL for the past month, and I've found it to be 10 times better than mysql (the previous attempt). Just basic stuff like nested queries, and we all know that MySQL doesn't have transaction support. MySQL 4 might, but that's not the current version.

    3. Re:postgres by Wiggins · · Score: 0, Offtopic

      Why not use Java instead of C?

      --
      Funny and I thought Perl == Paid employment recently located ....hmmph.....
    4. Re:postgres by green+pizza · · Score: 2

      I don't mean to flame/troll, but I don't get it either...

      Not to mention that Postgres has been more open much longer than MySQL has been.

      I personally use Interbase, but have used both Postgres and MySQL.

    5. Re:postgres by Anonymous Coward · · Score: 0
      Do you read?
      MYSQL supports transaction locking!!!!!!

      from the Mysql website..
      because InnoDB uses automatic row level locking and BDB uses page level locking to ensure transaction isolation.
    6. Re:postgres by sc00ch · · Score: 2, Informative

      Just as easy to setup? Have you tried installing postgresql on a windows box? Currently, the only solution they offer is by using Cygwin and there is no simple installation program. I eventually got it running but i would certainly not say it was as easy as mysql on a win32 platform. A lot of people i'm sure are turned away by this...

      Remember that many developers like to use windows and dont have the money to set up a seperate box for running a database.

    7. Re:postgres by CeZa · · Score: 0

      Would it be strange for me to tell you that for the cost of one license for Windows you could have built another freebsd box...

    8. Re:postgres by Anonymous Coward · · Score: 1, Insightful

      VACUUMing, using begin/commit and proper indexing will DRAMATICALLY increase the speed of PostgreSQL, and in my experience in most cases it will outperform most of the other DB's.

      - FF

    9. Re:postgres by Petronius · · Score: 1

      Amazing that this was modded as flamebait.
      The term toy for MySQL seems appropriate: without transactions and RI you're missing the most fundamental features of a DBMS.
      Postgres is indeed a very capable database. I started using it 4 months ago and have had nothing but good surprises with it. I come from 10 years of Sybase and Oracle development. So far, POstgres has been great in every aspect: ease of installation, features, documentation. And it does have those key features, and more.

      --
      there's no place like ~
    10. Re:postgres by technomancerX · · Score: 3, Interesting

      Basically, fulltext indexing is why I'm still using MySQL...

      --
      .technomancer
    11. Re:postgres by Anonymous Coward · · Score: 0

      Yes, but locking for transaction isolation and transactions are two different things.

      The former is simply a locking method. MySQL has used table locking from the beginning.

      The latter is the ability to do all-or-nothing updates. Rollbacks, etc.

    12. Re:postgres by Phacka · · Score: 3, Insightful

      full text search:try to look in contrib/tsearch in postgres distribution

    13. Re:postgres by Anonymous Coward · · Score: 0

      The most interesting I thought was that mysql can barely index a simple integer that can be null, where as postgres can index on functions of columns and other obscure and complicated things. mysql may be blindingly fast for stupidly simple lookups, but as soon as you get past trivial mysql suddenly has to resort to a sequential scan through the table which is dog slow.

      I've had bad experiences with mysql corrupting it's databases for no apparent reason about once every 6 months. Combined with it's horribly limited feature set and bugs make it something that should be avoided at all costs.

    14. Re:postgres by someonehasmyname · · Score: 1

      yes, but developers that don't have money for another box probably don't have money for windows licenses either.

      --
      Common sense is not so common.
    15. Re:postgres by Anonymous Coward · · Score: 0

      "the money to set up a seperate box"

      He can't afford a separate box, read it?

    16. Re:postgres by AlCoHoLiC · · Score: 1

      Simple reason: speed. I've got aplication (data gathering) that inserts 100.000 rows (average row length is about 60 bytes) in 1 minute. I'm die-hard postgres fan, but it simply can't cope with such load.

    17. Re:postgres by Andrewkov · · Score: 1

      Is speed really that big an issue? Just throw faster hardware and more RAM at the problem. Spending a lot of time working around the limitions of a faster but less featured program doesn't seem to be good use of a developers time. .. Just my opinion.

    18. Re:postgres by Anonymous Coward · · Score: 0

      Yep. I've worked with a PostgreSQL database which had been up around 500 days on a linux box (restarted with apache upgrade). Didn't get amasingly heavy traffic but did not even get a hint of a performance or corruption problem ever.

    19. Re:postgres by Anonymous Coward · · Score: 0

      *DING *DING *DING

      Exactly... for the hungry developer, why in the world would you use a proprietary system that locks you into a proprietary toolchain when the Free (not as in Beer) alternatives are almost always nicer.

      Mod parent up.

    20. Re:postgres by Anonymous Coward · · Score: 0

      Ummm... I don't think a machine exist that could load our production database into ram. The Informix db on our development machine is over a terabyte in size and the production machine is several times that size. You'd be suprised at the amount of data coming in from satellites.

    21. Re:postgres by ovapositor · · Score: 1

      My favorite Postgres pain was when we were seriously considering it to replace MSSQL server. I kept trying to reference another database from the current one in a stored procedure. My assistant was finally told that it is not possible on the support mailing list. I was SHOCKED. I consider partitioning things in seperate databases a minimal requirement. I don't know if Postgres will ever get it, nobody seemed to share my concern on the list.

      Oh well, Thankfully there is SAPDB and Firebird around.

    22. Re:postgres by micromoog · · Score: 3, Interesting

      People like you are the cause of today's crappy, bloated software. There is no substitute for well-optimized code.

    23. Re:postgres by X_Caffeine · · Score: 1

      Are you running the all of those inserts as separate transactions, or inside of a single transaction? By doing the latter (rumor has it), you can even surpass MySQL speeds.

      --
      // I will show you fear in a handful of jellybeans.
    24. Re:postgres by Anonymous Coward · · Score: 0

      then eventually you are going to have to get SUNS

      whic are frickin expensive. at that point u might as well as sehll out 40K for oracle

    25. Re:postgres by Andrewkov · · Score: 3, Funny
      Maybe so ..

      Do you use assembler for all your programming? Or have you ever created a bash script, perl script or C program? If so, why?

    26. Re:postgres by micromoog · · Score: 3, Insightful
      Point taken, but there should be a happy medium between complexity and performance. Just throwing more hardware at every performance problem leads to VERY underperforming software when you get to the macro level.

      Think about if you implemented all of your sorts using a bubble sort because they are easier, then just "threw more hardware at the problem" instead of using a better algorithm. When your app starts doing 400 sort operations/second, the hardware cost becomes prohibitive.

    27. Re:postgres by Zeut · · Score: 1

      The biggest difference in performance between Postgres and MySQL is connection start up time. That is when a new client connects to a database, MySQL is able to begin servicing that client faster than Postgres. This is due mainly to the fact that MySQL uses threads, and Postgres has to start up a new process. However, this is not a good real world example because nearly all web applications can use persistent connections thus eliminating process start up time. A client server application typically keeps the connection open until it's closed, so the initial startup time for postgres is not relevant here either.

      I would argue that in real world use, with persistent connections and a database that is used for more than simple one table selects 99 percent of the time, PostgreSQL is significantly faster.

    28. Re:postgres by Andrewkov · · Score: 2, Insightful

      You are right, but you are taking my point to the extreme. My point was that a database admin/programmer could make his application more reliable, and do it in less time if he used a database server which supports many of the features that are missing in MySQL. Sure the MySQL version will run a tiny bit faster, but in most cases the trade off of the developers time is probably more valuable. That's why I use PosrgreSQL.

    29. Re:postgres by ergo98 · · Score: 2, Insightful

      The opposite case is very possible as well. At a prior position the organization had a problem with an onsite monitoring system (a system monitoring thousands of points and logging them constantly to a database, feeding them through HTTP, doing replication between sites, etc). Anyways, after they had spent literally hundreds of hours trying to optimize the software I offered the suggestion that perhaps they should just upgrade the CPU and add some RAM. The minimalist's foolish reply "Yeah, well I don't want to just throw more hardware at the problem". Uh huh. Instead of throwing $250 worth of hardware, we spent over $8000 in labour trying to optimize, and to the best of my knowledge the situation still exists.

    30. Re:postgres by jshowlett · · Score: 2, Insightful

      Sure, sometimes software is slow because of sloppy coding. But in many cases (like this one, perhaps), performance is due to explicit design decisions that are optimizing for quality attributes other than speed.

    31. Re:postgres by lewiscr · · Score: 1
      The $40k is per processor. If you're upgrading to Suns for performance, you're probably getting at least a Quad processor.

      With all the features we wanted on a Quad processor, Oracle was $250K per machine. The features we wanted (partitioning, RAC under 9i) are sweet. Esp. RAC - imagine Oracle breeding with a Beowulf Cluster... yum!

      Eventually we decided that even with the Cluster, it would be faster to buy 4 more Suns than 1 Oracle liscense.

    32. Re:postgres by electricmonk · · Score: 1
      In case you haven't noticed, with the state of today's optimizing compilers, your program is almost always faster if you write it in C or C++ and let the compiler take care of the assembly rather than if you were to hand-code the assembly yourself. Your point is irrelevant, anyway. People don't use shell scripts or perl for real databases, now do they?

      Performance-critical applications like databases require that the people who write them know what they're doing, as opposed to hiring people from DeVry for cheap and churning out slow, sloppy crap.

      --
      Friends don't let friends use multiple inheritance.
    33. Re:postgres by ergo98 · · Score: 1

      His point was that people use grossly inefficient tools (interpreted languages) where the value of the versatility of the tool exceeds the cost of the inefficiency of the tool. Java, HTML, XML, etc: All could be "Better" represented for specific cases more efficiently, but to say that therefore they are "bloated" is naive and misinformed.

      As far as the assembly, while there are countless situations where benefits can be derived by actually doing custom optimizations in assembly (yes, you could by hand plan around parallel execution, pre-caching, etc), perhaps a better analogy nowadays would be C : C is the most efficient general purpose language out there, yet there are countless shops churning out Java, Visual Basic, .NET, etc, all because the benefits of those languages exceeds the additional cost (the benefits could be as simple as "we can find programmers cheaper than those who understand C"). Again, casting it all in one "if A is faster than B, then A is superior" is foolish.

    34. Re:postgres by Anonymous Coward · · Score: 0

      when that tiny fraction is the difference betweenless than a second and 4 seconds or more (400%), that makes a big difference in some applications. It may only be a "few" seconds to you, but its alot to some of us.

    35. Re:postgres by axxackall · · Score: 1

      Which performance improvement is more expensive: performance of a computer system or performance of a development team?

      --

      Less is more !
    36. Re:postgres by Anonymous Coward · · Score: 0

      MySQL... sounds "personal"... It might be designed with PDA in mind, you know!

    37. Re:postgres by phred · · Score: 2

      Gosh. I guess Oracle was a toy for the first dozen years of existence before it had transactions.

      But I don't care. I like MySQL and Postgresql OK, neither of them works particularly well with the apps I have, so I still use R:Base which has had COMMIT/ROLLBACK since about 1991*, subselects and referential integrity since before that, it's fast and easy to work with, and doesn't have data or index corruption problems.

      And I really don't care what people think they know about R:Base.

      My only regret is being unable to talk the current owner/developer into doing a Linux port a couple years ago.

      *In 1991 Oracle was still in the multi-year process of putting out press releases about how they were going to have transactions Real Soon Now.

      --------

      --
      Bill Gates Is My Evil Twin.
    38. Re:postgres by micromoog · · Score: 2

      Spoken like a true short-sighted middle manager.

  3. Using 4 since it came out at the end of 2001 by Anonymous Coward · · Score: 5, Informative

    Running High traffic webboarding system, online stores, other various web apps running off of it and I have not had one problem related to mysql 4 not being stable.

    I think it was good enough for production the day it came out, but they just wanted to keep it in Alpha mode for a while just in case...

  4. MySQL 4 - Is it Stable? by Anonymous Coward · · Score: 0

    No.

    1. Re:MySQL 4 - Is it Stable? by Anonymous Coward · · Score: 0

      Yes

    2. Re:MySQL 4 - Is it Stable? by Anonymous Coward · · Score: 0

      No, it isn't.

  5. Which DB is better!! THe world will never know by cyberlotnet · · Score: 3, Insightful

    Its the endless battle..

    Its worse then sitting in a room full of RedNecks fighting over which car is better.. Ford Or Chevy, with some silly idiot trying to throw in a Toyota once in a while..

    Rephrase for slashdot

    Its worse then sitting in a room full of SysAdmins fighting over which DB is better, Mysql Or Postgres, with some silly geek trying to throw in a Oracle once in a while..

    1. Re:Which DB is better!! THe world will never know by Phil+John · · Score: 4, Informative

      Hmm...silly geeks throwing in oracle?

      I worked on a couple of very large sites a few years ago (OK Magazine and Television-X the fantasy channels website - fantasy121.com) and the only databases which would scale to what we wanted with no problems and serious speed problems were MSSQL and Oracle...and not liking M$ stuff (security holes...monopolies yada yada yada) we chose oracle and never looked back.

      For huge sites I would heartily reccommend it...and the cross platform java admin/setup tools were a brilliant touch.

      O.k. it costs a bomb...but to a certain extent you gets what you pays for (although for free (as in beer) MySQL gives you pretty good bang for your buck).

      So what if oracle isn't open source...it's still one of the best.

      --
      I am NaN
    2. Re:Which DB is better!! THe world will never know by cyberlotnet · · Score: 1

      I had to put some other database in there, Guess I should of used MSSQL but then a true geek would never use that...... maybe DB2?

    3. Re:Which DB is better!! THe world will never know by peterpi · · Score: 0

      Everybody knows vi is better.

    4. Re:Which DB is better!! THe world will never know by Andrewkov · · Score: 1
      I think you've stumbled onto something here, this must be the formula the /. editors are using!

      What's better: MySQL, PostreSQL, or alternative option Oracle.
      What's better: Linux, Windows, or alternative option FreeBSD.
      What's better: Red Hat, Suse, or alternative option Debian.
      What's better: GPL, BSD License, or alternative option QT License

      Rinse, repeat!

    5. Re:Which DB is better!! THe world will never know by Quintin+Stone · · Score: 1

      Gawd, I hate DB2. Seems that all of our state agencies use it (DOC, DOT). Its SQL syntax is so limited and finicky.

      --

      "Prejudice is wrong; you should hate everyone the same."

    6. Re:Which DB is better!! THe world will never know by Anonymous Coward · · Score: 0

      Comparing Oracle to a TOYOTA? I hardly consider a Toyota to be high-end, high-cost thing. I think of a Toyora more like a cheap throw-away disposable car.

    7. Re:Which DB is better!! THe world will never know by afidel · · Score: 1

      did you look at DB2, from what I've seen it's the number 2 enterprise DB after Oracle, and lightyears ahead of anything other than sql2k from ms. From what I've seen from TPC and others SQL2K is fast, now I'm just looking for some real world examples of its stability.

      --
      There are 4 boxes to use in the defense of liberty: soap, ballot, jury, ammo. Use in that order. Starting now.
    8. Re:Which DB is better!! THe world will never know by Phil+John · · Score: 1

      I'm developing a project in SQL2K and ASP at the moment (a student staffing system) and from what I've seen it's very fast and stable enough for our needs. Our entire website and databases for departments (through Access linking) is managed by it, a JobZone (student jobs), members, user accounts...the whole lot. There are currently 130+ tables and probably 200k+ of records in there...so far we've had no problems but we're probably not the busiest of sites...probably no more than 50 people using it concurrently.

      It's the first time I've used MS sql and IMHO the SQL Server Management console is one of the strong plus-points to it.

      Of course...I would rather be using something not from M$ (have you tried getting support off them when you're from a small company?) but it's the system they have in place...and I have to like it or lump it! I've had to learn ASP as well (basic for web servers(tm) ;o) ) which is a lot easier to make a clutter with, give me PHP any day! :o) ).

      --
      I am NaN
    9. Re:Which DB is better!! THe world will never know by broody · · Score: 1

      the only databases which would scale to what we wanted with no problems and serious speed problems were MSSQL and Oracle

      The only databases out of the ones you evaluated. Informix, IRI express, DB2, Sagent, Sybase, Red Brick, SAS, ShowCase, or WhiteLight all would be likely to be up to the task. Ok sure some go a bit far into data warehousing & OLAP but all are high end alternatives.

      That said IBM or Oracle has bought out almost all of them by now.

      --
      ~~ What's stopping you?
    10. Re:Which DB is better!! THe world will never know by HiThere · · Score: 3, Interesting

      It's silly, because it costs so much, which makes it totally impractical for a large range of purposes.

      It's silly, because we hires a team of Oracle approved contractors, and after six months they didn't even have a dialog box working. So Oracle replaced them with another bunch, and they quickly go stuck too.

      OTOH, some things only work with Oracle. If you need them, then that's what you have to use, warts and all.

      What is better depends on what you need.

      --

      I think we've pushed this "anyone can grow up to be president" thing too far.
    11. Re:Which DB is better!! THe world will never know by mauryisland · · Score: 1

      IBM bought Informix in July 2001, and they're apparently going to move the best parts of Informix into DB2. Informix is still being well supported, though it doesn't seem to be marketed much. Informix is absolutely a rock in it's current release (IDS 9.3) - fast, stable and lean. It's a joy to work with. Our Informix DBA spends 99.9% of his time working on other projects.

    12. Re:Which DB is better!! THe world will never know by Phil+John · · Score: 1

      then maybe you shouldn't hire contractors from oracle but go for someone who does it on his own. If he has survived it means he must be good. Oracle can send you just anyone...it doesn't matter to them one iota how good they are because...hey...you've already paid for the software.

      We used a guy called Simon Redfern (in the U.K.) and he got the job done totally and in only a few days.

      Don't go for a contractor just because they're approved...that's narrow and short sighted...and as your case pointed out...a little foolhardy.

      Go for personal reccomendation over "certification" any day.

      --
      I am NaN
    13. Re:Which DB is better!! THe world will never know by Anonymous Coward · · Score: 0

      Actually, that tends to be the case for professional DBA's (outside of development shops) working on anything but large enterprise systems or ORACLE (the hangar queen of software). DB2 has been and is sweet and MSSQL just has to be installed by someone who can read somewhat beyond the 8th grade level.

    14. Re:Which DB is better!! THe world will never know by el_chicano · · Score: 2
      What's better: Red Hat, Suse, or alternative option Debian.
      Mandrake? :->
      --
      A man who wants nothing is invincible
    15. Re:Which DB is better!! THe world will never know by Anonymous Coward · · Score: 0

      are you serious? Toyota is light years ahead in terms of quality and reliabilty than a 10 recall Ford, or a "rock" GM... I torturously drove a Tercel '94 up to 105,000, without one bloody hitch of problem. The 2000 Camry LE (which I bought myself, the old one was a gift from my parents while I was in college), has 47k thus far... it sounds and drives as the same day I took it off the lot. Yes, it may be a geeky argument or this post is offtopic - but to put Toyota in the same paragraph and in contrast to Ford or GM (I'm not sure which one has gotten more mediocre as of lately) is fucking ridiculous.. Ford/GM isn't even in the same league w/Toyota - regardless of the bloat factor or revenue they generate... what a joke..

  6. Been running it for a while now... by Phil+John · · Score: 4, Informative

    I've been following the developments very closely and have had it running fine on my development box (P3, Win2K Pro) for over a month without a reboot.

    I've also had a test site live to the world running off my broadband connection, so I could test stuff from work etc. and I haven't found any problems yet.

    However I don't know how it would scale to a large site (the test site was 34 tables and only around 50k records in total).

    I think a lot of the "don't use this on a live site" stuff is just to cover their own asses in case something goes wrong.

    --
    I am NaN
    1. Re:Been running it for a while now... by Anonymous Coward · · Score: 0

      Are you Phil John from Birmingham, UK? I think I know you ..

    2. Re:Been running it for a while now... by Phil+John · · Score: 2, Funny

      Yes I am! who is this?

      --
      I am NaN
    3. Re:Been running it for a while now... by Anonymous Coward · · Score: 0

      I'm the bloke who you gave a blowjob to last night.

  7. innondb tables by alexc · · Score: 1

    Mysql 3 supports foreign keys and transactions if you use innondb tables. i would love to see the next version of mysql have store procedures.

    1. Re:innondb tables by Sulka · · Score: 2

      InnoDB tables offer nice capabilites but are horrible to maintain compared to MyISAM tables.

      For example, with InnoDB you have to statically allocate the table space and there's no tools to profile for how much space you'll need, meaning you have to keep on checking the available space constantly.

      --
      "Although it is not true that all conservatives are stupid, it is true that most stupid people are conservative."
    2. Re:innondb tables by EastCoastSurfer · · Score: 2

      Mysql needs to be careful with the features it adds. It holds a niche market on web sites that need a fast primarily read only db right now. When they start adding features like stored procs, views, etc... they WILL take a performance hit. Then people will be asking themselves why not just use postgres or informix or any of the pay to play dbs since these dbs already implement all these wanted features and have been around and tested for awhile.

    3. Re:innondb tables by the_mutha · · Score: 2, Insightful

      I really don't understand why so many people get caught in this stupid discussion about what is better, MySQL or PostgreSQL.

      It seems as though people live in a 2 dimensional world, a black and white world, where you only have one answer to a question.

      MySQL has its advantages and disadvantages, just like any other RDBMS on the planet. It doesn't mean its CRAP or SUPER. It ALWAYS depends on what you are trying to do with it, the time you have on your hands to develop software that will use it, the number of records you will be holding, if you need transactions or not, if you need replication or not, if you need just SELECT speed on simple tables, or if you are developping a transaction-based e-commerce app.

      There is a reason why Oracle is so popular
      There is a reason why MySQL is so popular
      There is a reason why PostgreSQL is so popular

      My motto is: "Don't be a bigoted nerd! Always use the best tool for your specific project/job"

      In some cases MySQL will be the best, in others it will be the worst.

      In most cases people talk too much and read too little about what they are talking about.

      (p.s. this is NOT a flaimbait... just a call for an end to all the nonsense!)

    4. Re:innondb tables by nichachr · · Score: 1

      This is why the way MySQL has been developed is so awesome. Transactions are now available and for the people that need them they can create their tables using one of the table types that support them. For the rest of us that are working on applications that don't require them - we don't feel the performance hit. Monty is a speed NUT - he strives to keep MySQL thin and fast and will continue to do so while adding good features that people need.

      This is 10000s of times better than the Oracle approach that crams features into the product and punishes everyone who uses it with the slowness.

      -Chris

    5. Re:innondb tables by Anonymous Coward · · Score: 0

      You can always offer stripped down versions of your product with very little difficulty if it is properly architected/designed. This allows you to keep your "niche market" that you claim is the bread and butter of MySQL but doesn't keep you from expanding into more serious update/feature intensive applications spaces.

      Extra features are never a bad thing as long as you do them right (don't get exited Bill...I didn't say make them "part of the OS"). The attitude expressed in the parent of this post is shortsighted and shows an unfortunate prevailing attitude that holds back many open source projects, namely...

      "If we didn't think it's important you don't need it. Use it only for what I designed it for."

      It's the friendly equivelant of the "don't hack my hardware or you go to jail" attitudes many appliance companies have and it's a drag on innovation.

      Alright...rant over. =)

    6. Re:innondb tables by Anonymous Coward · · Score: 0

      Innodb tables now have an autoextend feature, which
      grows the tablespace automagically.

    7. Re:innondb tables by leuk_he · · Score: 2

      Well one thing you forget in all your arguments in money. Mysql is more or less free. Oracle is very expensive(well, if you are the person wo has to pay for it).

      And beside the "best tool" is not always what the pointy haired boss has to say about it.

      The asker "is MYSQL 4.@ stable" askes for this. since there are alternatives that already have the features he askes for. He will be lucky if there are 1 or 2 comments (deeply burries under postgres and sapdb is better) about people that actualy use MYSQL 4.

      By the way why not program arround UNION? surey there is something in your programming language of choice to merge a couple of tables. if you need it only once or twice it might be better than a DB upgrade.

      --- IANA mysql expert

    8. Re:innondb tables by Anonymous Coward · · Score: 0

      uh, dude, this is slashdot:
      News for Bigoted Nerds, Stuff that matters to Homos.

  8. Pretty stable for me.... by wenzi · · Score: 3, Informative

    I have been using it for quite some time on a large active database. I have not had any problems with corruption, and it has been solid as a rock so far.

    Why use mysql instead of Postgres ? Speed....

    --
    -- I doubt, therefore I might be.
    1. Re:Pretty stable for me.... by Anonymous Coward · · Score: 0

      yeah I bet you some pf youre data is worthless having missmatched data( oh yeah how can you know withoutimplementing foreign keys?). or you have a data model that has tables that are 300 columns long!

      god they wont know how bad until they really want to put it in a data warehouse adn do some oolap analysis on how bad

    2. Re:Pretty stable for me.... by Anonymous Coward · · Score: 0

      What's the big deal about database speed anyway? I mean if you have a weblog type of website and only add articles once every day, why are you hitting the database with a select query everytime someone hits your webpage? I mean, if the content isn't any different why not cache your webpage? Then database speed isn't such a big deal if only one select is performed on the DB every day. The right database to use will be the one with the best feature set, not raw speed.

  9. Improvement. by saintlupus · · Score: 1

    If you feel MySQL isn't ready for prime-time, where specifically do you feel it needs improvement?

    I'd respond, but Slashdot just keeps reloading the main page over and over again on me.

    (/sarcasm)

    --saint

  10. Re:First Goat! by mr_z_beeblebrox · · Score: 0, Offtopic

    I have reported this steganographic threat to the FBI. We must be VIGILANT.

  11. MySQL supporters need to learn SQL by rsmah · · Score: 4, Informative
    MySQL's popularity can be traced back to the popularity of mSQL and MySQL's compatability with it. It's widespread use, however, is like the spread of Microsoft Windows or Visual Basic. Some people *believe* that MySQL is somehow "easier" or "faster", but that's just not the case.

    If you are a MySQL user and don't understand why people who know databases don't like it, you simply have to consider MySQL's lack of common SQL DBMS features such as:

    • Transactions
    • Subselects
    • Views
    • Triggers
    • Constraints
    • Foreign Keys
    • Etc, etc, etc.
    You may not understand why such features are important, but that doesn't mean that having them available for use when you do finally learn about them isn't important. A DBMS without such common features is like driving a car without seat belts and air bags. You may get where you want to go, but woe to you if you run into any trouble along the way.

    BTW, yes, I know that Mysql supports foreign keys and transactions if you use innondb tables. But the point of using a SQL database is that you shouldn't have to worry about the underlying data representation.

    Cheers,
    Rob

    1. Re:MySQL supporters need to learn SQL by Libor+Vanek · · Score: 1

      Hey - these were my words! :o)

    2. Re:MySQL supporters need to learn SQL by Anonymous Coward · · Score: 0

      * Transactions -- Already aviliable
      * Subselects -- Under development, will aviliable soon
      * Foreign Keys -- Already aviliable

    3. Re:MySQL supporters need to learn SQL by EastCoastSurfer · · Score: 2

      I totally agree. Using mysql is going to be an exercise in frustration for anyone who has used a real rdbms before. Some things like foreign keys you can do without in your careful (just hope no one else on your team executes a query that orphans records in another table). Things like subselects and views on the other hand are requirements(MSSQL has a really cool thing called partitioned views...awesome for storing dated data). It totally baffles me that mysql didn't even have the UNION clause until ver. 4. Can you use SQL 92 syntax yet and do your joins in the FROM clause or do you still have to do them in the WHERE clause?

    4. Re:MySQL supporters need to learn SQL by Anonymous Coward · · Score: 0

      Oh my. Please don't take this as a troll, but I was always under the impression that mySQL was a viable alternative to commercial RDBMS systems considering how much attention it gets from the linux community.

      Now that I've read a few of the comments, it appears that it's really just a toy -- a teaching aid maybe. It looks to be about on par or slightly less functional than MS Access. I can't imagine using this for any reasonably important application.

      Is Postgre a commercial product?

    5. Re:MySQL supporters need to learn SQL by Ark42 · · Score: 1

      Isn't this about MySQL 4? The point being a lot of these features are being added to, or already in MySQL 4. Subselects I'm sure are. Some might be planned for 4.1, but the question is asking is MySQL 4 stable enough to go ahead and switch over to, in order to GET some of these features mentioned.

    6. Re:MySQL supporters need to learn SQL by Quietust · · Score: 2
      Can you ... do your joins in the FROM clause or do you still have to do them in the WHERE clause?
      You mean like this?

      SELECT * FROM table1 t1 LEFT JOIN table2 t2 USING (common_column) WHERE t1.column1=7

      If so, yes. You don't even need MySQL 4; 3.23 can do it just fine (though it may be missing a few variations).
      --
      * Q
      P.S. If you don't get this note, let me know and I'll write you another.
    7. Re:MySQL supporters need to learn SQL by Anonymous Coward · · Score: 0

      Postgres's parent company (Great Bridge) went out of a business because there product sucked so bad, they couldn't even make enough money to stay alive.

    8. Re:MySQL supporters need to learn SQL by LatJoor · · Score: 5, Insightful

      Everyone knows that MySQL is not a good choice for heavy lifting, it's much better for lightweight applications where you have a simple database with lots of SELECTs and not much updating. Get used to it. Why must you force it to fit a different mold as well? The reason many of those features were left out is because they resulted in design decisions that slowed the thing down. And yes, MySQL is faster than any other database, except perhaps Oracle when it's finely tuned, but if you have the time and expertise and money for that, chances are MySQL wasn't the database you wanted anyway.

      I've used PostgreSQL, a highly SQL compliant DB, and I've used MySQL. I moved to PGSQL because it was a "real RDBMS." After a while, I ended up going back to MySQL because I wasn't using any of the features that made PostgreSQL more desirable. I was writing a fairly simple WWW application.

      Many people don't care about setting up a fancy RDBMS, they just want a few tables that they can easily commit to and select from, like a glorified Berkely DB. What's wrong with that?

    9. Re:MySQL supporters need to learn SQL by Anonymous Coward · · Score: 5, Insightful

      I am more than a little experienced with "real" RDBMS packages (using MS SQL, DB/2 and Oracle professionally and occasionally personally), and I *believe* that MySQL is somehow "faster".

      Why? Because, in general, _it is_. Easier? Easier than Oracle and perhaps Postgres. Toss in some of the third party apps (MySqlFront comes immediately to mind), and it does get quite a lot "easier".

      If you are someone who "knows databases", and think you "shouldn't have to worry about the underlying data representation", you are not, in fact, someone who "knows databases". From a MS SQL standpoint: if you have not already married your copy of Delaney's Inside SQL Server (HEAVY on the "underlying data representation"), you do not, in fact, _know_ that RDBMS.

      It is such a hugely important area of knowledge when developing (and more particularly, designing) against a particular RDBMS that I am just shy of saying that statement paints you as an idiot.

      Views: They're coming. I hate waiting for it, but I can wait.

      Triggers: Showing up with Stored Procs? Who knows. Keep your business logic in the middle tier where it belongs and you invalidate 99% of the reasons triggers are used. (Yes, I know there are exceptions.)

      Constraints: Business Logic. Middle Tier.

      Stored Procedures (oh wait, this wasn't on your list!) This is annoying mostly to people who don't implement a robust middle tier. But it's coming, too.

      ANSI compliance: Far more annoying than any of these other things are the few areas where they still have stupid custom functions rather than simply implementing what the standards say.

      But, frankly, the situations where the lack of any of these features are lethal to a project are few and far between. (Lack of views and stored procedures for a DB-centric implementation of row-level security, something very few people actually do. Lack of triggers for building complete audit trails that direct DB users cannot sidestep... something else very few actually do...)

      Why do I, someone who "knows databases", use and _deploy professionally and commercially_ MySQL?

      Because it's fast, stable, and they [seem] to care a whole hell of a lot more about implementing a feature in a manner which is fast and stable rather than implementing it ASAP just so they can add a few marks to their report card.

      I have run into two, count 'em, two, areas where MySQL's "lack of features" posed a problem for me. Because I am a _firm believer_ in not tring to make the database do things it is not intended to do, I moved those two things into the very solid middle tier and the problem was solved.

      I despised MySQL until this past year or so. It was fairly obviously slanted towards driving websites rather than being a serious RDBMS.

      That has changed, is continuing to change and, by all accounts, will continue changing with every release.

      It is a pity that some people who "know databases" cannot change their narrow tunnel vision as well.

    10. Re:MySQL supporters need to learn SQL by tstock · · Score: 1

      It looks to be about on par or slightly less functional than MS Access

      lets not get drastic now... MySQL is to MS Access what home made cooking is to airplane snack packs. The "attention" it gets (strike "from the linux community") is mainly due to speed and ease of administration. Thousands of LAMP sites use it (including slashdot) and don't need the bloat of other RDBMS.

      Having said this, if you need more features, you could look at Postgres, but it seems you may have already made up your mind in getting some hand holding and fuzzies from the Oracle tech support :)

      tstock

    11. Re:MySQL supporters need to learn SQL by essdodson · · Score: 1

      How long have subselects been "aviliable soon". I've been told that for atleast a year now. I'll believe it when I see it. Stored procedures, when? I guess they're available soon as well. (read: need to wait another two years for things that have been the standard for a decade)

      --
      scott
    12. Re:MySQL supporters need to learn SQL by cduffy · · Score: 2, Insightful

      I've used PostgreSQL, a highly SQL compliant DB, and I've used MySQL. I moved to PGSQL because it was a "real RDBMS." After a while, I ended up going back to MySQL because I wasn't using any of the features that made PostgreSQL more desirable. I was writing a fairly simple WWW application.

      Mind if I ask what training (preferably formal education including theory as well as practice) you've had in doing database work?

      Once you've learned to properly use the fancier features, it's hard to do without them. Otherwise you end up with more error states (sometimes meaning the app going down in the middle of the business day for no apparent reason -- I've seen this happen In Real Life due to relational integrity failures the database should have prevented), reduced speed (because of calculations that could have been done by the database itself via stored procedures are being done by the client) and the need to make assertions which should be enforced by the underlying data storage layer. If all you want or need is a glorified Berkely DB, that's fine -- but stay away from anything mission-critical.

      The thing I'm really worried about here is the "if all you have is a hammer" syndrome. All too many folks who know how to use simple databases but not how to take advantage of the "fancier" features all too frequently decide that those features aren't needed in places where they really are vitally important, resulting in Bad Things happening. The blanked warnings aren't because MySQL can't meet your needs when all you need is a prettied-up db3; they're there because if you trust it to something mission critical, you can be putting not only yourself but whoever inherits maintaining and firefighting your system through hell.

    13. Re:MySQL supporters need to learn SQL by Anonymous Coward · · Score: 0

      instead of using constraints are saying that every different application against the database insure integrity?

      when its the databases job?

      maybe he doenst know databases but youre design sucks.
      read http://www.firstsql.com/dbdebunk/ on how much more you dont know.

    14. Re:MySQL supporters need to learn SQL by EastCoastSurfer · · Score: 2

      Correct, or some variation there of:

      SELECT *
      FROM tbl1 JOIN tbl2 ON tbl1.a = tbl2.a
      WHERE tbl1.b = 1

      Slightly OT, you know something that really bugs about rdbms in general? It's that their query processors still aren't as good as they should be. Now if we can agree that this query should return the same results as the previous query:

      SELECT *
      FROM tbl1, tbl2
      WHERE tbl1.a = tbl2.a
      AND tbl1.b = 1

      You would think that the query processor would turn these into the same internal data retrieval algorithm, but on many databases it doesn't. On one vendors database in particular one of these queries would run quickly while the other would run out of temp space. It will be nice when vendors really start to get this stuff right.

    15. Re:MySQL supporters need to learn SQL by nebby · · Score: 2, Insightful

      You don't "know databases" if you think that many of the things you listed belong in the middle tier. If you "knew databases," you'd know that it's the job of the database to perform the final check on data integrity before ANYTHING goes into the database -- the middle tier should do business logic checking as necessary, but definitely not something so low level as foreign keys. Also, what if you have many middle tiers from many different places, and what if you screw up in your middle tier? You won't actually know that the data is screwed until a real problem crops up or you notice the table mysteriously growing.

      I'd hate to see how ugly your middle tier is when it has to do like 10 DELETE statements since there is no cascading and 5 SELECTS before an INSERT to double check the fields which normally would be foreign keys. In fact, I'd bet that you probably don't do the checking in the middle tier, since that would be retarded and you just bank on the data being consistent, even if somehow your variable with the ID gets corrupted or someone else comes in and tweaks your code.

      Or, you're a troll.

      --
      --
    16. Re:MySQL supporters need to learn SQL by Plutor · · Score: 2

      Hear, hear!

      I would mod you up if I could. Because of their large feature set, giant RDBMS's like Oracle often end up doing things that belong in the middle tier. I'm glad someone with so much real knowledge was able to speak up in favor of MySQL.

    17. Re:MySQL supporters need to learn SQL by NerdSlayer · · Score: 3, Interesting

      MySQL's popularity can be traced back to the popularity of mSQL and MySQL's compatability with it. It's widespread use, however, is like the spread of Microsoft Windows or Visual Basic. Some people *believe* that MySQL is somehow "easier" or "faster", but that's just not the case.

      Mysql nay-sayers on slashdot always talk about how Postgres blows Mysql out of the water, but I've never seen any evidence of that.

      So, take the Pepsi challenge with me...

      Postgres Faster? Well, not as of a point version ago:

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

      Let's not forget about the joys of Postgres and "VACUUM" that locks the table. (Okay, in newer versions it doesn't have to lock the table, but then it slows everything to a crawl on a busy server)

      Also, clearly just from reading slashdot, you would know there's far more people using Mysql than Postgres, far more "grassroots" open source type helpful people that everyone on slashdot supposedly loves.

      Finally, compare the fucking manuals and try to argue how Postgres has an easier learning curve than Mysql. When you search the postgres site it returns a bunch of poorly named html documents, for Christ's sake.

      Though I would agree that all of the SQL functions you've mentioned are useful, they aren't necessarily so for an enterprise. And honestly, not too many people in big business are using PostgresSQL. They were either duped into using SQL Server because they're MS slaves, or they use the Far Superior Oracle, and pay for Larry Elison's 20" spoke rims on his rich-dude pimp-mobile.

    18. Re:MySQL supporters need to learn SQL by NerdSlayer · · Score: 2

      Though I would agree that all of the SQL functions you've mentioned are useful, they aren't necessarily so for an enterprise.

      Someday I will learn to proofread:

      "...they aren't necessary for small, non-enterprise customers".

    19. Re:MySQL supporters need to learn SQL by Anonymous Coward · · Score: 0

      Someday you might learn how to interact with real girls, not just those pictures you are looking at.

    20. Re:MySQL supporters need to learn SQL by Just+Some+Guy · · Score: 2, Insightful
      Constraints: Business Logic. Middle Tier.

      Would you trust data validation on your website to client-side JavaScript, or do you enforce rules on the server?

      Seriously, I think that's a valid analogy. In either case, you're trusting that client code won't stupidly or maliciously submit bad data, and that's just not reasonable practice.

      Should your middle tiers validate data? Absolutely. Should your server accept that data without its own rigorous testing? No way in hell. To be blunt, I'd fire you for that offense.

      --
      Dewey, what part of this looks like authorities should be involved?
    21. Re:MySQL supporters need to learn SQL by NerdSlayer · · Score: 1

      Someday you might learn how to interact with real girls, not just those pictures you are looking at.

      But your mother is so hot... I didn't know Carnie-folk were so cute.

    22. Re:MySQL supporters need to learn SQL by ErikZ · · Score: 2

      Well, I've gone though a year's worth of database design classes. I use MySQL for my website.

      (shrug) It works. I've never had ANY failures becuse my website IS that simple.

      --
      Democrats or Republicans. They are both taking us to the same place and they are not afraid of us anymore.
    23. Re:MySQL supporters need to learn SQL by Jason+Earl · · Score: 4, Insightful

      The so-called MySQL benchmark compares MySQL and other databases doing a whole pile of somewhat obscure database functions one at a time. If your database only has one user, and you spend a lot of time truncating tables, then MySQL is probably the correct choice. For a much more realistic benchmark try here. After looking at MySQL's benchmarks I had to conclude that either the MySQL developers are ridiculously naive about real world data loads or that they are being deliberately deceitful. No one cares how a database performs when there is one single user.

      MySQL is a fine database if your are creating an appliation that is read intensive and that doesn't need any of PostgreSQL's more advanced features.

    24. Re:MySQL supporters need to learn SQL by tshak · · Score: 2

      Mind if I ask what training (preferably formal education including theory as well as practice) you've had in doing database work?


      Well, I'm not the person you're asking, but I have to say that it doesn't take formal education or training to learn about RDBMS's, the concept of ACiD (not the drug, or the music software), or the ability to design a reliable and scalable database. Nevertheless, I agree with your overall post. Many who say that MySql has everything they need probably don't fully appreciate what an RDBMS offers. If all you are using MySql for is a guestbook for your personal website, I'd almost rather use XML.

      What's insteresting is Slashdot runs off of MySql, and although it's gotten better, this site doesn't exactly have the award for highest uptime. What I mean by uptime is the ability to post, because the site goes into "static" mode when MySql goes down, which used to happen quite often. Also, the performance of Slashdot is directly linked to a pretty decent caching system, so MySql is generally not doing a lot of work unless there are a ton of simultaneous posts.

      --

      There is no longer anything that can be done with computers that is nontrivial and clearly legal. -- Paul Phillips
    25. Re:MySQL supporters need to learn SQL by windex · · Score: 1

      I agree, I run an entire user management system ISP-wide (smtp, pop, NSS auth, radius, dns, apache autoconf via NSS, etc) on MySQL with no problems, the most complicated thing that I ever have to do in all of that is a multi-table select (using 2 indexes across 2 tables is sometimes faster, esp. with indexes of blob data, than one large index), and mysql has no issues with those.

      The only real problem with mysql is that when its under load you have to continually tell it to optimize tables after making changes, otherwise it lets it fall behind untill it goes to a crawl. I push several thousand (select) queries a minute through it without problem, but if you do an update or insert you really should optimize or run something in the background that optimizes regularly.

      Data storage is sometimes all you need, if your application has a clue, anyway.

    26. Re:MySQL supporters need to learn SQL by windex · · Score: 1

      Your CGI or script or other middleware should be validating input. Not javascript, not the SQL server, the script/middleware.

      As a responsible programmer, under no circumstances are you ever to trust client code to directly access a data source, or to allow your middleware to allow unchecked data to a data source.

      Anyone who lets un-checked client data into any SQL server, constraints or not, deserves death, as far as I can tell, lazy ought to be a crime in that regard. :)

    27. Re:MySQL supporters need to learn SQL by hanksdc · · Score: 1

      "I moved to PGSQL because it was a 'real RDBMS.'"

      Although my vote would be for Postgresql as well, by some standards (C.J. Date, and Fabian Pascal--see http://www.dbdebunk.com) Postgres isn't a 'real' RDBMS either. By those same standards, Oracle doesn't qualify as well. They fall into the class of database systems known as SQL-DBMSs. SQL wasn't fully relational to start with.

      Most of what's on the market today doesn't faithfully implement the relational model--and mainly because of everyone's dependence on SQL.

    28. Re:MySQL supporters need to learn SQL by Wdomburg · · Score: 2

      >If all you want or need is a glorified Berkely DB,
      >that's fine -- but stay away from anything
      >mission-critical.

      This statement doesn't really make any sense, since BerkelyDB is primarily a database toolkit, not a database server. It doesn't even implement SQL or any other quasi-relational language, just programming APIs.

      It also implies that BerkleyDB is somehow feature limited, which really isn't the case. It supports transactions with full rollback capability, replication and transparent failover, load balancing, write ahead logging and checkpointing, hot backups, etc, etc.

      It might not make sense for a general purpose database, but if you have predictable access patterns, it can seriously rock, particularly if you want to embed database features into an application.

      Matt

    29. Re:MySQL supporters need to learn SQL by Anonymous Coward · · Score: 0

      I don't know what you were reading in there, but that article was pretty positive for both databases.

    30. Re:MySQL supporters need to learn SQL by Anthony+Boyd · · Score: 2
      If your database only has one user, and you spend a lot of time truncating tables, then MySQL is probably the correct choice.

      Look at the eWeek tests. MySQL is keeping pace with Oracle even when scaled to 1000 simultaneous users. Read the article.

    31. Re:MySQL supporters need to learn SQL by mosch · · Score: 2
      Actually, data validation for web applications should generally occur at all levels.

      Client-side javascript, because it's fast, friendly, easy, and generates no load on your server while being nice to the user.

      In your PHP/JSP/whatever pages, to make sure what the user is sending you is legit, after all there could be a bug in the javascript or they could turn it off or not have it supported.

      In your database itself. If usernames are supposed to be stored lower case, put a CHECK(user == LOWER(user)) or whatever. If a column is required do you make sure it's NOT NULL, or do you rely on your middleware? constraints in the database are a good thing.

      This method not only gives you quite a bit of redundancy in your data validation, but it also scales nicely so when you decide to change languages or to use an alternate language to play with the database for some application, you're not risking creating a state that's invalid for another application.

    32. Re:MySQL supporters need to learn SQL by Osty · · Score: 2, Insightful

      Everyone knows that MySQL is not a good choice for heavy lifting, it's much better for lightweight applications where you have a simple database with lots of SELECTs and not much updating. Get used to it. Why must you force it to fit a different mold as well?

      The original poster is not the one trying to make MySQL be something it's not. If "everyone" knows that MySQL is not good for "heavy lifting" (by which I assume you mean a complex data set, lots of writes, the need for strict relationship management, etc), then why does "everyone" seem to want to use it just for that? Slashdot is arguably "heavy lifting" (okay, the data set may not be very complex, but there's a lot of it, and there's a lot of writes), yet it uses MySQL. As well, about once a day or so, Slashdot has database-related problems. Coincidence? I doubt it.

      Why must you force it to fit a different mold as well? The reason many of those features were left out is because they resulted in design decisions that slowed the thing down.

      Or so the MySQL team tries to justify those decisions, right up to the point where they finally support one of those features. Then, it's suddenly a necessary feature and won't affect performance too much. If the MySQL team would just be honest and admit they didn't implement a given feature because they didn't want to, didn't know how to, didn't have time to, or a design flaw prevented them from doing so, then I wouldn't have a problem. However, they try to justify not including various features (say, transactions) by telling the developers that you can easily code around the problem in your client-side code (even insinuating that it's better to do so!). That's just wrong.

      Many people don't care about setting up a fancy RDBMS, they just want a few tables that they can easily commit to and select from, like a glorified Berkely DB. What's wrong with that?

      Absolutely nothing, but don't be naive. You know there are tons of people out there trying to use MySQL for things it wasn't designed to do (look at Slashdot as a prime example, or check out some of the past Ask Slashdot questions, or look at Freshmeat.net, etc. There are even people using MySQL for financial applications! Yikes!). The moment someone has to think about how they will get at their data without using a subselect when a subselect would be the natural way to do so, or has to code their own transaction/rollback support in their client (not such a big deal now, since at least one MySQL table type has transaction support), or has to enforce relationships in their own code because MySQL doesn't properly do foreign keys, or has to fake triggers, and so on, then it's time to ditch MySQL and go with something bigger/better.

    33. Re:MySQL supporters need to learn SQL by Anonymous Coward · · Score: 0

      Postgres is free (you may also hear it referred to as Red Hat DB since RH started bundling it as their default RDBMS)

    34. Re:MySQL supporters need to learn SQL by sloth+jr · · Score: 1
      Quoting a two-year-old article and holding it as representative of state-of-the-art is not generally a great idea.

      MySQL 3.23, stable for some time now, is mostly robust - we've had it up on one server with a load of 20 queries/second for over 300 days. Stability under Linux 2.4.17 presently seems worse than late 2.2.x kernels - see below.

      Right now, lack of subselects is a pita but not unworkable. Table locking remains a major issue when using MyISAM tables (as has been pointed out innumerous times, InnoDB tables support row-level locking and transactions). There seem to be some optimizer issues for queries that use multiple indexes.

      Personally, I'm trusting *my* benchmark. We've got 20 quad-proc boxes running MySQL, with about 400GB of database. Now, this isn't record-setting by any means, but we usually run our boxes at no more than 25% utilization to be able to accomodate "events" (twixt our two datacenters, we aggregate around 50 million page turns a month , each page turn comprising multiple db queries.)

      I would conclude that under Linux 2.4.17, quad-proc x86, MySQL runs very reasonably up to around 60-100 concurrent connections, after which stability is a bit shaky (we think this related to 2.4.17 SMP issues - we are anxious for 2.4.19 to test this theory). By "a bit shaky", I mean that the database server will crash. A watchdog script restarts the db server instantly - but at that point, we may have table corruption. Not a terribly good scenario that we (perhaps naively) believe transactions would largely solve.

      Running with "low-priority-updates" has helped us scale quite a bit higher, but means when we do hit our threshold, things get ugly for a time.

    35. Re:MySQL supporters need to learn SQL by cduffy · · Score: 1

      Read the parent post; I use the example because it's what he used.

      That said, though, I've seen far too much data corruption and too many performance failures in Berkeley DB-based apps to trust it.

    36. Re:MySQL supporters need to learn SQL by Anonymous Coward · · Score: 0

      Actually, Access supports foreign keys, transactions, and parameterized queries (sprocs).

    37. Re:MySQL supporters need to learn SQL by W.+Justice+Black · · Score: 1

      Nope, the javascript analogy is NOT a valid one. People don't trust JS because there are a dozen different engine variants which each have subtle incompatibilities. Plus JS can be turned off and otherwise easily skirted.

      If you don't give anyone but yourself (whom you presumably trust), and one Business Layer codebase direct access to the tables, there's no compelling reason to rewrite a fair chunk of BL code in the form of triggers and constraints. All that does is make it tougher to update when you decide that Purple is a fine color to have in that field along with Red, Green and Blue.

      OTOH, if you simply don't want to write BL code and let the user get an obscuro DB error when they're naughty, so be it. Most developers I know, however, would rather deal with error conditions themselves and have the DB take it like a man.

      Yes, I'm a bit of a MySQL bigot, and the only feature I really miss from the "real" RDBMS world is subselects (because like any decent programmer I'm lazy).

      --
      "Time flies like an arrow; fruit flies like a banana." --Groucho Marx
    38. Re:MySQL supporters need to learn SQL by j3110 · · Score: 2

      Actually, PostgreSQL is a "Real ORDBMS" :)

      I've used both MySQL and PostgreSQL pretty extensively, but I want to play with one of the other five or six free and open source DBMS's. (hsqldb, firebird, and SAP to name a few)

      PostgreSQL is cool because you can make your own objects with simple C routines, or use C for embedded procedures and link to them at run time. It's actually quite usefull sometimes. Most people assume that MySQL is faster than PostgreSQL because it does less. That's really not all that true if you take advantage of the features that it has. Embedded SQL will reduce your network traffic and allow you to work with the data directly on the DBMS. This also reduces the latency between queries. Ex. to transfer money from account 1 to account 2 you would need two (4 if you include begin and commit) queries. The first query would be issued to deduct from account 1, then you would wait for the DBMS to OK the query through the network or other means, then you would send the second. With embedded procedures, you would tell the DBMS to call your procedure which would do both in one shorter command.

      Slashdot could have a procedure that takes user_id and story_id and it could look up the user's preferences with an SQL and only return the data needed (null for bodies that wouldn't show). If they run the web-sever and perl script on a seperate computer, the network traffic would be reduced by a large factor over just quering all the data and changing it in perl.

      The moral is, you can use features you don't _need_ to make PostgreSQL be faster than MySQL. Then latter, when something comes up instead of saying, "I wished I had a view/sub-select/embedded procedure" you'll get whatever you need done in less time. Don't forget that PostgreSQL has REAL embedded perl procedurs, embedded SQL, or just linking to shared libraries at runtime to access functions written in any language capable of compiling down to a .so library :) (assembler, C, C++, or anything you care to write a wrapper for)

      I guess an good analogy would be: If you only use the first three gears of a 5 speed sports car, it won't go as fast as third gear in a 3 speed family car. Just because you don't need that fourth gear doesn't mean you can't use it to your advantage. Using embeded procedures marries your project to DBMS's that support them, but it is quick and easy to port between them (all you have to do is rewrite the procedures and it will work anywhere).

      --
      Karma Clown
    39. Re:MySQL supporters need to learn SQL by hanksdc · · Score: 1

      No!

      Business rules belong in the database, not in the middle tier! Databases should be application independent. You introduce too many ways to screw up your data when you enforce your rules in some tier outside the database. Think about it, if you have to implement your business rules in every application that talks to the database, what a nightmare. Yes, you could put all that into some middle tier, and make sure that any access to the database goes through that tier, but then you have to enforce that. And often, it's not via triggers or stored procedures, but I'd wager a good chunk of your business rules can be implemented through good relational design, with proper normalization and keys in place.

      See www.dbdebunk.com,
      Or check out any of the stuff written by C. J. Date or Fabian Pascal.

    40. Re:MySQL supporters need to learn SQL by Darth_Burrito · · Score: 2

      I've been using MySQL for a while now, mostly for small personal projects and what not. Now I'm starting to mess with PostgreSQL mainly because a lot of 'people' were talking about it and it has some stuff I've been missing like sub-selects.

      Everyone knows that MySQL is not a good choice for heavy lifting, it's much better for lightweight applications where you have a simple database with lots of SELECTs and not much updating.

      If all you have is a simple database without lots of selects and not much updating, then why does it matter all that much what dbms you use? Why not use the system with more features?

    41. Re:MySQL supporters need to learn SQL by Jason+Earl · · Score: 2

      Yes, I realize that the benchmark was old (both MySQL and PostgreSQL have new versions out since then), but it is still more indicative of the real MySQL vs. PostgreSQL benchmarks than the MySQL benchmarks up on mysql.com.

      And yes, I realize that the InnoDB tables have row level locking and transaction support. I never said that MySQL was bad, in fact, it is getting quite good. I just have a fundamental problem with the "benchmarketing" that the MySQL folks have been using for years. There is a world of difference between their benchmarks and how you use a database in real life.

      My question for you is have you taken a look at the newer versions of PostgreSQL and seen how they react under the types of loads you put MySQL under? My guess is that you would find that PostgreSQL also performs very well, and you don't have to put up with MySQL's shortcomings. Crashing a PostgreSQL box, for example, is quite a bit less painful.

    42. Re:MySQL supporters need to learn SQL by Anonymous Coward · · Score: 0

      normalize

    43. Re:MySQL supporters need to learn SQL by Anonymous Coward · · Score: 0

      No!

      Applications should be database independent. Only an idiot, or someone selling databases would say otherwise. There are more applications than databases in the world.

      Now, STANDARDS in the middle tier would be a good thing. Note, I'm not talking 2 tier + 1. After the client-server paradigm comes N tier systems. And I don't mean the abortion that is J2EE. If databases expose APIs to manipulate data then drivers can be written and applications to handle "low level" business logic such as constraints and table relationships. You can have a logic tier run on the same machine as the data store with persistent connections to avoid the network penalty that you think stored procedures avoid. In reality, overuse of stored procedures tends to bog down databases to the point where throwing more hardware at it is the only solution, when a 10 base T network card would be more efficient and cost effective.

      There is a reason Sun and Oracle have such close ties, and it's the same as Microsoft and Intel -- or Dell. It has to do with money.

      Relax, I'm not calling you a schill for the evil Sun/Oracle alliance, but I am accusing you of ignorance and parroting their marketing copy and "treating everything as a socket head capscrew" just because you think you you have a more valuable skillset than some joe with a hammer.

    44. Re:MySQL supporters need to learn SQL by Anonymous Coward · · Score: 0

      Transactions will not solve data corruption on a database crash.

      At all.

      Transactions will solve programmatic data entry errors. But so will a try/catch block.

    45. Re:MySQL supporters need to learn SQL by joe_n_bloe · · Score: 1

      More notes.

      (1) It *is* vastly easier to set up and administer MySQL than Oracle, and somewhat easier than PostgreSQL. I've brought up several basic Oracle 8.x installs in the past couple of years and it's an experience I just can't recommend.

      (2) People who get all excited about views in production environments haven't had Oracle CBO choke on a view query. Heck, I took the load on our 12-cpu prod server to 29 (normally it's 10-15) with a series of view based queries executed one at a time the other day. The reality of views is that they suck hard, no matter what the concept may be.

      (3) Referential integrity constraints and cascaded deletes are good. Triggers, I will pass thank you.

      (4) MySQL is at least openly headed toward ANSI SQL. Even though Oracle 9 apparently (I am still stuck with 8.x) now groks ANSI OUTER JOIN, there's a lot non-ANSI left. ANSI SQL is nice although still more of a concept than a reality.

      (5) It would be nice if MySQL had something like SQL*PLUS but ... some day I guess.

    46. Re:MySQL supporters need to learn SQL by rycamor · · Score: 1

      "their product"? (not there)

      Great Bridge was most decidedly NOT a parent company to PostgreSQL. Just a joint venture partner. PostgreSQL is not a commercial enterprise. It is a classic open source effort, with developers from all over the world joining in.

      Great Bridge did not go out of business because PostgreSQL "sucked". They went out of business because they had a bad business plan, just like all the other companies around 1999-2000 that thought "open source" was somehow magically going to provide them an income. There was very little critical thinking applied to these business ideas at the time, because the tech market was still coasting off the stock boom of the 90s.

      What Great Bridge didn't stop to think about was that the typical PostgreSQL user is savvy enough to just download the source for free, compile, and read the excellent pgsql-* newsgroups for support that is better than any commercial product I have seen yet. So there was really no compelling reason why these guys should suddenly spend money on PostgreSQL.

      Even though Great Bridge went out of business, the PostgreSQL team kept right on improving it, to the point where it is only a couple of features away from directly competing with the large commercial DBMS's.

    47. Re:MySQL supporters need to learn SQL by Anonymous Coward · · Score: 0
      wait a minute! Whole year of design classes with MySQL? How about database theory? Anything about transactions?

      I guess you are not well educated in databases. Then listen what big guys are telling you: "forget about MySQL. Use PostgreSQL."

      And don't argue. Just do it.

    48. Re:MySQL supporters need to learn SQL by axxackall · · Score: 1
      BerkelyDB is primarily a database toolkit, not a database server

      Well, then MySQL is just a server (aka listener) to a database toolkit. It doesn't make it as a database server iether.

      --

      Less is more !
    49. Re:MySQL supporters need to learn SQL by Wdomburg · · Score: 2

      >Well, then MySQL is just a server (aka listener)
      >to a database toolkit. It doesn't make it as a
      >database server iether.

      Any MySQL build includes: a listener, a query engine, and a backend. Just because you can change the backend doesn't make it any less of a database server.

      Matt

    50. Re:MySQL supporters need to learn SQL by Wdomburg · · Score: 2

      >Read the parent post; I use the example because >it's what he used.

      True, I hadn't caught his reference originally. But you still essentially reiterated his misunderstanding about the nature of BDB.

      >That said, though, I've seen far too much data
      >corruption and too many performance failures in
      >Berkeley DB-based apps to trust it.

      I think the reliability and performance of BDB is highly dependent on the person writing to it. Since it is decidedly low-level, there are perhaps more caveats, but this doesn't differ that much from an RDBMS implementation.

      Matt

    51. Re:MySQL supporters need to learn SQL by ErikZ · · Score: 2

      Wait a minute yourself. I'll take you seriously when you're not posting AC.

      I like it when people check back on posts that they've made and respond to me.

      --
      Democrats or Republicans. They are both taking us to the same place and they are not afraid of us anymore.
    52. Re:MySQL supporters need to learn SQL by cduffy · · Score: 1

      But you still essentially reiterated his misunderstanding about the nature of BDB.

      Granted. I had roughly three options: To try to correct his misunderstanding (and in doing so go into a diversion from the primary topic), to ignore it (and lose communicative value), or to use it (as when he said "Berkely DB" he obviously meant "simple datastore"; the best way to convey that same thought when talking to him, then, would be to use that same, even incorrect, terminology).

      I think the reliability and performance of BDB is highly dependent on the person writing to it. Since it is decidedly low-level, there are perhaps more caveats, but this doesn't differ that much from an RDBMS implementation.

      Higher-level tools can and should make it harder to screw things up. Just as using a journaling filesystem makes for a system with fewer bugs than that same system would have if written by a team of equal competance using only raw device access, a good higher-level datastore can do much to prevent inconsistant data.

      Datastore corruption is something that Just Doesn't Happen with a good database product (RDBMS or otherwise), however ill-written the application using it. On the other hand, I've seen BDB datastores corrupt on many occasions. Certainly, BDB is low-level -- but that's no excuse for allowing the datastore to be inadvertantly destroyed, even by a flawed application (RPM comes to mind).

    53. Re:MySQL supporters need to learn SQL by Anonymous Coward · · Score: 0

      the issues discussed in the post you are discussing are the result of normalization of data. Please learn about relational database theory. Find a copy of Codd and read it.

    54. Re:MySQL supporters need to learn SQL by sloth+jr · · Score: 1
      We ran PostgreSQL for quite a while, until our performance needs caused us to choose MySQL. I've not examined PostgreSQL in about a year.

      We've had one case of catastrophic data loss on our old PostgreSQL database that we'd not been able to diagnose (eg, the schema was still intact, but all rows were zero'd).

    55. Re:MySQL supporters need to learn SQL by BollocksToThis · · Score: 1

      Client-side javascript, because it's fast, friendly, easy, and generates no load on your server while being nice to the user.

      This is a common thought, and I wish it would fucking die.

      Javascript is not nice, it doesn't even behave the same in any two different browsers. Using Javascript to validate anything should be a hanging offense.

      Creating a web page that causes a user to click multiple times in frustration before realising the only way they'll get it to work is by firing up [the Author's undeclared choice of] Mozilla or IE...*takes breath*...is disgusting.

      --
      This sig is part of your complete breakfast.
    56. Re:MySQL supporters need to learn SQL by BollocksToThis · · Score: 1

      No one cares how a database performs when there is one single user.

      Except that single user, of course.

      --
      This sig is part of your complete breakfast.
    57. Re:MySQL supporters need to learn SQL by Lenolium · · Score: 1

      Oh no, it's a stored procedure guy. There is a reason that most applications do as much processing as possible on the client end, it's because client's always have more processing power than servers. Why do client's always have more processing power than servers, it's because for any one server, you could have tens to hundreds of clients, part of building an extremely scalable system is distributing as much processing as possible to the client. This is why you should almost never use stored procedures in a scalable system, unless you get some heavy-duty replication going you are almost always guaranteed to only have one SQL server avaliable, whereas you may have fifty to a hundred clients. There are good uses for stored procedures, espically the bank example you posted, but remember, anything done on the server costs you when it comes to scalability.

    58. Re:MySQL supporters need to learn SQL by j3110 · · Score: 2

      That's true in very few circumstances though. The #1 bottleneck on a system is going to be network bandwidth. The second is going to me IO. Lastly, the CPU of the server usually goes unused. If you're going to have to execute the SQL anyhow, it should be moved to the server to cut back on Network utilization. Also, sometimes, the overall CPU usage of the server can be reduced by moving multiple statements into a stored procedure on the server. Some DBMS's compile or preparse the SQL in the stored procedures, or if nothing else, you can link to a C function.

      The problem I have with stored procedures it makes your application database specific. I've never ran out of CPU before hard disk throughput, so I've been using JBoss(J2EE) to force security the way I want. Even with using a middle tier on the same computer, I can still saturate a 100Mbit connection. If it ever becomes a problem, I'll upgrade the 700mhz processor and 128M of ram to an Athlon 2000XP and 512M of ram for about 300$. If the average developer got paid 50$/h, then it would be better than spending over 6 hours of tuning performance, and it would be over 3 times faster. If you use J2EE, and you have to make it work for an impossibly large client base, you could always get a DBMS that supports replication(since it will work with all DBMS with a JDBC driver) and just throw more commodity 600$ machines at the job.

      I don't know what you are doing to use 100% of the CPU on the server for 50-100 clients, but maybe you should get a book on DBMS theory. If you normalize the database and create some indexes, you'll find that just about anything will support that many users. Well, as long as you aren't spawning processes every time a client makes a request (CGI is a very bad thing).

      --
      Karma Clown
    59. Re:MySQL supporters need to learn SQL by Anonymous Coward · · Score: 0

      Transactions protect the server from a CLIENT crash, which is far more common, and something your try catch block will NEVER fix.

  12. You're living in the 1970s by SpatchMonkey · · Score: 2, Insightful

    Seriously, most SQL databases have moved on past the stage mySQL is at. The features you're asking for are standard in almost every other SQL-based product available.

    I mean, it's like trying to use a calculator without an 'x^y' button. Sure, the calculator might be smaller and faster but do you really want to be hitting '*' hundreds of times when you could do '^' once?

    You really are living in database technology yesterbidecade. Relational database software has moved on a lot since then - why not take advantage of it?

    1. Re:You're living in the 1970s by Anonymous Coward · · Score: 0

      But MySQL is free. (So is Postgre, tho).
      If you need a web-related simple fast engine, why not get it for free?

    2. Re:You're living in the 1970s by Anonymous Coward · · Score: 0

      Because you get what you pay for.

    3. Re:You're living in the 1970s by aminorex · · Score: 1, Troll

      : why not take advantage of it?

      Because it sucks. Much as Windows 98se is a
      great advance over DOS, yet it sucks much more
      than DOS does.

      Oracle is huge. Vast. Ponderous and complex.
      That's just a bad design.

      MySQL is the opposite. Fits on a floppy.
      Installs in seconds. Runs well on a PIC chip.

      --
      -I like my women like I like my tea: green-
    4. Re:You're living in the 1970s by Anonymous Coward · · Score: 0

      You're having a laugh, aren't you.

      If you're not, go away and read a few books on relational database theory, design and implementation. Maybe then you'll understand why what you said was drivel.

  13. Release Date by n-baxley · · Score: 2

    Does anyone know when it will become the official release? My Hosting company won't upgrade until it's marked stable, understandably, but I'd love to know when that will be.

    1. Re:Release Date by Anonymous Coward · · Score: 0

      You mean you didn't get the memo?

      MySQL 4 will be released precisely at 9:05AM on September 19th, 2002. They publicly announced that date and time when they first started development on v4 because, you know, they can accurately predict those sorts of things...

  14. This is just a rumor... by jsonmez · · Score: 5, Funny

    This is just a rumor but I heard that this one guy, well he ran MYSQL4 and his arm blew off. I mean the whole thing, I am talking fingers and hands and everything.

    1. Re:This is just a rumor... by Anonymous Coward · · Score: 0

      but it must be true, cause it happened to a friend of a guy my roommate knows.

    2. Re:This is just a rumor... by billnad · · Score: 2, Funny

      I know exactly the story you are talking about. This friend of an old roomate of mine had that happen, as my friend tells it he was lucky to keep his other arm.

    3. Re:This is just a rumor... by Tablizer · · Score: 2

      This is just a rumor but I heard that this one guy, well he ran MYSQL4 and his arm blew off. I mean the whole thing, I am talking fingers and hands and everything.

      I busted a fingernail while paging around the review of it. Is this an early symptom of arm-bustage? I always thought it was due to that Monsanto corn I ate until I heard this.

    4. Re:This is just a rumor... by Anonymous Coward · · Score: 0

      Well, Microsoft products blow my arm off almost every day. I simply buy artificial replacments in bulk now.

    5. Re:This is just a rumor... by Anonymous Coward · · Score: 0

      nobody told me about the Arm port for mysql!

      maybe he should have used Strongarm instead ;o)

  15. new feature? by sql*kitten · · Score: 3, Informative

    new features of version 4 that uses the UNION clause.

    As far as I know, IBM's System/R had UNION in 1974 and Oracle (back when the company was called Relational Software) had it in 1979...

    1. Re:new feature? by jabbo · · Score: 3, Interesting

      YES!!!

      THANK YOU! I was wondering how long it would be before someone noted that the challenge of UNION is akin to that of the '+' operator in Lisp...

      I run all my robust projects on PostgreSQL, and the data marts on MySQL. MySQL is just a flatfile database for people too lazy to use those :-)

      Lately I've been involved in some community projects where they're currently trapped with MySQL, thank god every reasonable piece of PHP software (PHP! you know, the 'k1dd1e language'!) is now moving towards abstraction and PostgreSQL support too.

      Subselects are another obvious lack -- I have more respect for MySQL's paying customers (eg. I believe now that they understand what MySQL is for, perhaps better even than the developers!) because that indicates to me that it is paid for as a straight data mart, NEVER as an Oracle substitute. Thank god someone sees this truth.

      --
      Remember that what's inside of you doesn't matter because nobody can see it.
    2. Re:new feature? by bellings · · Score: 2
      MySQL is just a flatfile database for people too lazy to use those :-)

      Well, of course it is just a flatfile database. It's not a transactional DB, and any comparison to a transactional DB just quickly turns into a vi vs. emacs debate. But there are a couple of improvements that MySQL adds to the flatfile database. And, for the kind of program where you would consider using a flatfile database, I think that MySQL provides a couple of nice features that anyone should consider:

      • First, the single biggest plus for MySQL over a flatfile database is that many of the useful methods have already been written for you, and you don't have to roll your own -- joins, selects, sorts, inserts, deletes, and hash indexes have all been taken care of for you already. And, those methods have been reasonably encapsulated behind a small SQL-like language that is going to be easy for just about anyone to learn.

        If ever tried to maintain a few different programs that roll their own flatfile databases, you'll quickly appreciate the encapsulation that MySQL offers. In the real world, a lot of real programmers manage to produce an ugly unholy union between their data and their algorithms. At least when I'm maintaining a program that uses MySQL I can be reasonably certain of at least one level of abstraction exists, and I'm already familiar with that abstraction.

      • Second, MySQL helps with concurrent access. Some locking has been taken care of for you. It's not always perfect locking, but if it's locking that's good enough for your application, then it's good enough for your application. Again, if you've ever had to maintain code using a flatfile database, you'll quickly discover that not all programmers are very careful with their locking.
      • Third, there's a reasonable (although limited) permissions system in place. If your filesystem doesn't have ACL's (Access Control Lists), or if you don't want to create an OS user for each DB user, you'll appreciate the MySQL permission system.
      • Fourth, MySQL is a flatfile database with a network transport layer. You can stick all the data for all of your applications in one place, and even put the data on a seperate server from your applications. If you have a fairly simple application (like Slashdot, for example) that could easily use flat files, but which would benefit from a network layer, MySQL is a great plus. Of course, if your admin is a picklehead who inexplicably decides to delete the /var partition one day, you're gonna be unhappy. But if your admin is a picklehead, you're gonna be unhappy anyhow. Putting all your data in one basket makes backups and administration quite a bit easier. It also makes it easy to write new programs that use existing data.
      In short, MySQL isn't a transactional database, and it doesn't use "real" SQL. But it does give several advantages over a plain flatfile database, and I would certainly recommend that anyone use it rather than roll their own flatfile database for their programs. If you ever expect someone else to maintain your code (or, if you ever expect to maintain more than one program yourself), you'll quickly appreciate what MySQL does offer. Of course, if you need a transactional database, or true SQL support, you'll quickly curse what MySQL doesn't offer. Know your application, and you'll be fine.
      --
      Slashdot is jumping the shark. I'm just driving the boat.
    3. Re:new feature? by Anonymous Coward · · Score: 0

      It wasn't Oracle it was Ingres that was called Realtional Technology. Ingres had UNION back then as well. Ingres got swallowed by Computer Associates in 1993.

  16. Problem when running on linux kernel 2.2.14 by Phil+John · · Score: 1

    Here is some info that might be relevant if you're running it on linux.

    Don't know if this affects all versions of MySQL or only 4.0x

    --
    I am NaN
  17. Hmmm.. let me think about this. by psychofox · · Score: 5, Funny
    The developers warn you that it is not ready for Production use. And you don't believe them...

    I promise not not to say I told you so.

  18. Don't use proprietary SQL features by clever · · Score: 2, Informative

    You can likely change to a different database later as long as you don't use proprietary functions. Make sure you write standard SQL.

    And before you say that what you write is SQL... You might not be. Check a few of your statements with an SQL Validator

    1. Re:Don't use proprietary SQL features by Anonymous Coward · · Score: 0

      And what do you do when the DB you're using doesn't SUPPORT "standard" SQL? I've used Oracle, Access, DB2, and MySQL. NONE of them use the same funtion names, syntax, etc.

    2. Re:Don't use proprietary SQL features by cduffy · · Score: 1

      Ideally, supporting enough of the standard is something you make a requirement.

      While Oracle 8i had horrid SQL92 support, they've improved substantially in Oracle 9i. Personally, though, I use PostgreSQL on most of my projects -- it comes closer to the standard than anything else I've played with (older versions of Oracle, UNIFY DB, MySQL).

  19. What the hell? by Anonymous Coward · · Score: 0

    Is it "Complete shit" week on Slashdot? I mean, the current bunch of shit is even worse than the usual shit!

  20. Stored Procs and Foreign Keys by Ryosen · · Score: 2, Interesting

    I've been dying to dump our M$ SqlServer base for MySql for a long time now. Once MySql (finally) integrates stored procedures (which I think is now v4.2), that will happen, but not before.

    I've heard the arguments for not needing stored procs before, but we have a application environment that is spread across multiple language and technology platforms and cannot afford the duplication in database logic.

    Of course, if any one has some better suggestions, I'd be more than happy to hear them.

    --

    Ryosen
    One man's "Troll, +1" is another man's "Insightful, +1".
    1. Re:Stored Procs and Foreign Keys by Anonymous Coward · · Score: 0

      You've got to be kidding me? What exactly is the reason you want to drop MSSQL for MySQL? If it's something other than the cost, I'd like to know about it.

    2. Re:Stored Procs and Foreign Keys by TheShadow · · Score: 1

      Dude, don't dump SQLServer for mySQL. That would be like trading in your BMW for a go-cart.

      If you are running SQLServer 6.5, upgrade to 2000.

      I hate to say it but SQLServer 2000 is a damn nice database.

      And it sounds like you are using Stored Procedures for what they were meant for... so don't listen to people telling you they are not needed... if they weren't needed every major RDBMS wouldn't have gigantic APIs to support such things.

      --

      --
      "What do you want me to do? Whack a guy? Off a guy? Whack off a guy? Cause I'm married."
    3. Re:Stored Procs and Foreign Keys by Ryosen · · Score: 1

      Since you asked :)

      The reason for dumping mssql is simply due to cost. We're at the point where we have to go with the per-server licensing which, iirc, put it somewhere in the 60-80k range for two servers. Ultimately, we're expecting to require a significant number of servers (25+). That's too prohibitive for us, not to mention that we're running on NT 4.0 and Linux and considering moving off of the NT servers.

      It's also an issue of future planning. We don't like the way that MS' licensing plans are progressing. We were going to upgrade from NT 4.0 to Windows 2000 Adv Server, but with MS dropping its support come April of next year, as well as the issue of not being able to buy further licenses in the near future, we came to the realization that the only way to maintain a standardized, consistent server platform was to either stay at NT 4.0 with SqlServer 6.5 (our current implementation) or move on to Linux or BSD with MySql or similar. This particular tier of clients cannot afford SqlServer, Oracle, DB2, etc and the level that they would be required.

      Were cost not an issue, then yes, we would stay with mssql.

      --

      Ryosen
      One man's "Troll, +1" is another man's "Insightful, +1".
    4. Re:Stored Procs and Foreign Keys by Otis_INF · · Score: 2

      If costs are an issue, look at what DB2 and Oracle will cost you. Everything comes with a price, never forget that.

      Win2k support isn't dropped next april. It's supported till 2007.

      --
      Never underestimate the relief of true separation of Religion and State.
    5. Re:Stored Procs and Foreign Keys by Anonymous Coward · · Score: 0

      I'd highly recommend Firebird

      Of course, whenever I mention this free, open-source database the posts never get modded up, see here for a rant (and more info on Firebird)

    6. Re:Stored Procs and Foreign Keys by Ryosen · · Score: 1

      I've looked into Firebird before. Unfortunately, it's just not at the level that we need right now.

      --

      Ryosen
      One man's "Troll, +1" is another man's "Insightful, +1".
  21. Lacks multiple result sets by nwetters · · Score: 3, Insightful

    I'd always thought MySQL was a fast, simple database until I built a Type-II JDBC driver for it.

    Because the API does not allow more than one result (MYSQL_RES structure) per connection, and the client libraries are not thread safe by default, any Java classes must be synchronized on the connection. In addition, all rows in a result must be retrieved completely using mysql_store_result rather than the more network efficient mysql_use_result.

    The JDBC specification insists (sensibly, in my opinion) that Statement objects be thread safe. The necessary synchronization and use of mysql_store_result severely limits the speed of any mutithreaded application sharing a connection, and probably discounts the speed benefits of MySQL over other free databases.

    I would guess the same problems exist with other multithreaded languages using MySQL, and developers should consider these limitations before blindly agrreing with MySQL propaganda that the database if faster than its competitors for running web applications.

    1. Re:Lacks multiple result sets by Anonymous Coward · · Score: 0

      Wait... how did that discovery make it any less of a "fast, simple database"?

    2. Re:Lacks multiple result sets by Anonymous Coward · · Score: 0

      I think he's trying to say that MySQL is only fast when used in non-multithreaded C programs that don't need to access mutiple result sets. The crud that is enforced when building a JDBC driver for MySQL (or when using the C API with pthreads) means that it will actually be slower than a database than has been built to accomodate threaded clients and/or mutiple result sets.

    3. Re:Lacks multiple result sets by Anonymous Coward · · Score: 0

      I tend to disagree (a little), as I am the person who wrote the Type-IV JDBC driver for MySQL (http://mmmysql.sourceforge.net/).

      MySQL consistently beets other JDBC-enabled databases in application performance benchmarks...mostly because hardly anyone uses JDBC in a multi-threaded way.

      Multithreading against a single connection leads to a whole mess of problems, usually in dealing with demarcating transactions. That's why most people use connection pooling, 1 connection per unit-of-work. It's a simpler model to code for.

      Also, I _dare_ you to go try and multithread with many other JDBC drivers out there....Even though it's required by the spec, it's never tested for in the compliance testsuite, and few JDBC drivers (even commercial ones) work correctly when you do it.

      Even still, look at many low-level database protocols are implemented....They don't really allow the behavior you talk about.

      TDS (Sybase and SQL Server) is a lot like the MySQL protocol...You issue a query, it spits back rows...and don't interrupt it. I would think that SQLNet from Oracle is similar. When you do start interleaving concurrent statements with those servers, what really goes on in the background (at least with TDS) is that server-side cursors are created...and then a query is issued for _every_ row retrieval...it bogs down a lot.

      So, what it really comes down to, is that even though the JDBC spec says "multithreading == good", in most cases it's not.

      Besides, if you really need to push a lot of data, just open 1000 connections to MySQL (that's been properly configured, of course), and just use them. It won't fall over dead.

    4. Re:Lacks multiple result sets by Anonymous Coward · · Score: 0

      which benchmarks?

      are there any JDBC benchmarks available for mysql versus postgres?

    5. Re:Lacks multiple result sets by nwetters · · Score: 1

      I agree with a lot you say.

      The problem with your argument is that both of our drivers follow the JDBC spec, and thus synchronize against the Connection object becuase the MySQL API is not thread safe.

      That other drivers do not follow the specification is no relief when ours do, taking the resultant performance hit during multithreaded operation.

      In other respects, I agree with you that not many developers use Statements concurrently, but any developer who has read the JDBC spec is entitled to assume that Statements are thread-safe. It would be polite for the database developers to ensure that the underlying libraries are re-entrant. Unfortunately, that is not the case at present.

  22. Postgres on windows by ghmh · · Score: 1
    Its not that hard if you follow the instructions. Unfortunately, you have to search for them. I found this link very useful:

    http://www.ejip.net/faq/postgresql-7.1.3.README

    All you need to do is follow the instructions.

    But I agree, a setup.exe would go a long way for increasing the use of Postgres on Windows.

    1. Re:Postgres on windows by ovapositor · · Score: 1

      If I built a nice windows setup.exe program for Postgres, could I sell it? Kind of like my own distribution? I would be willing to put in the major effort if I could avoid getting a job for a while.

    2. Re:Postgres on windows by questionlp · · Score: 2, Interesting
      PostgreSQL is distributed under the BSD license, as stated in their FAQ. RedHat has also re-packaged PostgreSQL 7.1, included support, and called it "Red Hat Database" (more info here).

      So you should be able to build a installation package for PostgreSQL that is on par with say ActivePython or ActivePerl for Windows, and sell it (you don't have to release your code modifications) for a reasonable amount.

  23. I (heart) MySQL by defile · · Score: 4, Informative

    MySQL's limitations are not a serious problem for me. Most database accesses in my applications are consolidated in a separate layer. It is very simple to duplicate features which may be missing from MySQL.

    The support behind MySQL is outstanding, both from the mailing list and paid MySQL support. MySQL is extremely simple to set up and can handle quite impressive loads.

    To keep score, MySQL + Innobase supports transactions (w/ row level locks and multi-versioning), foreign keys. 4.0 introduces UNION statements and a supposedly cool query cache. Pretty soon should come subqueries, stored procedures, etc.

    That said, I've not used 4.0 in a production environment. What we have right now (3.23.51-max) seems to be doing the job just fine.

  24. Beat this... by Anonymous Coward · · Score: 0

    Uptime: 50139675 Threads: 9 Questions: 193188168 Slow queries: 508120 Opens: 2274831 Flush tables: 24 Open tables: 24 Queries per second avg: 3.853
    Running 3.23.25-beta on Solaris. The db uses 45GB.

  25. No! by CaptainZapp · · Score: 5, Insightful
    Being more of a Postgresql kind of guy, I really can't comment on the virtues of MySQL V4.

    Having dealt with a lot of databases in a production environment here's my take:

    You absolutely don't want to run any database which is designated "not stable" in a production environment.

    Or put it another way: If I'm your boss I won't fire you for lacking features of the database. If we decided on this database engine we work around the shortcomings. But I'll have your ass sacked in no time if you install an unstable version of the product and corrupt the database in this process.

    If that seems too harsh: You may explain to me the business reason and the risks associated and get it in writing that your management is aware of what's going on and knows of the risks.

    --
    ich bin der musikant

    mit taschenrechner in der hand

    kraftwerk

    1. Re:No! by Anonymous Coward · · Score: 0

      So basically you say that you know nothing about this situation, use totally different dB and then proceed to give your opinion.

      Sorry, if you don't know what the fuck you're talking about -- don't mess with the big dogs.

    2. Re:No! by Tony-A · · Score: 2

      That's why you'll gladly pay real money for software that hackers have been downloading for free. Let *them* run into any remaining land-mines and booby-traps. Symbiosis can be thought of as mutual parasitism.

    3. Re:No! by budgenator · · Score: 4, Insightful

      But I'll have your ass sacked in no time if you install an unstable version of the product and corrupt the database in this process. The question revolved more arround setting up a separate DB with data from the production DB primarily for reporting. It might be profitable for him to set up a sandbox server with MySQL 4.0 and throw the queries from the live system at it. Prove it works stable at 2 or 3 times the present load, then add in the features you want and retest. The end result is he might not know if its stable for my apps or not but he'll now if its stable for his. If something does blow up, the production data is safe and he'll has documented retesting to cover his ass with. Who knows by the time he's done testing; maybe MySQL 4.0 will be declair production stable and his apps will be done and tested.

      --
      Apocalypse Cancelled, Sorry, No Ticket Refunds
    4. Re:No! by Shaklee3 · · Score: 0

      well here is the problem. I have a database and some fields in a table are city and listcity. when i display the results to the browser from a select statement, I order it by city, but the listcity still comes up before the actual city. the rememedy for this would be to do a select on just that city, union, then another on all the rest of the cities. as far as i know there is no work around.

  26. Easy rule.. by Karoshi · · Score: 0, Redundant

    .. if you need features that your software doesn't have, get some other software.

    --
    Don't answer me. Moderate. Slashdot is about moderation, not discussion.
  27. "Survey Says" *ding* by Snowhare · · Score: 2, Interesting

    This is a summary of how many 'hits' I found for selected terms and pairs of term from 12 Dec 2001 to early July via Google's groups search when I was comparing Postgres and MySQL to see which is more trouble to maintain. You can draw your own conclusions as to their relative quality as based on their 'complaints' percentages.

    postgres 17800 100 percent
    MySQL 248000 100 percent
    Postgres crash 358 2 percent
    MySQL crash 1930 0.7 percent
    Postgres corrupt 41 0.2 percent
    MySQL corrupt 510 0.2 percent
    Postgres slow 558 2.3 percent
    MySQL slow 2830 1.1 percent
    Postgres buggy 41 0.2 percent
    MySQL buggy 297 0.1 percent
    Postgres bugs 612 3 percent
    MySQL bugs 7540 3 percent
    Postgres problem 4520 25 percent
    MySQL problem 42200 17 percent
    Postgres hung 46 0.3 percent
    MySQL hung 222 0.1 percent
    Postgres happy 328 1.8 percent
    MySQL happy 1810 0.7 percent

    --
    Benjamin Franz

    Lameness filter encountered. Discussion aborted!
    Reason: Please use less 'lame' filters.

    1. Re:"Survey Says" *ding* by Anonymous Coward · · Score: 0

      wow dude you did a search for words in a search engine, that's a lot more usefull then sharing actual expirience. go suck a fat one newb.

    2. Re:"Survey Says" *ding* by Anonymous Coward · · Score: 0

      hahahaha

    3. Re:"Survey Says" *ding* by cduffy · · Score: 1

      Yes, what he did may actually be more useful than sharing his own experience.

      One person's experience is just that -- one person's experience. Collating statistics which reflect on the experience of a far larger sample of people has the potential to be considerably more valuable.

    4. Re:"Survey Says" *ding* by pcs305 · · Score: 1

      and it really does not matter that there are way more MySQL users and installations than Postgre. Don't use your Microsoft calculator dude, it's not scientific

    5. Re:"Survey Says" *ding* by unixfd0 · · Score: 1

      He used the number of *hits* for each DB as his basis for calculating the percentages. So look at the percentages instead of just the amounts.

      Looks like they're basically the same to me.

      You *can* change Microsoft's calculator to scientific mode you know...

    6. Re:"Survey Says" *ding* by electroniceric · · Score: 2

      I'm not sure I put much stock in this method. I'll bet if you search for MS Access and any of those words, you'd find 10 to 1000 times the number of pages - because there are soooo many Access users stumbling for help out there. I'd suggest the same thing is true for MySQL, on a more limited scale. Very, very few of these users will ever acquire the depth knowledge you'd need to make a serious assessment of the relative merits of the databases.

    7. Re:"Survey Says" *ding* by Hotrodder · · Score: 1

      WOW those 5 people running postgres sure seem to have a lot of problems. ;-)

    8. Re:"Survey Says" *ding* by Anonymous Coward · · Score: 0

      This makes zero sense to me.

      MySQL and Postgres may both crash, have corruption, be slow or buggy, have problems or bugs, get hung occasionally, and make someone happy or sad.

      Whatever, this post would show up in every single pair term, to no effect.

      Put another way, if I say:
      Postgres crashed, but MySQL made me happy...

      You put the post in Postgres happy, Postgres crash, MySQL happy, and MySQL crash.

      All meaning is lost.

      Unless you read 160000 messages to say which pairs are correct, you have accomplished nothing whatsoever.

  28. Query Caching by Anonymous Coward · · Score: 1, Informative

    In a recent database benchmark, the Alpha version of MySQL beat DB2, SQL Server and ASE. It kept up speed right along with Oracle (a expensive product to say the least). Check It Out

    1. Re:Query Caching by Anonymous Coward · · Score: 0

      In a read only benchmark. Who cares about read only benchmarks?

      We actually have people INSERTING data into our databases.

      Mysql completely falls apart when you have multiple readers and multiple writers. You're smoking crack if you think MySQL compares to Oracle, or even Postgres, in any way shape or form.

    2. Re:Query Caching by JDAustin · · Score: 0

      Not this benchmark again. I'm not sure how many times this has been brought up on /. but I think there is a general consensus that it is not a accurate db benchmark. Go back and read the article. Any db benchmark that uses a beta driver which is unstable and doesn't allow the DB to be used to its fullest certainly isn't accurate. On top of that, when you compare the MySQL to MSSql running on a .NET platform, the results are quite different.

  29. Performance by ghum · · Score: 5, Informative

    Stick with MySQL when performance is critical and you want to do straight SELECTs from simple tables with few joins and very few updates

    "Postgresql is slow" is a very popular myth and urban legend.

    It even was a true myth - with older versions of Postgresql. Since 7.1.3 big improvements in the query-optimizer gave Postgresql big speed improvements - without stripping any of it's features.

    7.2.1 is lightning fast.


    Postgresql Tips for today: Do check out
    • the COMMENT on table.column command
    • the \d+ extended information display
    • the CASE WHEN ... THEN .. ELSE.. ENDIF construct
    1. Re:Performance by erc · · Score: 1

      The only problem I've had with PostgreSQL is that it is a royal pain in the ass to get to meta data - getting a list of tables in a database, or getting a list of fields in a table is so hard it's fucking insane. With MySQL, all I have to do is "show tables" or "show columns in tablename".

      --
      -- Ed Carp, N7EKG erc@pobox.com PGP KeyID: 0x0BD32C9B What I'm up to: http://intuitives.mine.nu
    2. Re:Performance by gazbo · · Score: 2, Informative
      Postgres commands:

      Tables in database: \dt
      Fields+types in table: \d [tablename]

      Nuff said.

      PS. wtf if the third line indented by one char?

    3. Re:Performance by goodEvans · · Score: 1
      PS. wtf if the third line indented by one char?

      it's the <br>'s, for some reason they started doing that a month or two ago...

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

      He was just talking about things that dont need transactions ( a small amount of course) for reads and simple inserts. extra overhead not needed.

      I agree use postgressql for more important apps.

    5. Re:Performance by duncangough · · Score: 1

      you must have had some real trouble typing \dt or \d tablename then, huh? ;o)

    6. Re:Performance by Wolfier · · Score: 2

      Good tips. How about stored procedure searches that returns rows without jumping thru hoops and reselect with the OID's?

    7. Re:Performance by AndyElf · · Score: 2
      * the CASE WHEN ... THEN .. ELSE.. ENDIF construct
      Should it not be CASE WHEN ... THEN ... ELSE ... END?
      --

      --AP
    8. Re:Performance by Reality+Master+101 · · Score: 2

      "Postgresql is slow" is a very popular myth and urban legend. [...] 7.2.1 is lightning fast.

      PostgreSQL is pretty good, but there are a couple of "gotchas"...

      1) You MUST "vacuum" your database and generate statistics, or the optimizer's decisions will suck in many cases. I really hope they make this sort of thing automatic in the future.

      2) Any error voids an entire transaction. This really SUCKS. This means you can't try an insert, and then do an update if the insert fails with a duplicate key violation. This is the "normal" way to do a no-race-condition "insert the row if it doesn't exist, otherwise update it". I believe MySQL has an atomic operation for this.

      3) Using an "IN" clause with a sub-select causes a brute-force join without indexes. In other words,

      select * from table1 where id in (select id from table2 where code = 'BLAP') -- horribly slow, and won't use any indexes
      select * from table1 where id in (1, 2, 3) -- whereas this is really fast.

      There's a note on the postgresql web site that they're going to fix it (someday).

      Don't get me wrong, I use PostgreSQL every day and like it a lot, but it's far from perfect.

      --
      Sometimes it's best to just let stupid people be stupid.
    9. Re:Performance by Fjord · · Score: 3, Informative

      Other people have mentioned \dt , but I wanted to say you should try out DB visualizer. It's like TOAD without the wizards, but works for any JDBC database (even cloudscape). Very cool tool and best of all, free (as in beer, maybe as in speech too)

      --
      -no broken link
    10. Re:Performance by Anonymous Coward · · Score: 0

      can you use \d or \dt over a JDBC driver? Or a programming API?

    11. Re:Performance by axxackall · · Score: 1
      select * from pg_class;

      lots of useful information.

      --

      Less is more !
    12. Re:Performance by axxackall · · Score: 1
      He was just talking about things that dont need transactions ( a small amount of course) for reads and simple inserts. extra overhead not needed.

      Another myth.

      If you cannot rely on your database - you cannot rely on your data. But unreliable data is just a garbage. You may better use a random generator to read "data" from.

      More about "overhead" - don't use Java, Perl or even C. Just code in Assembler - no any overhead. The difference in overhead will be comparable to one between MySQL and PostgreSQL. And same difference in efficiency and productivity of your programmers and DBAs.

      --

      Less is more !
    13. Re:Performance by axxackall · · Score: 1
      You MUST "vacuum" your database and generate statistics, or the optimizer's decisions will suck in many cases. I really hope they make this sort of thing automatic in the future.

      You have to reoptimize indices in Oracle either.

      Any error voids an entire transaction. This really SUCKS.

      Wrong. It's good as it keeps your data consistent.

      Using an "IN" clause with a sub-select causes a brute-force join without indexes.

      IN is not perfect in Oracle either. Try to use outer join instead.

      Don't get me wrong, I use PostgreSQL every day and like it a lot, but it's far from perfect.

      Just be more creative and more tolerant. Don't forget that your questioning should be also questioned. And keep reading. Usually reading helps.

      --

      Less is more !
    14. Re:Performance by Reality+Master+101 · · Score: 2

      You have to reoptimize indices in Oracle either.

      Sorry, but Oracle is WAY better about making decisions automatically, not to mention reclaiming space.

      Wrong. It's good as it keeps your data consistent.

      Sorry again, but you're wrong. Even the PostgreSQL developers know this is brain-damaged (read the developer logs). Reread what I said -- I think you didn't understand what I was talking about. This has nothing to do with data integrity. In any case, it's MY decision when I decide to do a rollback, not the databases's.

      IN is not perfect in Oracle either. Try to use outer join instead.

      Unless they have broken it recently, Oracle will use an index in my example. And, yes, in this simple example, an outer join might work, but in many complex cases a sub-select is what I need, and I don't need apologists just telling me "well, don't do that". If they're going to support sub-selects, then support them right.

      --
      Sometimes it's best to just let stupid people be stupid.
    15. Re:Performance by ghum · · Score: 1
      Andy,
      Should it not be CASE WHEN ... THEN ... ELSE ... END

      you're right. It should be ... END.

    16. Re:Performance by ghum · · Score: 1

      Reality Master,

      Some aspects to your "gotchas" ...

      since 7.2 there is an analyze without vacuuming. That is a lot faster ... not the automatic update of statistics we both would prefer, but a good step forward. Since it is not locking, there is no big penalaty to do it regular

      "try an insert if it fails do an update" - I miss the oracle "create or replace" command for tables - and an "update or insert"-clause would also be fine. How did you "rewrite" your procedure? Perhaps with a function "test for keyexistence if true update else insert"?

      Did you test this "in-Clause" lately? I ran into that problem also with 7.1.2, solution was
      "select * from table1 where exist (select id from table2 where table2.id=table1.id and code = 'BLAP') - I'm not sure, but I think this "bug" in the query generator has been solved with 7.1.3 / 7.2.

      (that's no arguing - I think, we both like postgres and both try to help in it's improvement

    17. Re:Performance by Reality+Master+101 · · Score: 2

      How did you "rewrite" your procedure? Perhaps with a function "test for keyexistence if true update else insert"?

      Unfortunately, that creates a race condition. What if someone else is doing the same thing, you both test which fails, and then you both do the insert? One of you is going to fail. Unfortunately, there just isn't a solution, except do it at the start of your transaction.

      From reading the PostgreSQL developer logs, this is really a huge pain to fix. Apparently it's a very old structural problem inherited from the original project, and relates to how errors are handled at a low level.

      --
      Sometimes it's best to just let stupid people be stupid.
    18. Re:Performance by Reality+Master+101 · · Score: 2

      Unfortunately, there just isn't a solution, except do it at the start of your transaction.

      Well, I shouldn't say that. There's no solution that doesn't require locking a row somewhere, which is the way I've had to solve it in some situations.

      --
      Sometimes it's best to just let stupid people be stupid.
  30. journal system by Anonymous Coward · · Score: 0

    Have they fixed the bug with the journal system yet?

  31. MySQL Does the job it needs to by cranos · · Score: 1

    Okay MySQL has its limitations but when it comes to doing simple web work and not so simple web work it does the trick.

    For simple work I would rather use a free as in beer DB than pay thousands of dollars for features I just don't need.

    1. Re:MySQL Does the job it needs to by Anonymous Coward · · Score: 0

      Then use a real Free database such as PostgreSQL, Interbase, or SapDB.

    2. Re:MySQL Does the job it needs to by foot85__** · · Score: 1

      SMOKE me a kipper, and ill be back for breakfast. ^_^

    3. Re:MySQL Does the job it needs to by cranos · · Score: 1

      Dammit I got it wrong.

      Excuse me sir I'll just load myself into the garbage disposal chute. It may mean a slight delay in next weeks laundry

  32. Isn't this a mailing list question? by Zapdos · · Score: 2

    http://www.mysql.com/documentation/lists.html

    Here you will get few real answers to your question, and allot of chatter about which db you should be using.

    1. Re:Isn't this a mailing list question? by r00tarded · · Score: 2

      actually, here you will get few real answers to your question, and a lot of chatter about which db you shouldn't be using. it is slashdot after all...

  33. Re:Get rid of the file system completely - simplif by ndecker · · Score: 1
    I dont think, mysql will understand your mssql stored procs. You will have to redevelop them anyway.

    There are a number of nice and feature rich free databases available.
    Postgresql is one option. You might want to look at SAPDB too. It is open source and runs as backend database for SAP-ERP in some big installations.

  34. Everything has its place by ipjohnson · · Score: 1

    Hate to say it but VB and windows do have uses (insert snide comment here) ... just as mysql does. For certain things mysql is the right way to go. I'm sorry but I think postgress is slow ... for my simple selects mysql does it faster.

    It always amayzes me when people complain that mysql doesn't have this or that .... if it doesn't do what you need DON'T USE IT .... end of story, but for some of us we get along just fine.

    And yes I do work (@ work) with "real" rdbms (oracle, DB2 , ingress). And yes I do like the features they offer and frequently use them.

  35. umm... because.... by Ender+Ryan · · Score: 2, Informative
    Because lots of times you have software that uses SQL to talk to it's database backend. Or you may need a database that talks to a number of different servers, etc. Or possibly you may need to migrate to a bigger better database in the future, like DB2 or Oracle.

    --
    Sticking feathers up your butt does not make you a chicken - Tyler Durden
    1. Re:umm... because.... by Baki · · Score: 2

      If you really already have SQL, then chances that it runs on Mysql are very small. Really, for the limited subset of SQL that Mysql supports, using something SQL based is not worth the trouble.

      In that case, better use some kind of file-based storage yourself (such as dbm files) and do it really fast and low level.

    2. Re:umm... because.... by Fjord · · Score: 2

      If the plan is to make it scalable to other DBMSs, then using MySQL is a good choice, since the other DBMSs will likely support a superset of mySQL and the rest requires only a small amount of change. Plus there is the fact that SQL is a standard, and it is easier to find people with SQL experience than find people with the willingness and to learn a proprietary system.

      That being said, these systems have their uses (I have a half baked one of my own I wrote a few years ago), and can't be discounted fully. They just aren't a clear winner over MySQL.

      --
      -no broken link
    3. Re:umm... because.... by aminorex · · Score: 1, Troll

      No, if you have SQL, it probably was written for
      MySQL, so it probably runs on MySQL. There are
      orders of magnitude more MySQL installations than
      any other SQL RDB, and a lot more code being
      written on MySQL than any other SQL RDB.

      --
      -I like my women like I like my tea: green-
    4. Re:umm... because.... by bmajik · · Score: 2

      Hi. I'm calling BS on this. Show me the data that supports these WACs*.

      *Wild Assed Claim

      i like mySQL a whole bunch too. But unless your contention is that the majority of all databases (and more interestingly, all people coding against databases) are home users or oss-friendly isp's or the other niche places mySQL is used, i think you're full of it.

      --
      My opinions are my own, and do not necessarily represent those of my employer.
    5. Re:umm... because.... by Anonymous Coward · · Score: 0

      Do you have any idea what you're talking about? Go learn something about the DBMS world before you claim everybody writes SQL for MySQL. Just because it's Slashdot doesn't mean you have to conform to crap-spewing.

    6. Re:umm... because.... by Baki · · Score: 2

      Mysql with its lack of normal sql constructs will force you to write sql you would never ever use on real databases.

      Therefore, this argument is void. You'll have to write/design from scratch anyway (if you want to take advantage of moving to a readl DBMS).

    7. Re:umm... because.... by Baki · · Score: 2

      Yes, and there are also order of magnitude more dbm installations (namely every unix system in existance) than any other SQL RDB.

      I once needed a 'quick and dirty', mainly fast database, and used perl + tied hash files (dbm) to put my 'tables' in. Just as similar to a real RDBMS as mysql is (apart from superficial sql-like syntax), and even much more widespread in terms of installations.

  36. Suggestions by xidix · · Score: 2

    1) If you need UNION capability, you are likely starting to get into the advanced SQL area where MySQL starts to break. I would suggest checking out PostgreSQL, which will have support for a lot of these advanced features.

    2) The other alternative is to eat a little CPU and use a temporary table to get around the lack of UNION in v.3x. I've had to do this before when I was building an app using MySQL, got 90% done, and then realized I needed to do a UNION. To work around it, I did four separate queries into a temporary table, did my "union" query on the temp table, and then dropped the table. This creates the same result as UNION, but with a little more CPU overhead and a lot less elegance. But it beats either:
    a) Rewriting your app to use PostgreSQL.
    b) Taking a chance on a new and unproven version of MySQL.

  37. SAP DB by Guillermito · · Score: 1

    Is anyone using SAP DB? http://www.sapdb.org ?

    Most open source database debates revolve around MySQL vs. PostgreSQL. Why is SAP DB hardly ever mentioned?

    I'm asking this because I'm evaluating SAP DB right now. So far it seems pretty robust. It also have an impressive list of features. So, Is there a catch?

    1. Re:SAP DB by cduffy · · Score: 1

      The catch? Track record. PostgreSQL has been in wide use longer; it has more language bindings and more current users (so a given package is more likely to support it out-of-the-box). SAP DB may be a better database in some respects (such as high-end scalability) -- but if you want your favorite tool for generating OR bindings to work with it, you may be in for a suprise.

      While looking at the lesser-used databases under OSS licenses, btw, I'm curious -- have you evaluated Firebird?

    2. Re:SAP DB by Anonymous Coward · · Score: 0

      Cool.

      Thanks for the link.
      I am already downloading it.

  38. Mysql @ /. by Anonymous Coward · · Score: 1, Informative


    I was at the Open Source Convention in San Diego last week.. I can't remember if it was Yahoo Finance, or Slashdot that uses 4.0 on all their slaves, but still has 3.23 as their master...

  39. Have you checked out SAPDB by ScrewTivo · · Score: 1

    sapdb.org.

    I have played with it a little and it seems very powerful, free, and supports multi processors.

    I would be interested in any real world experiences.

  40. Firebird by Qbertino · · Score: 1

    Why bother with the endless MySQL/Postgres dispute when a completely redone Interbase has just gone gold with 1.0 final?
    And it's GPL'd of course.

    --
    We suffer more in our imagination than in reality. - Seneca
    1. Re:Firebird by Anonymous Coward · · Score: 0

      [I don't care about MySQL.]

      Because Postgres is a better/faster/has more features. It's also extremely easy to program for and administer.

      I can't say the same thing about Firebird.

    2. Re:Firebird by Anonymous Coward · · Score: 0

      I'd save your breath, the Slashdot community just doesn't seem to be interested in Firebird whatsoever.

      Maybe it's 'cause 90% of them don't know jack about databases (including the moderators, who then completely distort the technical discussion), and the other 10% bicker about the "MySQL := rubbish" vs. "PostGreSQL := slow" crap, instead of looking further afield for a free, open-source alternative, and saying something CONSTRUCTIVE. And hardly any bother to even mention commercial, industrial-strength DBs such as DB2, Oracle, or MS-SQL, because they're not free, or don't run on Linux, or just aren't not "cool" enough.

      Nevermind that Firebird is actually built on Borland's Interbase code, a highly-respected, robust, ACID-compliant commercial database that's been around for over 10 years. It supports transactions, stored procedures, views, sub-selects, triggers, etc.etc. - all the things NECESSARY (yes, necessary: Jesus, people didn't just invent these features for the fun of it) for a robust db backend. And nevermind that the Firebird code is considered good enough by Borland that it's been folded back into the source of their latest commercial version of Interbase (one of the terms of releasing the source, they didn't do it out of good-will alone, they're a commercial entity after all and had to get something worthwhile out of it).

      Guess it's just not "cool" enough? That's got to be the only reason, 'cause it's free, runs on Linux, and is open-source...

      But anyway, I'm sure the moderators will never mod this above 0, 'cause they're all DB experts and I don't know what I'm talking about (and am posting as an AC). Oh, wait a minute...

  41. The answer (WAS: Which DB is better!!) by Anonymous Coward · · Score: 0
    The answer to your question is no SQL database is better because its the wrong solution to the problem.

    If you ever had the pleasure of working for a little company in Burlington formally known as Epsilon then you would now the X System (not X11) is what you really want. Too bad the company pissed this software away. It could do queries on terabytes of information in realtime and this was back in the late 80's or early 90's.

    Sad, very sad. I tell you no lies....

  42. Re:Get rid of the file system completely - simplif by Ryosen · · Score: 1

    It is expected that any mssql stored procs would have to be converted. But that is the price that we are willing to pay in order to have a singular repository for the database logic.

    Based on the number of people here who are saying "PostgreSQL", we're going to give some consideration to that alternative.

    Can anyone relate their experience with PostgreSQL with respect to performance?

    --

    Ryosen
    One man's "Troll, +1" is another man's "Insightful, +1".
  43. Re:Get rid of the file system completely - simplif by Anonymous Coward · · Score: 0

    PostgreSQL has been suprising the hell out of us. We moved a hosting crm/billing system from MSSQL to PostgreSQL and haven't looked back. The only thing that we ran into was the allowed laziness with @@IDENTITY after inserts. PostgreSQL's serials are just as nice, just a little extra work of naming them in your sql stmt.

  44. List of Common SQL Features Missing in MySQL? by duplicate-nickname · · Score: 1
    What are the common features found in most other RDBMS that aren't in the latest stable release of MySQL? Here's what I've come up with so far:
    • UNION
    • Transactions
    • Stored Procedures
    • Foriegn Keys
    • Triggers
    • Views
    • sub-selects
    • row-level locking (or is this added already?)
    • Anything else?
    --

    ÕÕ

    1. Re:List of Common SQL Features Missing in MySQL? by Anonymous Coward · · Score: 0

      Union present
      Transactions present
      FKs present
      Row-level locking present

      Morons, morons everywhere, nor any thought to think.

    2. Re:List of Common SQL Features Missing in MySQL? by Quila · · Score: 1, Offtopic

      The above is an under-moderated answer to this (too bad, used my mod points up yesterday).

      Still, would like to see triggers and stored procedures.

    3. Re:List of Common SQL Features Missing in MySQL? by horrrosss · · Score: 1


      Actually, MySQL ( -max, at least as of v. 3.23.51, with InnoDB table handler, don't know with .52), supports transactions, row-level locking and foreign key constraints (ON DELETE CASCADE and ON DELETE SET NULL, if I remember correctly).

      I'm actually starting to get a bit... well, pissed off with people spreading FUD either deliberately or from ignorance. The MySQL website is a good place to check. They have marvellous documentation and a handy search-feature. I suggest you go try it out.

  45. Ruben I safir says MySQL doesn't work on FreeBSD by Anonymous Coward · · Score: 0

    http://www.mlug.net/mlug-list/2002/msg00453.html

    The discussion was about properly written software should be portable, and Ruben (who's been involved with MySQL for years) said:

    MYSQL won't compile on BSD with the new tables.

    (thus proving MySQL is poor non-portable code)

  46. to quote Donkey... by twoslice · · Score: 1

    This conversation happend centuries ago and continues on today apparently...

    Shrek: MySQL is like onions
    Donkey: Ya mean it has layers?
    Shrek: No Donkey! I mean it goes like stink! really fast but limited flavours
    Donkey: Not everyone likes onions, I think MySQL is like cake, lots of flavours and everyone likes to eat cake!
    Shrek: MySQL is not like cake, it is like an onion!
    Donkey: Well what about Postgres? Postgres is like a cake...
    Shrek: Yes Donkey, Postgres is like a cake, but MySQL is definitely an Onion...

    --

    From excellent karma to terible karma with a single +5 funny post...
    1. Re:to quote Donkey... by Daengbo · · Score: 1

      I think donkey is the one that says it stinks, and if you don't believe me you can check my sig!!
      Anyway, are you saying MySQL stinks or goes fast? I'm confused (but now on topic):)

    2. Re:to quote Donkey... by twoslice · · Score: 1

      I was liberally paraphrasing. I know Donkey said onions stink. MySQL does not stink it just lacks certain features.

      As far as the saying goes like stink, it means to go really fast.

      Let me explain, you and a friend are sitting opposite each other in a large warehouse about 500 ft apart, you smell an awful smell and then you hear the fart that your friend just cranked out his butt that caused the stench. The smell arrived faster than the sound waves that carried the sound of the fart to your ears! Hence, goes like stink!

      so there you have it...

      --

      From excellent karma to terible karma with a single +5 funny post...
    3. Re:to quote Donkey... by Daengbo · · Score: 1

      That is f**kin' hilarious, man. Anyway, take a look at my sig and you will know what my current favorite movie is. From Thailand Dan

  47. How/where should one learn SQl then? by Fross · · Score: 2

    I think I'm in a position a lot of people are in - I'm a back-end coder, who doesn't specialise in databases. Usually working in a team, there will be some database specialist, and I'll lead the team designing the engine that uses it, and someone else will lead the front-end. So I know some about databases, but I'm not an expert.

    I also use databases for some of my own stuff. I've found mySQL to cover everything I need to do. On a rare occasion, I have to push the boundaries a little, but that's not impossible with a little design tweaking.

    So my question is, I would like to learn more about these extra features - I know what most of them are and do, but I don't have the database structure knowledge to know what situations they should be used in, and more specifically, how to design databases to begin with to take advantage of them.

    Online resources would be preferred, I don't want to spend $50 on a book I won't use THAT much, but they will certainly be considered.

    Thanks,

    Fross

    1. Re:How/where should one learn SQl then? by FattMattP · · Score: 3, Informative

      Read SQL for Web Nerds. It's done from the perspective of someone using Oracle, but you should be able to get the idea.

      --
      Prevent email address forgery. Publish SPF records for y
  48. Instead of mySQL ... by Anonymous Coward · · Score: 0

    ... just use Excel. The development time is quicker and faster than building a database in Oracle or Foxpro or whatever. Just use a spreadsheet row for each row in your table and reimplement all the useful functions like SUM(), COUNT(), INSERT, WITH UPDLOCK etc in Visual Basic. If it gets corrupted just hire some cheap data entry people to type it all in again.

    What could be easier?

  49. What use is the UNION statement? by hellfire · · Score: 1

    Perhaps this is my ignorance, but I have not found a query that used the union statement that could not have been better written with a proper ANSI JOIN statement. ANSI JOINs are awesome, so awesome that I wish the UNION command would be written out of the standard.

    --

    "All great wisdom is contained in .signature files"

    1. Re:What use is the UNION statement? by Noel · · Score: 2

      Maybe I'm ignorant, but I can't see how to use a JOIN to do what I use UNION for. Maybe you can enlighten me. Here's an example:

      SELECT DISTINCT 'foo' AS src, id, ... FROM foo UNION SELECT DISTINCT 'bar' AS src, id, ... FROM bar

      JOIN combines data from multiple tables horizontally (into the same row/tuple) while UNION combines data from multiple tables horizontally (into separate rows/tuples). I need and use both, although JOIN far more frequently than UNION. In fact, I use UNION much more often when merging external data for import than I do within my main databases/applications.

      (If it makes any difference, I work primarily in Ingres and PostgreSQL)

    2. Re:What use is the UNION statement? by Anonymous Coward · · Score: 0

      RTFM!

    3. Re:What use is the UNION statement? by Noel · · Score: 1

      And just which FM would that be, now?

    4. Re:What use is the UNION statement? by hellfire · · Score: 1

      Than you Noel!

      Actually it does make some sense. The problem I had was that when I associate tables, they almost always have foreign keys to the tables I want to work with. It sounds like you are saying these two tables are similar but not referencing each other in any discernable way and you need the data in this format for more data conversion than data mining.

      Most of our data conversion in our company is done through excel spreadsheets and text files so thats why I never thought of that. I want all my relational data on the same row/tuple.

      And as for the Anonymous Coward, I know what it does... when you can take the next evolutionary step and answer the question "why" you'll be as bright as Noel :)

      --

      "All great wisdom is contained in .signature files"

    5. Re:What use is the UNION statement? by Noel · · Score: 2
      Than you Noel!

      Any time...

      FWIW, I rarely have need for UNION, but when I do it's a lot better than multiple INSERTs into a temporary table followed by a SELECT and a DROP.

      It's always fun to dive into the relational algebra behind it to get a better idea what's going on. If you're interested, this page has a good summary of relational operations, although it doesn't give direct mappings between the examples and standard SQL. Interestingly enough, 6 of the 10 examples would be done with a JOIN in SQL, and only one would need a UNION...

  50. No, you're taking the wrong approach by Anonymous Coward · · Score: 0

    Just use Excel. The development time is quicker and faster than building a database in Oracle or Foxpro or whatever. Just use a spreadsheet row for each row in your table and reimplement all the useful functions like SUM(), COUNT(), INSERT, WITH UPDLOCK etc in Visual Basic. If it gets corrupted just hire some cheap data entry people to type it all in again.

    What could be easier?

    1. Re:No, you're taking the wrong approach by Nameles · · Score: 1

      Now tell me/him how to do that again, but within the following rules:
      *Only using OSS on Windows (besides the OS)
      *Using *nix
      *Using OSS on *nix
      *Using a C64

    2. Re:No, you're taking the wrong approach by Anonymous Coward · · Score: 0

      Now tell me/him how to do that again, but within the following rules:

      *Only using OSS on Windows (besides the OS)

      Shut the fuck up and use the right tool (Excel) for the right job.

      *Using *nix

      Shut the fuck up and use the right computer (a PC with Windows) and the right tool (Excel) for the right job.

      *Using OSS on *nix

      Shut the fuck up and use the right computer (a PC with Windows) and the right tool (Excel) for the right job.

      *Using a C64

      Get the fuck out of my office.

    3. Re:No, you're taking the wrong approach by dup_account · · Score: 1

      until there are > 65000 rows :)

    4. Re:No, you're taking the wrong approach by cduffy · · Score: 1

      When your tables are 300MB of customer records, you can't very well afford to hire data entry people to type it back in again -- or even afford the downtime in restoring a backup. When you've been running the business off a UNIX box for the last 10 years with custom apps that date back to the PDP-11 the business originally ran off of (yes, this is the case for one of my former employers), you can't damn well go moving data into a Microsoft-only format (and need to rewrite all your internal apps). Further, using Excel does no good if your reports need to combine data from 15 or 20 tables.

      If your needs are trivial, then you can get away with a cheap hack such as what you describe -- for a time. When your customer's needs grow, however, the hack won't be able to keep up, and you (and your client) will be screwed.

    5. Re:No, you're taking the wrong approach by Anonymous Coward · · Score: 0

      Back in the 80's my dad, a surgeon, payed a company to write the software to keep track of his patients for him. What they didn't tell him was that they had stored the patient id in a signed int, and only had started using it from 0. So, after a few years, when trying to enter patient 32769 (or is that 32768? i always forget.) the program wouldn't do it. A rewrite turned out to be so complex and involved that it would mean a whole new program, so he took a week off and rewrote the whole thing in access, and that's what he's running up to this day.

      Miraculously, access worked great, until he teamed up with an associate, requiring there to be an interchange of data between the access apps they were both running, at which point it became not so great.

    6. Re:No, you're taking the wrong approach by Nameles · · Score: 1

      But this is /. this is the whole point.

  51. I'm running it.. by Anonymous Coward · · Score: 0

    A new system I developed is using it in production without any problems whatsoever.

    a MySQL 3.23 box is the database master though for safety, but it's being replicated to a bunch of MySQL 4.01a slaves. That gives the best of both worlds.

    I chose to use it for it's result caching feature.

    To tell the truth I'm actually experiencing a problem with the master crashing when I use the delay_key_write feature. All the slaves (which are processing exactly the same data - they're replicated remembers) have been rock solid.

  52. Toyota! by Moloch666 · · Score: 1

    Toyota is far better than any Chevy or Ford. That silly idiot is probably a geek among the idiot rednecks.

    --
    Understanding is a three-edged sword. -- Kosh Naranek
    1. Re:Toyota! by Waffle+Iron · · Score: 1
      Toyota is far better than any Chevy or Ford. That silly idiot is probably a geek among the idiot rednecks.

      Wrong. The only vehicles worthy of comparison in this case are 1980's short wheelbase SUVs. The valid contenders are Ford Bronco vs. Chevy Blazer.

      AFAIK Toyota Land Cruisers weren't available in 2-door models, and more importantly, suitably oversized wheels and tires aren't available for them. Without these, the vehicle is as useful as a doorstop.

    2. Re:Toyota! by Moloch666 · · Score: 1

      They also make cars... no Ford or Chevy will compare.

      --
      Understanding is a three-edged sword. -- Kosh Naranek
  53. Why use MySQL over postgres? by A55M0NKEY · · Score: 1
    MySQL has been a stripped down but fast database. It was used by apps that needed speed but not advanced database functionality. Those apps grew and ended up needing the advanced database features after all, so MySQL grew to provide those features.

    But features come at the expense of resources, so feature filled versions of MySQL are not especially fast.

    Since most apps grow over time, why not use Postgres which comes with all the features you could want from the outset, and not have to hope that a stable version of MySql that meets you needs will be released?

    --

    Eat at Joe's.

  54. MySQL is fast but your application becomes slow by revin · · Score: 1

    MySQL has a speed advantage, but that is because they didn't choose for data integrity options, in favor of speed. (think about lack of roll back buffers).
    Instead of using one complex query (subselects)mysql users have to write serialised less complex queries and pass data on the application level.
    This drops the speed advantage on MySQL.

  55. Is it stable? by k98sven · · Score: 2

    Laurence Olivier(nazi):Is it stable? .. Is it stable?
    Dustin Hoffman(guy):You're talking to me?
    L.O.: Is it stable?
    D.H.: What stable?
    L.O.: Is it stable?
    D.H.: I don't know what you mean. I can't tell you something's stable or not, unless I know specifically what you're talking about.
    L.O.: Is it stable?
    D.H.: Tell me what "it" is first.
    L.O.: Is it stable?
    D.H.: Yes, it's stable, it's very stable, so stable you wouldn't believe it.
    L.O.: Is it stable?
    D.H.: No, it's not stable, it's very dangerous, be careful.

  56. What is database speed? by Anonymous Coward · · Score: 0

    It's only fast in tests that don't reflect how databases are commonly used. If it's slow through a high-level driver (which is how most people access databases), then the mysql speed claims are bogus.

  57. Alternatives ? by Choron · · Score: 1
    I wonder, if you want more featured DB servers, why not try more advanced ones, such as SAP DB ? Like MySQL it's open source, multi-platform (Linux, Windows, Solaris, AIX, ...), has language bindings for Java (JDBC), Python, Perl, a cool administration GUI and a nice manual. One nice feature is that if you need, you can buy get the commercial version (for you customer for instance), which is identical except you get support. I use it myself and it seriously kicks ass.

    Firebird is sweet too.

    If you're not restricted to using MySQL there are quite a few other options available, give it a try !

    --
    "Naughty, naughty, naughty, you filthy old soomka !"
  58. Duh by nebby · · Score: 1, Troll

    This is retarded.

    Don't use MySQL if you need a full featured DB, because it lacks many things you need for data integrity. Only use MySQL for small apps. These features were left out so MySQL would be a few nanoseconds faster when scaled to Slashdot sized apps.

    But, as stated, people should be using MySQL only for small applications, so speed should not be an issue.

    So, in conclusion, you are all retarded and it never makes any sense to use MySQL. End of story.

    --
    --
    1. Re:Duh by Quila · · Score: 1, Troll

      Here troll, here troll, here's a biscuit, goood boy ... [YANK!]

    2. Re:Duh by nebby · · Score: 2

      Good job refuting my point:

      Statement A: MySQL should not be used for large apps because of its lack of serious features.

      Statement B: MySQL should only be used for apps which require speedy query execution with lots of data.

      Statement C: The speedy execution benefit seen in MySQL is only really seen if you have lots of data or lots of queries. If you have lots of data or lots of queries, you're not implementing a small app.

      B + C = MySQL should only be used for large apps.
      which is in conflict with A, so we conclude that it's a contradiction and you should never use MySQL.

      Now, instead of calling me a troll, explain why I'm wrong and why MySQL fanboys on Slashdot have any argument whatsoever for people to use software which causes bugs and bloated software and fails to prevent data corruption.

      --
      --
    3. Re:Duh by aminorex · · Score: 1

      Statements A and B are unjustified. I disagree.
      You haven't defined the concept of a "large" app
      sufficiently to permit any claims to be made about
      their properties to be made. Why shouldn't I use
      MySQL for an application which doesn't care about
      query performance?

      > Statement C: The speedy execution benefit seen
      > in MySQL is only really seen if you have lots of > data or lots of queries.

      So far, C is okay.

      > If you have lots of data or lots of queries,
      > you're not implementing a small app.

      Unjustified. I disagree. I can implement a tiny
      app, just a few lines of code, with an
      inconsequential role in my life, that runs
      through terabytes of data. The data is big,
      the app is small.

      It's unsurprising that you arrive at
      erroneous conclusions when you pay so little
      attention to the quality of your premises.
      I won't begin to address the formal fallacies
      as that would be redundant.

      --
      -I like my women like I like my tea: green-
    4. Re:Duh by Quila · · Score: 2

      As aminorex said, large dataset != large app. I was working on a MySQL to go through gigabytes of server logs. It was a very small app, just lots of data for it to go through very fast.

      As for corruption, etc., I haven't heard our slashdot admins complaining about it -- even kept up through the 9/11 traffic.

  59. I've tried 4.0.2 on OpenBSD 3.1 - not recommended by the_olo · · Score: 2, Informative

    I've tried compiling MySQL version 4.0.2 on OpenBSD.

    First of all, to even get this thing compiled, you'll probably need to apply patches from the ports. See http://www.openbsd.org/cgi-bin/cvsweb/ports/databa ses/mysql/patches/ for OpenBSD ports patches.

    For example, I've needed patch-innobase_include_univ_i to compile any recent MySQL to compile on OpenBSD 3.1.
    That patch is quite funny:

    #define UNIV_INLINE __inline
    #else
    /* config.h contains the right def for 'inline' for the current compiler */
    -#if (__GNUC__ == 2)
    -#define UNIV_INLINE extern inline
    -#else
    -/* extern inline doesn't work with gcc 3.0.2 */
    +/* mysql people don't understand extern inline */
    #define UNIV_INLINE static inline

    When installing MySQL 4.0.2 I've applied all of those patches, and then configured, compiled and made make install.

    The database new MySQL daemon started up and operated fine (with previous version's data files), but mysql 4 client were unable to connect (I've got an "ERROR:" error message. Tells much, doesn't it?).

    So, to summarize, wait some more time, at least until they release a beta.

  60. Small issues with fulltext search by jackalope · · Score: 1

    I've been running a site on 4.0 since last December. The only issue that I've run across is occasional index corruption with a fulltext index. Other than that, I've enjoyed the new features.

  61. Firebird - Maybe Off Topic by browrp · · Score: 1

    What about Firebird (http://firebird.sourceforge.net) isn't it an OpenSource'd version of Interbase?

    Has anyone used it? How is it compared to MySQL and PostgreSQL? I am migrating from M$ SQL Server and ASP to PHP; but I need the Stored Procedures and some other functionality that MySQL does not yet support; so MySQL is out.

    I am currently toying around with both PostgreSQL and Firebird but haven't come to any conclusions on either of them yet. It seems that if the version of MySQL does not yet support what you need and the version that does has been listed as an Alpha Release, PostgreSQL and/or Firebird may be a viable solution.

  62. we're using it in production by margulies · · Score: 1

    we use MySQL 4 here at hotjobs to sync up our resume database with our search engine (altavista). works very well under high load. no problems thus far.

    one thing i wish that the mysql team would add is error trapping for when the disk fills up. oracle handles this gracefully, mysql doesn't.

    1. Re:we're using it in production by Anonymous Coward · · Score: 1, Informative

      So are many others, as are we - using UNION, too. 1.040.000 logged-in users per day, 15.000+ queries per second. Single CPU sytem w/ 1G RAM. Any questions?

  63. Re:Ruben I safir says MySQL doesn't work on FreeBS by Betcour · · Score: 1

    Oh well, that's strange because I just did it several months ago (and then just did ./configure, make, make install to get it working)

  64. MY - S - Q - L by Anonymous Coward · · Score: 0

    Sorry, I've posted this before but anyways...

    Alternative lyrics to YMCA:

    --

    Verse:

    Transactions, no they're not in the spec
    Procedures, and let's not forget
    Triggers, Monty says we must not let
    Foreign keys into the feature set

    Chorus:

    This lightweight database...

    MY - S - Q - L It has the tables locked
    MY - S - Q - L
    Well it's fast and it's free, but you surely must see
    it doesn't pro-vide a-tom-icity

    MY - S - Q - L It's not relational
    MY - S - Q - L
    You can do a SELECT but it's less than perfect
    You can't gar-un-tee in-tegrity.

    --

    I think it would be great if you DB geeks would write some additional verses.

    http://openacs.org/philosophy/why-not-mysql.html
    http://www.mysql.com/doc/A/N/ANSI_diff_Foreign_K ey s.html
    http://www.pgro.uk7.net/innodb1.htm

    1. Re:MY - S - Q - L by Anonymous Coward · · Score: 0

      "I think it would be great if you DB geeks would write some additional verses."

      Serial Troller can sure write a good polka. Maybe you should ask him.

  65. even scarier by Anonymous Coward · · Score: 0

    sysadmins rather than dba's choosing the db.

  66. Application support by jabbo · · Score: 2

    Why bother? Because numerous existing (== don't have to write/rewrite them yourself) packages can use MySQL or Postgres, but far less use Interbase.

    --
    Remember that what's inside of you doesn't matter because nobody can see it.
  67. Re:Ruben I safir says MySQL doesn't work on FreeBS by Anonymous Coward · · Score: 0

    *shrug* The assclown Rubin was asked about it, and s/he said "go look it up", and never was able to back up the claim.

  68. Here's some good SQL documentation by 3770 · · Score: 1

    You can find some good documentation here

    It is the documentation for a proprietary database called Mimer SQL Engine but it is very close to the SQL standard so it should work on many databases.

    Now, admittedly, many databases are not adhering to the standard very well but that situation is actually improving.

    You can also try the SQL validator they have here. It'll help you adhere to the standard. You might learn a thing or two too.

    In many cases you can do the same thing both in a proprietary way and in the standard way for any given database. Given that choice I'd suggest that you use the standard.

    --
    The Internet is full. Go Away!!!
  69. My Experience with MySQL at work... by vandan · · Score: 5, Informative

    We (I) upgraded to MySQL-4.0.1 when it came out (after a little testing at home).
    I upgraded to MySQL-4.0.2 about 2 weeks ago.
    We have about 5 databases with 10 tables in each which have between 1,000 and 100,000 records per table. We have about 30 users connected to the MySQL server from an Access 2002 front-end. I have been moving stuff from SQL Server 7 as it bogs down. MySQL-4 seems to handle multiple connections better than SQL Server - update queries that used to timeout (and crash Access) when in SQL Server now run effortlessly.

    By the way, our little MySQL beast is an AMD K6-2 500 with 256MB, and is also running an IMAP server for about 50 mailboxes. Oh - and don't forget VNC ;)

    The ONLY problems I have had have been with the MyISAM table handler with large tables & multiple users. I was getting locks and time-outs, so I upgraded them to InnoDB, and have had no other problems since.

    I have also started using transactions (which InnoDB supports). Seems to work perfectly for me. Admittedly, I'm not doing anything major, but any ... no problems for me.

    Foreign Keys are also supported by InnoDB. Works well. MySQL-4.0.2 just made foreign key constraints survive an alter table command (4.0.1 used to dump the constraint).

    What else can I say? I've been very happy with MySQL-4.0.x. Certainly no crashes or anything unexpected. And the --log-update startup option gives you a nice running backup anyway...

    I would upgrade. I think the 'alpha' versioning is being too modest.

    1. Re:My Experience with MySQL at work... by retrosteve · · Score: 3, Informative

      If you can make it through all the MySQL-haters rantings, (can somebody mod those guys down, it's off-topic!), here are my current conclusions after using mysql 4.0 in an industrial app (27 million records, about 1 million queries daily).

      1. It works good. No crashes and no more problems than the 3.23 versions.
      2. The replication still isn't there yet. If replication matters to you, wait.
      3. I agree it's not "alpha". It is no more or less buggy than the stable 3.23.51 version.

      I will be very happy when replication is working and tested and works on ALL queries and can recover from errors. Until then it's still a day of fooling around every time replication screws up.

  70. stable? by jesseward · · Score: 1

    So, the original question was, is mySql stable enough to run in a live situation. Not which db is better.

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

      Yep all the rest of the discussion was from morons thinking they could bully someone into using what they like by telling the poor guy that Database X is better than Database Y, because they say so. So he should use Database X over Database Y to be cool like them. Which made for entertaining reading and all but a lot of wasted time trying to find a post that actually answered the question.

  71. Stable? Maybe. Worth it? Not yet. by MattRog · · Score: 3, Informative

    Let me repeat the same things I say every time:

    Why MySQL is Not Suitable for Enterprise or High-Volume Use
    or
    MySQL.com misleads you about it's capabilities

    Replication in MySQL is a joke for 'mission critical' use. As I understand it, the binary log records SQL modification statements which are executed on a master, not the data which was changed. This is involves significant assumptions beforehand, such that the master and slave(s) must be 100% identical. If I perform an UPDATE on the master, the changes are not replicated, but the query. This is what I would call the 'easy way out'. Who knows what happens to the query once it is replicated out - what if it hangs halfway through? I can't roll back and be in a consistent state, I have half-completed changes which makes my database inconsistent and now I'm forced to dump-and-load. Keep track of which rows are modified, to what from what, and ensure that those transactions are replicated to my slaves. Anything less is simply useless for high availability.

    I would also be willing to bet that a significant number of installations that have transitioned to MySQL replication are doing so due to table-lock induced latency. A suitable system with a capable RDBMS could probably handle all of the load given to it and not need 'many slaves' to handle the extra traffic. They would have a single failover for high availability and that's it.

    Filesystem buffered writes. Transactional support is great - it allows me to roll-back aborted transactions. However, due to the inability to control whether or not my tables are write-buffered means that MySQL may *think* it has performed a write even though it is still in the write-cache. I can then turn off the system and voila -- corruption! Part of the fault lies in the OS who tells MySQL it was written even though it is in the cache, but I have a simple solution. Devise a way to selectively turn off buffered writes for certain tables / databases. This way if I know I have a critical table which has a lot of writes I can turn buffering off and be ASSURED that writes will be performed when asked. I suspect a lot of 1040 and other table corruptions are caused by something like this. Yes, performance will take a hit but I think it is a very acceptable trade-off for data corruption. Obviously all system tables should NOT be buffered.

    Inability to use more than one index on a table in a query -- most enterprise RDBMS' can use more than one index on a table for a query. This can easily save a table scan or the use of a single, less-efficient index. Given an example query - 'SELECT bob FROM sometable WHERE somecol = 45 and somecol2
    Clustered indexes. These basically physically sort the table based on particular columns. This allows you to ORDER BY username ASC without using anything special since the rows are already sorted on username (if you have a users table and cluster the username col). This also greatly speeds up BETWEEN clauses. And yes, to people who know a little bit of SQL but don't know as much about clustered indexes -- you can create an index with a bobcol ASC but clustering the actual data is faster and more efficient if you are grabbing data which is not on the index. For example, SELECT * FROM table ORDER BY username ASC will not be as efficient as the same query clustered on the username. If you had a sorted index on username it will probably read the index sequentially and then visit the table. That extra operation = more disk seeks = more time / cpu to execute (and it really adds up as the table size increases). However, if you are doing something like 'select username, password from user order by username' it would be better to create a sorted index on username ASC, password. That way it will read the index only and not visit the table at all.

    On-line backups. In today's internet world your site has to be 24/7. This means you cannot have significant performance problems (or even offline-ing your dB!) when you make a dump -- Sybase, etc. have done this from as far back as I can remember. Postgres can do this with an add-on which is well worth the money. As far as I know MySQL can only do this with InnoDB tables and is a for-pay feature (since it has a MVC log to use in the meantime).

    Backups to something other than CSV files. MS SQL, Sybase, Oracle, they all dump to a compressed binary file. Saves a TON of space and is MUCH FASTER to dump and load. I can dump a 12GB Sybase DB in under 20 minutes. Loading it all (from scratch) and then bringing the DB online is about the same amount of time. MySQL stupidly logs the CREATE TABLE / INSERT statements. What does this mean? That I have to wait for 4 million INSERTs to be performed when loading my table, and FURTHER I have to wait for the INDEXES to be re-created on the new data. Dump the indexes, too! (Remember that full-text indexing is just another index, so if you use that and have to load from a dump be in store for SIGNIFICANT downtime).

    Ability to specify the number of files to dump to. What happens if you have a dump which is larger than 2GB? Some linux distros cannot handle a single file of 2GB or more without recompiling the kernel. Give users a way to, within the dump statement, split the dump over two files. Not only will that help avoid the 2GB limit, but it can speed up dump/loads since I can dump to a bunch of different disks to improve throughput. Sybase has the 'STRIPE ON' clause (originally to dump to two tape drives at once but works fine on filesystem files as well) to split the dump equally over an unlimited number of files. This also impacts the fact that MySQL tables and indexes are stored in filesystem files that are also subject to a 2GB limit.

    Cleaner way to view query plans of statements. EXPLAIN ... is great and all, but the resulting table is a PAIN to read. What I want to know is simple:
    Query is using XYZ, ABC tables. Table XYZ is using index 123 which is sorted so I do not need to create a temp table to sort ASC.
    Since you have all the columns in your select statement in the index I do not have to visit the actual table - I can pull it all from the index. Because of this, I will read the index from start to finish.
    ABC is using index 23dsf which is not sorted so I must create a temp table to sort that. Also, since it is a join, I do not need to perform an index scan but a positioned search (table scan is to a WHERE clause with no index AS index scan is to an index which is not selective enough or needs to read all columns.)
    Simple, easy and pretty much even a NOVICE can see that their query is a good performer or a bad performer.
    Along with more in-depth EXPLAIN, also provide me with a way to see what the optimizer is doing with the query. In MS SQL and Sybase you have 'trace flags' which you can turn on before your query to see EXACTLY what Sybase is doing - why does it think this index is better than this other one, why is it table scanning when you think it should index sort, etc. Give me an easy way to say 'verbose on; explain xxx;'.

    Ability to delve deeply into performance of the system. If there is one job a DBA must know it's how to tell what the heck is going on when something is slow. Currently MySQL gives you meaningless info like 'slow queries'. Great, I see 200,000 of them. What queries are they? What good is it in a large application which may contain 3000 lines of SQL to tell me the raw number of queries which are slow? I want to know the EXACT SQL of the query(s) which are slow and I want to find the one taking up the most CPU time and blocking all the rest. I want to know how MySQL is managing it's data cache so I can see if I need more ram (e.g. it is swapping lots of data to/from the cache) or if I am I/O bound. Don't tell me to look at 'free' or 'top' - half the time it is wrong because you (MySQL) tell it misleading figures. I want *you* to tell me exactly what you are doing since you would know best! If you've ever seen a sp_sysmon output from Sybase ASE you'd know what I'm talking about.

    MySQL's query optimizer is PISS POOR. If I see another changelog entry like this I'm going to scream:
    Optimized queries of type: SELECT DISTINCT * from table_name ORDER by key_part1 LIMIT #
    So does that mean these queries were NOT AT ALL optimized before? It doesn't read 'FURTHER optimized'.
    "ORDER BY ... DESC can now use keys."
    Does that mean it was table scanning each time? Jebus! Hands down the query optimizer is one of the most important things in the database -- knowing how to use the database statistics and knowing when to use a merge-join vs. a hash-join etc. are CRITIAL to database performance.

    Of course, the usuals: integrated row (or in the least page) locking, full support of subqueries, stored procedures, views, triggers, referential integrity, transactions, etc. etc. etc.'

    PostGRES and virtually 100% of 'for pay' RDBMs have this. There simply is no reason to use MySQL for anything sufficiently non-trivial.

    --

    Thanks,
    --
    Matt
  72. Speed? by Srin+Tuar · · Score: 3, Funny

    Why use mysql instead of Postgres ? Speed....

    Ah, I see, you have the unusual requirement that your database must be slow...

    :)

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

      lol... i have been using PostgreSQL for quite some time now, and it has proven much faster than MySQL... sure, i still use MySQL for PETTY and SIMPLE tasks such as guestbooks on websites with PHP, but for the hardcore stuff, like python-based analysis and the such, Postgres definately makes MySQL look like a dog with its tail between its legs

    2. Re:Speed? by aminorex · · Score: 2

      No, I think he meant that he's been smoking meth.

      --
      -I like my women like I like my tea: green-
  73. woe is me! by Ender+Ryan · · Score: 2
    Woe is me, for I learned SQL using MySQL!

    INSERT INTO table SET column='value';

    syntax error SET

    MOTHER FUCKER!

    DOH! ;-)

    --
    Sticking feathers up your butt does not make you a chicken - Tyler Durden
    1. Re:woe is me! by 3770 · · Score: 1

      OK, so maybe you know this already but you are also using the reserved word table. So you actually have two errors in there. But fear not. If you want to use the reserved word table in this query you can do that if you put it inside quotes (... into "table" ...). All according to the standard.

      --
      The Internet is full. Go Away!!!
  74. you might want to look into postgresql by a7244270 · · Score: 1

    If I were you I would look into converting over to postgreSQL.
    postgreSQL is kind of like the shy geeky kid in the family that no one ever heard about - seems like all people do is rave on and on about mySQL, but aren't aware of the limitataions.
    unlike mySQL, postgreSQL will support subselects, row-level locking, union join, foreign keys, and the single most advantage over mySQL - it actually scales.
    Its pretty fast too. for tiny databases mySQL is of course the king, because of its primitive structure, but once the db grows a little, postgreSQL is actually much faster than most dbs out there. odbc drivers are out there, and assuming you haven't been doing too many mySQL specific commands like "SELECT * FROM TABLES" the transition should be fairly easy.

  75. The myth of standard SQL by Bigboote66 · · Score: 1

    Even if you define a subset of standard SQL that will run cross platform on a variety of target environments, it doesn't mean it will run well. For any serious (high volume, high performance) application , the queries you write end up being tweaked significantly to support the features/bugs/idiosyncracies of the query optimizer of a particular RDBMS. Move your standard queries to another vendor & watch your performance drop through the floor. Plus, limiting yourself to the subset of features that conform to standard SQL often prevents you from reaching that next level of performance (server-side procedures, bitmap indexes, anyone?).

    The wonderful world of write-once SQL statements that will work well on all vendors' systems only exists if you don't have tight performance requirements (which, to be fair, does constitute a large number of applications out there).

    -BbT

  76. Worked fine for me by Anonymous Coward · · Score: 0

    I had no problems using MySQL 4 for a while a month or so ago, for development purposes.

  77. SQL language needs an overhaul by Tablizer · · Score: 2

    The UNION issue brings up yet another problem with SQL: it is too hard to self-extend. If something like this was used instead

    http://www.geocities.com/tablizer/relat2.htm

    then it would be relatively easy for somebody to add their own UNION equivalent, or whatever else is missing. It breaks queries into smaller, simpler functional-like statements instead of One-Big-Wad, like current SQL is. Although it looks like it would limit optimization because it seems sequential, the sequence is nominal only. The optimizer could ignore the sequence as long as the final result is the same.

  78. Hey, what ever happened to Raima by duck_prime · · Score: 1

    Some years ago I used the Raima "network" database, which was non-sql (links between data represented by pointer-like links rather than shared keys), mapped very nicely to C structs, and later C++, and was blazingly fast.

    Anyone out there still using it? I think they call themselves "birdstep" now.

  79. SAPDB ROCKS! by Anonymous Coward · · Score: 1, Interesting
    I use SAPDB in a high volumne production environment. Lots of Oracle bang without the $$. Great performance, good DB/user management tools, scalable, great support from the SAP folks via the mailing list. Check out the Oracle SQL compat mode if you don't want to rewrite a bunch of your statements. DBI support is best via UNIXOdbc.

    Too bad not that many folks know about it!

  80. Improvements by realdpk · · Score: 2

    MySQL needs several improvements before it can be trusted with data.

    - Needs to handle memory limits better. 15 threads shouldn't be able to allocate more memory than the kernel allows (through ulimit-style limits). As it is now, MySQL hits that limit and then sits there and consumes 99.9% CPU forever. Won't die to kill 15, requires kill 9, which forces us to isamchk. Bad, bad, evil.

    - Replication should not be query based, it should be data based. As it is now, replication is nothing more than a hack. Because it is a hack, it is very easy for the slave to differ from the master, which requires shutting down the master (effectively) while you restore the slave. This can take hours. Bad, not so evil. Just bad.

    - MySQL can't tell if a database is corrupt, at least not in every case. Sometimes it'll sit there and chew CPU for hours trying to process some impossible data. This is a show-stopper, IMO. The first thing (the memory) is the typical reason for it to corrupt its databases.

    - Documentation. MySQL's online documentation is horrible. For instance, they claim that SET SQL_LOG_BIN = 0 will stop replication. But in actuality, it does nothing (and they claim it works in the version I'm using, so don't bother). This wouldn't be such a problem if they didn't change syntax so drastically between minor versions. This is very bad, but not necessarily a show-stopper.

    Some minor things:

    - Explain doesn't work right. It doesn't return the right number of rows for a query. It's seemingly random. I don't know why.

    - Insert delayed. What the hell is the point of this? It's about 10x slower when using mysqldump | mysql than straight inserts. The documentation indicates this should not be so.

    - The MySQL team seems more interested in pushing out frequent updates and calling them stable than actually testing and making sure that their server is stable. Now I'm not suggesting a 5 year beta period, but something needs to be done about this. As it is now, I'm barely comfortable with 3.23 at all. 3.22.32 was probably the last great MySQL distribution.

    I probably should have a lot more rants here, but I can't think of them now, I'm too busy trying to figure out why MySQL is so goddamned slow.

  81. Whackers by Anonymous Coward · · Score: 0

    MySQL 4.x is not ready for prime time. You should trust the MySQL dev group on this. Keep using your 3.x version just code around your query problems. It's usually just as fast; but perhaps not as elegant. BTW, If MySQL sucked so bad then "Yahoo", "Google" and millions other users wouldn't be using it would they! There just jealous that MySQL is hands down the best. So don't let any of these whackers "whacked out hackers" try to fool you!

  82. yes i know by Ender+Ryan · · Score: 1
    I was simply using the word table as a placeholder for an actual table name. Not that it matters much, MySQL has already completely destroyed any chance of me learning standards compliant SQL anytime soon. ;-)

    --
    Sticking feathers up your butt does not make you a chicken - Tyler Durden
  83. Re:Stable? Maybe. Worth it? Not yet. by Anonymous Coward · · Score: 1, Insightful

    Part of the fault lies in the OS who tells MySQL it was written even though it is in the cache

    Don't blame the OS for this (assuming here we're talking about a POSIX-ish OS). It doesn't "tell MySQL it was written." What part of write() says that it returns only when data has been written to disk?

    Buffering is desirable for most applications, and the OS places the decision whether to use synchronous or asynchronous IO in the hands of the programmer. Use fdatasync(), fsync(), or open with O_SYNC (in order of decreasing efficiency) to ensure your data is written to hardware. It's not the OS's fault if programmers determine that a transaction written with asynchronous IO is complete.

  84. Maybe why in your case by modulo · · Score: 1

    Let me guess, VB front end. . .

    There is a VB object interface, but if you use that to open and close a lot of Caché records as objects in a loop, it is going to be impressively slow.

    Also using dynamic SQL through VB is possible, but the back end has to compile each query individually. This also could make things slow if used in a loop.

    Basic client/server design methodology, really. Probably not Caché's fault.

    I rid myself of a great deal of funkiness by getting the latest version (4.1.5 for Linux IIRC), making sure the client Windows ODBC drivers match, and judiciously using %UnSwizzleAt() when working with Caché lists (one thing I don't like about Caché is that when you %Close() an object, it may not really close if it's being referenced in a list, you have to unswizzle it manually)

    HTH

    Sorry if this is a little OT

    --

    ...but the language is MUMPS, which I will not utter here

    1. Re:Maybe why in your case by Anonymous Coward · · Score: 0

      Of course, VB is the cause of all BAD CODER problems... ugh. yeah right. you can do ASM in VB, did you know that ? huh ? I think you didn't. UGH. lame.

    2. Re:Maybe why in your case by gmhowell · · Score: 1

      Thanks for the info. I'm about 99% sure the client is written in VB (which I naturally don't have the source for:)

      Wound up looking at and playing with rdesktop today. With that tool, I might be able to remove winNT from my workstation. Do the fun bits in Linux, and the painful bits in a term-services session.

      --
      Jesus was all right but his disciples were thick and ordinary. -John Lennon
    3. Re:Maybe why in your case by modulo · · Score: 1

      (OK, I'll bite.)

      No, I'm saying that working with remote data locally instead of having the procedure run on the server can lead to performance problems because of network overhead, assembly language or no assembly language. I mentioned VB because that is what the ActiveX client controls that ship with Caché are designed for, although they can be made to mostly work in Delphi, for example.

      To be fair, there are other clients that ship with Caché, but they probably wouldn't be used in the environment he's talking about.

      --

      ...but the language is MUMPS, which I will not utter here

  85. MySQL vs. The Database World by Proudrooster · · Score: 3, Insightful

    Speaking as the emergency backup holographic DBA who has experience with both MySQL and other Commercial Databases particularaly Oracle, I can give you the following info.

    MySQL is small, fast and you can even use it with MS-Access with MyODBC

    The drawbacks to MySQL are limited SQL support e.g. (no subselects, no inline views, no stored procedures, and just you TRY to figure out the outerjoin syntax (geez) ), however if you are doing simple queries it's fine. If you want to do more advanced stuff and say have multiple cursors open at the same time you have to use an additional language like Perl with DBD/DBI.

    Also, MySQL does not have "read consistency", "row level locking", or the concept of a "transaction" (at least not last time I used it). If you do an insert/update it happens NOW, no need for that pesky SQL "commit".

    Again, on the plus side, generally speaking MySQL is FAST for queries! However, when you do hit a snag, it is harder to tune performance and optimize the layout of the database on the physical disks e.g. (You can't partition a table across multiple disks/filesystems and have to rely on RAID0 striping). Also, I don't think there is anything as replication so keeping a hot standby database for failover or disaster recovery can be tricky.

    The most important thing to keep in mind is this, "Use the right tool for the job". I still prefer any data I care about or, database that may affect my sleep be an Oracle database. However, replicating data from Oracle to a MySQL database, then using MySQL as the backend for query intensive web applications might make more sense e.g (Amazon-type, Slashdot-type). In this scenario, your data is tucked away securely in an Oracle database, but it feeds a bunch of lowcost, commodity beater boxes that can be quickly deployed to give lowcost scalability and more peace of mind against hacking.

    Weigh the importance of your data and "use the right tool for the job". It could be argued that the most valuable asset of a modern company is it's data.

    One of my favorite quotes which applies to this situation is: "When the only tool I have is a hammer, every job looks like a nail."

    Good Luck!

    1. Re:MySQL vs. The Database World by Anonymous Coward · · Score: 0
      ...filesystems and have to rely on RAID0 striping

      Just to be a bit pedantic, but I think you mean RAID-1?

      RAID-0 is disk-striping, and uses two HDDs as one, (almost) doubling performance. However, it also HALVES reliability: if one disk fails then say bye-bye to all the data. This is NOT acceptable for any database server that holds critical data.

      RAID-1 is disk-mirroring. So you use 2 disks as one, and the RAID controller copies the data to both disks. If one disk dies, the other still contains all the data and will keep working :)

      Oh, it's also worth mentioning that RAID-1 is FASTER than RAID-5, though not quite as economical (as you have to basically double your storage).

  86. it definitly depends on the usage by pfote · · Score: 2, Informative

    getting back to the topic (4.x stable or not) ..
    short answer is: if not used with replication, yes

    bout the advocacy: shure mysql has its short comings, but it heavily depends on what you do and need

    i have a mysql server that has a average of 3000-6000 queries a second, with peaks going up to bout 60000 q/s, 800-1600 connections, bout 30GB of data (which doesnt say much), lots of tables with bout 1.000.000 rows that are read only, some smaller that are frequently updated (200-300 updates/inserts/deletes per second on some tables)
    server hardware is a SUN E6500 (18cpu 400MHz, 16GB RAM), table type used is myisam except some tables with sensitive data where i need transactions, there innodb is used)

    wouldnt call it a simple at all, but its a web app

    beside others(interbase and so on) i gave postgres several tries (latest version i tested was 7.1) because of having subselects and views .. it scaled better, but the general performance was to low to even try it in production

    oracle might be a option (beside having a bunch of features more than mysql it suports clustering which i would like to have for scalability reasons) .. but its still out of question because of the price tag .. i can pay a bunch of programmers a long time for the same money, and so we tend to throw some brain on the problem instead of money

    with a different application the situation might change completely .. so your mileage may vary, but for what we do here mysql has been proven to be the best solution

    sorry for the bad english

  87. Re:Stable? Maybe. Worth it? Not yet. by Anonymous Coward · · Score: 0

    Wow someone is rather long winded. I just wanted to touch on the not allowed to have multiple indexes thing, I pretty sure that has been allowed in MySQL since about version 3.x maybe all the people who want to say it doesn't do this and doesn't do that should at least check to see if they are full of shit before posting. Also I don't think the guy who started this thread asked if some other database was better than MySQL, he simply asked is MySQL 4.x stable. I'm guessing you don't use MySQL from your wordy post so you should have just stf and moved on.

  88. You forgot another biggy.. by Anonymous Coward · · Score: 0

    Postgres does not take advantage of indexes when using aggregate functions.

    ie.

    select sum(number) from table where type=15;

    Will not use the index on the type column. This has got to be the stupidest thing I've ever heard of.

    The reason? "Aggregate functions are blackboxed. We don't use them and neither should you. We're afraid of fixing the code."

  89. Re:Stable? Maybe. Worth it? Not yet. by peyote · · Score: 3, Informative

    Wow, a shining example of someone firmly planting their foot in their mouth on Slashdot. What a surprise. It's nice that the post was moderated up to 4 as ``Informative''... too bad most of the information was useless or wrong.

    The overarching problem in your comment was your opening statement:

    'Let me repeat the same things I say every time'

    The problem there, which is obvious to anyone remotely understanding of what active development means, is that MySQL is sort of a moving target. Your statements are erroneous is so many ways, but most of them can be boiled down to this: you are arguing against something that no longer exists. MySQL, as you attack it, is no more, and has been replaced by something far better. So let's just take some of your arguments (unlike you, I refuse to speak on those things that I *DON'T* know, so I'll skip a few with which I'm not familiar) and see how they stand up, shall we?

    Argument: Replication in MySQL is a joke for 'mission critical' use.
    Rebuttal: Somehow that fact doesn't impede Yahoo!'s extensive use of it. (See Jeremy Zawodny's presentations at the recently-held OSCON.) If the query hangs on the slave halfway through, it isn't marked on the slave as having completed. When the slave becomes available again, it notes its pointer in the transaction log and catches up automatically. Oh, and replication (at least in 4.x, possibly also in 3.23.x) is transaction-safe.

    Argument: Filesystem buffered writes.
    Rebuttal: As another poster wrote, leave the OS out of this. If you cannot properly configure your OS to not buffer writes, you probably shouldn't be running a 'mission critical' ANYTHING.

    Argument: On-line backups [are not there]
    Rebuttal: So set up a dedicated slave for backups. Turn off the slave while backups are running, it catches up when backups are done and it is brought back up. A *simple* solution to a *simple* problem. If you really feel the need to do a hot backup of your live server, you can check into using InnoDB's tool at http://www.innodb.com/hotbackup.html .

    Argument: Backups to something other than CSV files.
    Rebuttal: You mean like backing up the raw MyISAM files? Of course, that doesn't work with InnoDB databases, so you can use their hot backup tool for that as well, if this is a REAL (rather than IMAGINED) problem.

    Argument: I have to wait for 4 million INSERTs to be performed...
    Rebuttal: RTFM. No you don't.

    Argument: [No] Ability to specify the number of files to dump to
    Rebuttal: Again, is this a real or imagined problem? It's likely that whatever you are trying to do, there's a better way. Unfamiliarity with a particular tool usually results in this type of problem.

    Argument: Cleaner way to view query plans of statements
    Rebuttal: So because YOU don't like the output of EXPLAIN you're saying MySQL isn't ready for production? WTF are you talking about?! As for a more *in-depth* EXPLAIN, I agree there, and I found PostgreSQL's mechanism kind of cool. Of course, in four years of running MySQL in a production environment, I'm not sure I would have used it more than once or twice; MySQL's EXPLAIN has always been sufficient, if you actually know what you're doing.

    Argument: Ability to delve deeply into performance of the system ... Currently MySQL gives you meaningless info like 'slow queries'
    Rebuttal: RTFM. You are obviously unfamiliar with the slow queries log where MySQL gives you EXACTLY the information you are looking for. As for the data cache and whatnot, I don't know if that is actually available or not.

    Argument: MySQL's query optimizer is PISS POOR
    Rebuttal: And your evidence? Oh wait, you didn't actually provide any. You just brought up a tangential issue...

    Argument: If I see another changelog entry...
    Rebuttal: If you are that concerned, you have some good options here. (a) Pay the developers to hold your hand and explain to you what has happened. (b) Use the source and do your own friggin' diff. This is Unix; stop acting so helpless.

    Argument: [a laundry list of disinformation]
    Rebuttal: Dude, have you not even looked at MySQL since 3.21 or something? Row locking is available in InnoDB, as are transactions. Stored procedures and triggers are planned for 5.x IIRC, but so many applications DON'T need them that the MySQL folks simply haven't cared to add them. Ditto for views (which are also slated for 5.x).

  90. You freaking nerds out here. by Anonymous Coward · · Score: 0

    I'm working on a BIG, very BIG project and started with postgresql, becouse of : transactions, subselects, forgein keys, stored procs, ... and becouse it should be stable.

    Well. I came back from posgres to MySQL becouse of SPEED. I've made a test and optimized it for both Postgres and Mysql. And Posgres needed 20 (!!!!) secs, while mysql needed only 2. (I tought that was strange too.)

    MySQL has the big power of not have to make all tables transactional. And the transactional tables are way faster than in postgres and it also does the job.

    For subselects we will use temp tables.

    My choise is MySQL (we will use 4 alpha :-)) and MySQL FOREVER.

    ALso the sql user system in MySQL is faaaar better than the strange user system of postgresql. Try to get a list of tables in postgresql ... \d is NOT a sql command. Mysql has show tables . Works from everywhere.

    In my opinion Postgres sux and by the time it will not suck anymore, mysql will have everything everyone wanted WHEN he wants it.

    1. Re:You freaking nerds out here. by Anonymous Coward · · Score: 0
      Hmm, do I trust an AC or do I trust Tim Perdue?. Oh, yeah. The latter of course.

      And BTW: "show tables" is no SQL either and exactly as non-standard as "\d"...

      I want transactions, foreign keys, views and reliability *NOW* and can't wait for MySQL 17.3. Stick with your "MySQL" or whatever for your tiny, little application if it pleases you and you don't need an standards compliant SQL database.

  91. Re:Stable? Maybe. Worth it? Not yet. by Anonymous Coward · · Score: 0

    Good boy. Now what does this have to do with 4.0 being a stable upgrade? You know, if you were posting about how WinXP was so much easier than Linux you'd be modded a troll.

  92. Re:Stable? Maybe. Worth it? Not yet. by MattRog · · Score: 1

    and is it stable enough to run on a high traffic site

    I count most of what I wrote as part of being 'stable' on a high traffic site.

    Requiring your DB to be offline while you dump is not acceptable for a high traffic site.
    Fail-safe replication is required for high stability on a high-trafficked site.
    Backups which are flat-file based and require indexes to be created are not acceptable for a high-traffic site.
    Having a poorly performing system and you not being able to diagnose why because the MySQL server provides inadequate tools is not acceptable.

    I suppose it comes down to how you define 'stable'. Stable as in 'not crashing' may be true (although it still can and does crash). Stable as in 'highly-available' is not true.

    You misread (or I mis-wrote) the multi-index statement. Multiple indexes on a SINGLE TABLE (which is clear from my SQL) is NOT implemented in MySQL. Multiple indexes on a single query works just fine if you have more than one table, but there still is the limit of one index per table. Either that, or it is so buggy it does not work when it is supposed to.

    I don't use MySQL in production but I work with many people who do, and I also do significant consulting to clients who run MySQL. Perhaps you should know what *you're* talking about before posting -- I run several highly available, high trafficked sites (30+ million hits a week). But I guess you don't have the guts to stand behind your comments with your real moniker.

    --

    Thanks,
    --
    Matt
  93. all talking about speed... by fredan · · Score: 1

    well, then it's only one thing to do; run the tpc test on each database and see whichone will perform best.

  94. Re:I notice your choice of server. by Anonymous Coward · · Score: 0

    That's not exactly a ringing endorsement.

    I'd prefer my OS not to do that.

  95. Other databases by Anonymous Coward · · Score: 0

    As another poster has pointed out, moving from MSSQL to MySQL is a bad idea.

    In addition to PostgreSQL, consider:

    SAPDB ( http://sapdb.org )
    Firebird ( http://firebirdsql.org )

    I use Firebird because I need a database server that can "take care of itself" in an environment where there's no DBA. That is, I need to be able to deploy the server on some remote client's server, set up some automatic administration tasks, and let it do its thing for months and months without any intervention.

    If I were operating in a centralized environment with a DBA (or even a database-savvy developer), I'd probably use SAPDB, since its feature set is impressive (subtransactions, etc.).

    Another issue for *you* to consider might be Windows compatibility. MySQL, Firebird, and SAPDB all work well on Windows, whereas PostgreSQL currently requires Cygwin, and generally tries to treat the Windows server as though it were UNIX. I would never use such a taped-together setup in production.

    In summary, it appears to me as though your best choice is SAPDB.

  96. Postgres replaced mysql on my prod system by TheNarrator · · Score: 2, Informative
    Two years age I replaced Mysql with postgres on our production ecommerce system. This was one of the early 7.0 releases. It's much faster, and much more stable than mysql and pretty much hassle free. The one thing I found was the query structure checking in mysql is so sloppy that the port to Postgres forced me to clean a lot of the queries up. I found some ambiguities that were caught by popstgres but would introduce subtle errors in the mysql based system. That, and Postgres has transactions.

    I am convinced that the only reason people like Mysql is it has better marketing. The perfect example is those benchmarks they distribute with the software. Those are single user transactionless benchmarks!!! Single user benchmarks are not realistic. Anyway Postgres is far stabler faster product in my opinion.

  97. Firebird VS PostgreSQL by Anonymous Coward · · Score: 0

    I've done a bit of research and the reason I've decided on Firebird over PostgreSQL is because:

    1. PGSQL has bad Java/JDBC support
    2. Firebird is easier and less work to maintain
    3. The replies on this slashdot article seem to suggest some problems with PGSQL and corruption of the database.

    I'm a lazy bastard and that's a good thing.

    All I'm wondering about now is the speed difference between MySQL and Firebird on a simple high traffic site. Although, judging from another slashdot reply. MySQL and JDBC together will automatically be slower than normal MySQL.

    I guess I just made up my mind.

  98. And why on earth would you dump SQLServer? by Otis_INF · · Score: 2

    It's worlds number 1 database system, and you want to get rid of it?

    *WHY* ?

    It has everything you want, is rocksolid and lightingfast. Ok it's expensive, but you already have it.

    --
    Never underestimate the relief of true separation of Religion and State.
    1. Re:And why on earth would you dump SQLServer? by Anonymous Coward · · Score: 0

      It also runs under a non-priveleged account! Wish Microsoft would get on the damn ball and properly separate permissions on things like IIS so it can run under a regular user account.

    2. Re:And why on earth would you dump SQLServer? by Otis_INF · · Score: 1

      You can run SQLServer under any account you want, just select a different user in the services snap-in. If you read the 'best practises' documentation on the MS Security website you'll learn these kind of small things.

      You can also do that for IIS, plus you can select for each website which user should be used to run the website under, which can then be used to connect to f.e. SQLServer. It's easy :)

      --
      Never underestimate the relief of true separation of Religion and State.
  99. Re:Stable? Maybe. Worth it? Not yet. by Anonymous Coward · · Score: 0

    You're just plain wrong about supporting only 1 index per table.

    MySQL supports 32 indexes per table, and queries can use multiple indexes on the same table.

  100. Re:Stable? Maybe. Worth it? Not yet. by MattRog · · Score: 2

    HI peyote, I'm glad you took the time to intelligently reply to my post. I think we're not quite on the same page in a couple places, certainly MySQL may be 'stable' (see my other post about what I consider to be 'stable') but I think the story starter was concerned with high trafficked sites which is a horse of a different color from, say, my personal site or a lightly-used corporate intranet which certainly doesn't require the types of things I illustrated in my post. I run several high-trafficked sites (upwards of 100 million imp/mo.) and those were 'gaps' in MySQL which our team isolated as ranging from 'really helpful' to 'required'.

    Rebuttal: Somehow that fact doesn't impede Yahoo!'s extensive use of it. (See Jeremy Zawodny's presentations at the recently-held OSCON.) If the query hangs on the slave halfway through, it isn't marked on the slave as having completed. When the slave becomes available again, it notes its pointer in the transaction log and catches up automatically. Oh, and replication (at least in 4.x, possibly also in 3.23.x) is transaction-safe.

    Right, and the slave goes down. So I have to manually intervene to fix it. That is unacceptable. It should do something better than simply quit and say 'oops'. Yahoo's extensive use is, as I see from MySQL.com, fairly weak:
    Size of database: 25 GB
    Average number of concurrent connections: 60
    Max number of concurrent connections: 250

    That is not worth writing home about.

    Rebuttal: As another poster wrote, leave the OS out of this. If you cannot properly configure your OS to not buffer writes, you probably shouldn't be running a 'mission critical' ANYTHING.

    Correct, knowing what your filesystem does is your problem. The filesystem buffer will say 'Ok I wrote that' and MySQL can move on, even if it is living in a buffer before being written. Not a big deal if you're aware of it, but MySQL doesn't give me an easy way to change it, or to specify WHICH tables/databases NEED to be O_SYNC'ed or not. That is what I wanted - recompiling MySQL and having EVERYTHING or NOTHING buffered is not acceptable. There are certain tables or databases I KNOW will benefit from buffering, but with MySQL it's all or nothing.

    Rebuttal: So set up a dedicated slave for backups. Turn off the slave while backups are running, it catches up when backups are done and it is brought back up. A *simple* solution to a *simple* problem. If you really feel the need to do a hot backup of your live server, you can check into using InnoDB's tool at http://www.innodb.com/hotbackup.html .

    Ok, so I have to now get another boxen set up just to backup my database? How is getting another box, setting up replication, pausing replication, dumping, etc. etc. 'simpler' than saying 'dump database bob' and having MySQL do the rest for me? And I did point out InnoDB has a hot backup but that does work only with InnoDB.

    Rebuttal: You mean like backing up the raw MyISAM files? Of course, that doesn't work with InnoDB databases, so you can use their hot backup tool for that as well, if this is a REAL (rather than IMAGINED) problem.

    That only works if you offline your DB while your copy is being done. Again, not acceptable and what hot backups for ALL MySQL tables would fix.

    Argument: I have to wait for 4 million INSERTs to be performed...
    Rebuttal: RTFM. No you don't.


    Well, certainly you can always use 'CONCURRENT' but in practice that is not terribly useful. Why? Well my 4 million load operation will take LONGER to perform, and sure people can query it now, but I have no indexes on the table so all queries will now table scan. So I suppose you're right, you don't have to lock the table for the whole operation, but in reality, your app won't run very well at all (are writes allowed to the table while you're loading?).

    Rebuttal: Again, is this a real or imagined problem? It's likely that whatever you are trying to do, there's a better way. Unfamiliarity with a particular tool usually results in this type of problem.

    It can be - depending on your OS and whether or not you have it configured for large file support. But again striping it can have significant performance advantages since I could dump AND load to multiple disks that leads to a significantly higher throughput rate.

    Rebuttal: So because YOU don't like the output of EXPLAIN you're saying MySQL isn't ready for production? WTF are you talking about?! As for a more *in-depth* EXPLAIN, I agree there, and I found PostgreSQL's mechanism kind of cool. Of course, in four years of running MySQL in a production environment, I'm not sure I would have used it more than once or twice; MySQL's EXPLAIN has always been sufficient, if you actually know what you're doing.

    Not necessarily 'production' use, but production use in a highly trafficked environment.

    RTFM. You are obviously unfamiliar with the slow queries log where MySQL gives you EXACTLY the information you are looking for. As for the data cache and whatnot, I don't know if that is actually available or not.

    Yes I've read the manual and seen the slow-query-log portion. However the log does not log the currently running SQL, only after it has completed. If my server is slow NOW I have to wait till whatever is blocking everything to complete BEFORE I knew what happened. I'd like a way to see RIGHT NOW what is going on, so if I see a rouge query performing a Cartesian product I can easily kill it and life can move on. The slow query log does not fit the bill.

    No, there isn't a way to manage the data cache aside from setting config options on sizes of key caches and the like. I can't create dedicated caches to certain tables which is quite useful, nor can I change the I/O sizes of the caches if I know queries being performed on them would like 16K I/O vs 4K or whatnot.

    Rebuttal: And your evidence? Oh wait, you didn't actually provide any. You just brought up a tangential issue...

    Part of it comes into the fact that I can't manage index statistics (or even see them), can't tell what types of joins are being performed, etc. and the fact that the optimizer is somewhat 'young'. Now, simply because I can't see statistics doesn't mean the optimizer isn't using them, but I can't gauge how well they are being used, and I suspect the optimizer isn't as advanced as others. Optimizers are weird creatures, and with time it will certainly improve. However many-table joins are consistently slower in MySQL than many others - I'll see if I can't get test data up and run some quasi-useful benchmarks but I've seen this time and time again in properly normalized, indexed tables queries which run on Sybase ASE, Oracle, etc. with nontrivial amounts of data do not run as well on MySQL (which touts SELECT speed as their main advantage, I guess complicated SELECTs are not as nice).

    Rebuttal: If you are that concerned, you have some good options here. (a) Pay the developers to hold your hand and explain to you what has happened. (b) Use the source and do your own friggin' diff. This is Unix; stop acting so helpless.

    We don't use MySQL in a production environment, so I'm certainly not going to pay or waste my time coding. But MySQL.com seemingly touts that they are #1 in so many aspects and conveniently glosses over some issues which are important to those who write and manage large applications. I'm simply pointing out where they need work, and if they're serious about their claims then they should have no problem whatsoever implementing them.

    Dude, have you not even looked at MySQL since 3.21 or something? Row locking is available in InnoDB, as are transactions. Stored procedures and triggers are planned for 5.x IIRC, but so many applications DON'T need them that the MySQL folks simply haven't cared to add them. Ditto for views (which are also slated for 5.x).

    As I said in another post, I do lots of consulting and yes, I read the MySQL docs quite often. InnoDB does provide row locking, but at a cost of performance and memory. If you know much about how large-scale applications are built (which is what I think the comment author asked about) you know how well stored procedures and triggers are used. He asked if MySQL 4 (over something like PostGRES) was suitable in a high-trafficked environment. Those features are a serious part of any non-trivial application.

    --

    Thanks,
    --
    Matt
  101. Postgresql Install by nullard · · Score: 2, Interesting

    I would gladly try Postgres as it has some features that are currently missing from MySQL. But I don't feel like dealing with it.....

    I've installed PostgreSQL five or six times. IIRC it involves seting a pair of environment variables, creating a user, and using configure and make. I was able to do it right after completing my first Linux instalation. I didn't find it difficult or even mildly challenging. The documentation is really good.

    --


    t'nera semordnilap
    1. Re:Postgresql Install by Jamuraa · · Score: 1

      Wait, I must be doing something wrong. I've installed postgresql at least 5 times, and all I had to do was `apt-get install postgresql`..

      --
      You can't see this if you have sigs turned off.
    2. Re:Postgresql Install by sg_oneill · · Score: 2

      No postgres apt's into place pretty nicely (woody). I must admit being a little befuddled working it out at first (just the security settings) but the everlovin' webmin (apt-get install webmin-postgres) seemed to magic it all good. None the less, for web stuff we still usually float with My-sql as dreamweaver-mx now copes with it natively (keeps art-troggs happy). Heads up to Macromedia here, ppl actually DO use postgres.

      --
      Excuse the Unicode crap in my posts. That's an apostrophe, and slashdot is busted.
  102. Re:Stable? Maybe. Worth it? Not yet. by MattRog · · Score: 1

    Really? Do you have an example?

    You are not seeing my point -- obviously you either didn't read what I said or have no clue what I was talking about.

    I never said you cannot create more than one index on a table. But for a single select, on a single table, you can only use a single index. I'm not making this up, read the docs:

    SELECT * FROM tbl_name WHERE col1=val1 AND col2=val2;

    If a multiple-column index exists on col1 and col2, the appropriate rows can be fetched directly. If separate single-column indexes exist on col1 and col2, the optimiser tries to find the most restrictive index by deciding which index will find fewer rows and using that index to fetch the rows.


    http://www.mysql.com/doc/M/y/MySQL_indexes.html

    --

    Thanks,
    --
    Matt
  103. Re:Stable? Maybe. Worth it? Not yet. by zak_greant · · Score: 3, Informative

    Hey,

    Thanks for the critical feedback - however, you have some information that is not accurate.

    On the positive side, your criticism has provided some interesting ideas! :)

    REPLICATION
    You are correct that the binary log stores the SQL data modification statements that were applied to the master, rather than the actual
    changes that were made to it. You are also correct that if something goes wrong, the DBA is the one who gets to fix it.

    It does not assume that the master and slave are equal - it does assume that the slave contains an linear subset of the data on the
    master.

    We have users working with replication in high-demand situations and it is performing well. Could we improve it? Of course - I was just
    browsing through the slides from the PostgreSQL Replication talk at OSCON and it looks like some very cool things are going on - we should
    watch and learn. :)

    TABLE LOCK LATENCY
    It is true that table-level locking used by MyISAM performs poorly under heavy concurrent read/write.

    If this is an issue switch to the InnoDB storage engine (which uses low-cost, non-escalating row level locking) or the Berkley DB storage
    engine (which uses page-level locking).

    InnoDB uses a single bit to indicate if a particular page stores rows that are locked. If any rows are locked in the page, then a few more bits are needed for the page to indicate what particular rows are locked.

    FILE SYSTEM BUFFERING
    File system buffering can be a thorny issue. The InnoDB storage engine forces a flush to disk upon the commit of every transaction and
    then writes a checkpoint so that it knows when the last flush was made.

    INDEXING
    This is just plain wrong. Of course MySQL can use more than one index in a query!

    CLUSTERED INDEXES
    MyISAM tables can be optimized so that the order of the rows in the table matches the order of the indexes on the table.

    InnoDB tables already use clustered primary key indexes. Secondary indexes refer to the primary key values.

    ON-LINE BACKUPS
    Replicate the database out to another server (even one on the same machine), then stop the slave to take a backup.
    This has the added benefit of being able to ask the slave to take over from the master when you need to maintain the master.

    BACKUP FORMAT
    Use the binary log instead of the mysqldump tool - it uses a compressed binary format that is much more compact.

    Also, if you have to recreate a table from a mysqldump, then disable indexes until you have recreated all the rows - will save a good deal
    of time on bigger tables.

    Dumping the indexes is probably not a bad idea though. :)

    DUMPING TO MULTIPLE FILES
    An option to allow dumping to multiple files would be convenient. :)

    In the past, I just asked mysqldump to dump to stdout and have a perl script handle the segmenting.

    The binary log does get segmented into multiple files automatically. I will ask the developers if it would make sense to make a new dump tool that works with the binary log format so as to get the benefits of that format.

    BETTER TOOLS...
    Duly noted - the output from EXPLAIN is cryptic.

    DELVING DEEPLY...
    Absolutely - we could use more tools to give detailed performance information. The current tools that report the number of active threads,
    the number of questions run, the memory currently used, the max. memory consumed, etc. are not enough. We have some graphical tools like MySQL-Graph (A GPL'd app) to make review of the data easier.

    Also, slow queries is more than a counter. The slow query log stores details on every query that ran over the value of the long_query_time
    setting. Use the mysqldumpslow tool to give a summary of data in the log file. The log can also record queries that did not use an index.

    QUERY OPTIMIZATION
    On what knowledge do you base your assertion that the query optimizer is 'PISS POOR'? Do you understand the code behind it? Have you run
    benchmarks to compare its performance to another optimizer?

    Of course we keep optimizing for specific cases. We want to continue to improve performance whereever possible. We have spent a good deal
    of effort doing broad optimizations - the optimizations that have the greatest benefit for the most queries. Now we are work more on
    tweaking specific cases.

    MISSING FEATURES
    The Berkley DB storage engine uses page level locking.

    The InnoDB storage engine uses row level locking (without resorting to lock escalation :)

    We have excellent transaction support - likely the best of any available database today. InnoDB supports the repeatable read transaction
    isolation level. However, due to how we implemented our multi-versioning support, we don't get phantom reads. This is a higher level of transactional isolation than MS SQL, Sybase, PostgreSQL, Interbase, Ingres, etc. IIRC, only FireBird and Oracle may be the same.

    Sub-selects should be out very soon. We are still working on stored procedures, views, triggers and full support for referential
    integrity. We know that these features are important. However, we are working on doing truly robust implementations - rushing them out
    will not help anyone.

    END NOTES
    Why does no one mention the stuff that MySQL is good at? :)

    We are fast - we have third party confirmation that we are faster than DB2, MS SQL and Sybase. The test even confirmed that we perform about as well as Oracle (a bit slower :) when running under Windows using a JDBC driver.

    We don't need to stop the database to vacuum or do many maintainance tasks.

    We know that we can run in critical environments because we have users like Yahoo! Finance *and* Slashdot :) using us for critical, high-load applications.

    We are a fully-threaded app and can take full advantage of SMP machines.

    We can run natively under a bunch of OSs - including Windows.

    Our ability to use different storage engines gives users great choice in how to manage their data. If someone needs a lightweight format in a non-transactional environment, use MyISAM - it has very little storage overhead and is speedy in situtations where you do not have many concurrent reads/writes.

    If you need really robust transaction support that ensures the integrity of your data, use the InnoDB storage engine. Storage overhead is more than with MyISAM tables, but that is not generally an issue for enterprise level users.

    I can hear people grumbling - well, the transaction support isn't integrated, so it isn't valid... That is complete junk - since when is choice a bug? That is like saying that the Linux is not a modern operating system because its default filesystem does not use journaling. Usually, is it only the proprietary and/or less advanced operating systems do not give you a choice of file system.

    Also, we can easily add in new storage to support specific needs. Look at how quickly InnoDB was integrated - it suddenly took us from having no transaction support to having great transactional support. Without the storage engine concept, we would have had to do a lot more work to get it integrated.

    blah blah blah... :)

  104. Re:Stable? Maybe. Worth it? Not yet. by MattRog · · Score: 1

    Zak,

    Thanks for replying to my post. I'm only trying to help make MySQL better - I don't use it but I know many who do, and they have to struggle with issues which I think they shouldn't have to. :)

    Re: replication
    Correct, my gripe was that the DBA now has to do something to fix a problem which should've never occurred. :D With my DBA hat on, I have to deal with a lot of issues, and 'worrying' about replication (it's supposed to put my mind at ease, right? :D) failing shouldn't happen.

    Re: File system buffering
    Again, I am aware that is something you should 'know' when you're setting up your DB, but it would be nice to be able to control it on a table or at least a database level. Again I think system tables are really important and should always be non-buffered and so should several of my production DBs, but there could be a test DB that I don't care about and buffering will provide a performance advantage.

    Does turning off buffering also kill the read cache, too?

    Re: indexing
    I think everyone is mis-reading, the docs here explain what I'm getting at:
    mysql> SELECT * FROM tbl_name WHERE col1=val1 AND col2=val2;
    If a multiple-column index exists on col1 and col2, the appropriate rows can be fetched directly. If separate single-column indexes exist on col1 and col2, the optimiser tries to find the most restrictive index by deciding which index will find fewer rows and using that index to fetch the rows.

    What I would like it to do would be to read BOTH indexes and then create some sort of a 'dynamic' index (really just the AND-ing of RowIDs after considering both indexes) to limit the results further.

    Re: Optimizer
    I will attempt to assemble some test data, but in the field I've seen many-table joins (inner, outer, etc.) being performed noticeably slower on MySQL than in other RDBMs. I haven't checked postgresql, though.

    I actually browsed through the C code for the optimizer but couldn't exactly find what I was looking for - from what I saw it sets up a query class which does the optimization inside of it? I thought the optimizer would be a separate 'entity'. Maybe I was looking in the wrong place. :D

    I read the InfoWorld benchmark thing, and also downloaded the code they used. MySQL's performance gains came from the query cache which is quite cool, although on systems in which you're updating/inserting you're going to hose the cache and lose the benefits (this was tested informally on a couple million row table, and performance with the cache when being updated frequently was roughly equal to without).

    Again - I'm not saying there's no use for MySQL - but the original thread starter was looking at a high trafficked system. It's kind of like trying to figure out the Total Cost of Ownership of a piece of software. When you have a high trafficked site not only is performance important but reliability, maintainability, disaster preparation and recovery, etc. all need to be factored in, which I attempted to illustrate in the 'gaps'.

    --

    Thanks,
    --
    Matt
  105. Re:Stable? Maybe. Worth it? Not yet. by AKAImBatman · · Score: 2

    Zak,

    Putting aside what MySQL is and isn't good at, I'd like to ask that when you guys implememt features, you do them according to SQL specs. As the author of DataDino, a database management tool, I've been bitten several times by MySQLs lack of SQL 92 adherance.

    For example, the SQL specs state that identfier tokens (e.g. table names, column names, etc.) can be encaspulated in double quotes. The only problem is that MySQL uses the accent sign (`) instead of quotes. All the code that was ok for nearly every other database on the planet, is suddenly not ok for MySQL. Very bad.

    Simple things like this can go a long way toward people taking MySQL more seriously. As it stands, you may manage to get all the standard RDBMS features in, but it won't be compatible with anyone. Thus MySQL will not be accepted until this changes.

  106. Comment removed by account_deleted · · Score: 3, Informative

    Comment removed based on user account deletion

  107. Indexes again by Anonymous Coward · · Score: 0

    > What I would like it to do would be to read
    > BOTH indexes and then create some sort of
    > a 'dynamic' index (really just the AND-ing
    > of RowIDs after considering both indexes)
    > to limit the results further

    This is exactly what MySQL does--it will use both indexes (or more than two) to narrow down the rows to fetch. I think it's the MySQL docs that may be unclear in this case.

  108. Re:Stable? Maybe. Worth it? Not yet. by peyote · · Score: 5, Informative

    If we're talking about high trafficked sites, I'm pretty sure our sites in my last job would qualify: around 80M-90M page views per month. Granted it isn't ``upwards of 100 million imp/mo.'' but I don't expect to get into a d*cksize war about that. :-) (Also, the great majority of these were PHP pages doing various things against our MySQL database.)

    Right, and the slave goes down. So I have to manually intervene to fix it. That is unacceptable.

    I'm not really sure what you mean here. The only replication problem that would require manual intervention is in a multi-master setting where MySQL gets confused about which query comes first. (And they don't even officially support such a config.) In a typical failover setting, if a slave dies, goes down, whatever, it rebuilds itself when it comes back up, no intervention required.

    As for just quitting and saying 'oops', I think that was a problem with MySQL's replication a number of versions ago, probably one of the first versions it was officially in the source (complete with dire warnings, of course).

    Finally, as for Yahoo!'s total MySQL traffic, we actually outran that by quite a bit at my last job. We were seeing sustained averages (over a number of months) of nearly 180 queries per second, with a maximum of 1000 concurrent. Is that worth writing home about? ;-)

    Correct, knowing what your filesystem does is your problem...

    Maybe I'm misunderstanding, but this REALLY doesn't seem like it's MySQL's job. If you want a database to be O_SYNC'd, `chattr +S the_directory`. (Granted you cannot do that on a per-table level.) Want the whole thing sync? `mount -o sync the_filesystem/`.

    Ok, so I have to now get another boxen set up just to backup my database?

    Yep. Or you can get one box that acts as a slave for all five/ten/whatever of your MySQL pools and back them ALL up from one box, rather than five/ten/whatever.

    ...pausing replication...

    No no no no no. You don't have to pause replication. Really. I promise.

    etc. etc.

    No, there is no etc. etc. You described it just fine in a few simple steps. At least in our application, this eliminates any need whatsoever for hot backups. YMMV, use the right tool if you determine that to be something else. But to say that is doesn't work is simply false. I can demonstrate that it does work, and it works well, even in a production environment with a healthy bit of traffic.

    P.S. If you are still really bent on this hot backup business, check out `perldoc /path/to/mysqlhotcopy`.

    Question: why are you doing lookups on a table that is in the process of being loaded? Do you do lookups on a table while you are restoring it from backup? Aren't you running the risk of getting bad data out in any case? Yes, you do have to wait for the operation. No, that does not mean that you have to do 4 million serialized INSERTs.

    Yes I've read the manual and seen the slow-query-log portion. However the log does not log the currently running SQL...

    Okay, if that's what you want, use SHOW FULL PROCESSLIST from the MySQL monitor. Done.

    As for some of the data cache issues, I still don't purport to know much about that, but ISTR a lot of talk from Monty and the other MySQL team at OSCON about this sort of thing in 4.x and 5.x. We'll see over the coming months...

    As for the optimizer, you're right, I can't see it either. Neither have I ever needed to, since it just doesn't come up. At least in our application, MySQL seems to get it right every time. (No, this isn't a proof. Yes, it's anecdotally helpful to the OP, I think.)

    We don't use MySQL in a production environment, so I'm certainly not going to pay or waste my time coding. (regarding vague Changelog entries)

    Okay, maybe the Changelog could be more verbose. (Personally, I'm happy with the amount of information in the Changelog.) But those who write and manage large applications, if they are truly concerned about this sort of thing, should have the expertise (either in-house or via a MySQL support contract) to squeeze every last ounce of performance out of the database. In the same way, they should be able to track changes in a more specific way. Maybe not you, since you don't run MySQL in production, but those who *do*, *can*.

    InnoDB does provide row locking, but at a cost of performance and memory.

    I'd be interested to see the application that provides row locking for free. :-)

    If you *NEED* those features (note that need does not just depend on the size of an application), use them, either in another package, or when MySQL gets them. I've seen plenty of non-trivial applications that run just fine on MySQL in production and high-trafficked environments. Size and volume do not constitute a feature need.

  109. Re:Stable? Maybe. Worth it? Not yet. by zak_greant · · Score: 2, Insightful

    Currently, you can ask MySQL to become ANSI compatible by starting the server with the --ansi flag. When this is enabled, MySQL uses double quotes as the identifier delimiter.

    The drawback with this is that it still has to be enabled on a per-server basis and many people do not run with it enabled (nor do they want to have it enabled).

    This does make life difficult for tool developers and porters.

    I will raise the issue with our developers and will reply to you as soon as I hear something.

  110. Re:Stable? Maybe. Worth it? Not yet. by Trolan · · Score: 1

    Only 30 million hits a week? I was running a site, on MySQL that was pulling 15million a day. Now, if you mean 30mil _pageviews_ that's different. We did about 400k of those per day. Granted, we did have a slightly weird setup, but it did the job, and very well. Each front-end webserver had a MySQL slave instance with the necessary read tables. This helped keep the concurrency way down. The master was only written to upon user information adjustments, or hourly when banner data was replicated back to it from the slaves (no sense pushing all that data to the master on each hit when the front-side can be used as a temporary aggregation point).

    Now as to the backup, mysqlhotcopy at about 3am. Drops a write lock on the tables. Maybe a couple minutes of write lock on a really gigantic table. As we didn't have a higly active forum, or other DB update intensive section of the site that required immediate public update, it didn't cause any real problems. In a year of this operation with 15 slaves, I think I had to hold the replication's have on one of them once, and that was my fault anyway. It helps to create the db before you start replicating to it.

  111. Re:Stable? Maybe. Worth it? Not yet. by MattRog · · Score: 2

    Yes, I mis-spoke. 30 million pg view. Which many of them are writes, unfortunately. :D If they were reads we wouldn't have hit MySQL locking problems, and live would've been good.

    --

    Thanks,
    --
    Matt
  112. Re:Stable? Maybe. Worth it? Not yet. by zak_greant · · Score: 1

    Matt,

    I am glad that you are trying to help! The post seemed inflammatory due to certain phrases like, 'Why MySQL is Not Suitable for Enterprise or High-Volume Use', 'MySQL.com misleads you about it's capabilities' and 'PISS POOR'

    I think that people misunderstood some of what you said because you painted broad generalizations over specific issues. Stating 'Inability to use more than one index on a table in a query' is very different than how you later phrased your concern.

    I would certainly like to see some tests on the optimizer - I have been having some discussions regarding benchmarks with the PostgreSQL and Firebird developers and I am sure that we would all find the benchmarks interesting.

    As for browsing the optimizer code, you are brave individual. :)

    Part of our performance gains did come from the query cache. Windows does a poor job of caching disk I/O and the query cache helps make up for this. I believe that Oracle (and others) use a similar strategy as one of their optimizations. It is interesting with the benchmark to note how similar the performance curves were until each database hit some sort of internal limit. I expect that if Oracle and MySQL had been allowed to continue beyond the limits shown then we would have seen a similar type of drop-off for both at some later point.

    Regarding high-use: We have users who are really putting MySQL through its paces under high load - it works quite well and has a low TCO. Low enough to displace Oracle, SQL Server and other databases from existing setups.

  113. Subselects by NitroWolf · · Score: 1

    All I want out of MySQL at this point is subselects. This seems to be one of the most heavily requested features, yet there's no sign of it...

    Several of my projects (admittedly, they aren't as high profile or even as important as many things) are on indefnite hold because everything was built around MySQL ... with the promise of Subselects in Version 4. Well... version 4 is here, and no subselects... and my project can't move forward without them. Or at least, if the queries can be done another way, I haven't found it yet. The JOIN syntax in SQL is so horribly convoluted that I just simply have not been able to adequately wrap my brain around it, I suppose...

    Subselects in and the world is all roses and honey... but at this point, I'm pretty pissed off at MySQL and am wishing I had chosen Postgres from the get go.

    But hey... ya get what you pay for, so I guess I can't be too mad, eh? Which is probably why I don't rant over at mysql.com ever :)

    1. Re:Subselects by Anonymous Coward · · Score: 0

      If the subselect statements in your queries aren't generated dynamically can't you just re-write the query using views (to replace the subselects) instead?

      I'm probably talking out of my ass. It's hard to know without having any idea what kind of SQL statements you are writing.

    2. Re:Subselects by NitroWolf · · Score: 1

      I'm not sure what you mean by views?

      What I basically have right now as my major stumbling block is a table with user information that differs from the baseline table.

      The baseline table has the SAME information, except all status records are set to 0 (null). The user table has all status records set to appropriate values for that user.

      I need to select all the status rows for that user that have a value > 0, then I need to select all rows from the baseline table that pertain to THAT usertype that do NOT exist in the user information table. Does that make sense?

      Table 1 = baseline, all status is 0 and contains information for ALL user types.
      Table 2 = User status on a per user basis.

      I want to: SELECT * FROM table1 WHERE table1.status NOT IN (SELECT status FROM table2 WHERE user=username)

      It's a little more convoluted than that select statement, but it gives a general idea. If there's any way to do that w/o a subselect, I haven't found it yet.

  114. Re:Stable? Maybe. Worth it? Not yet. by MattRog · · Score: 1

    Well, I feel that it is NOT suitable for enterprise use, and I thought I explained why. Perhaps I'm spoiled with Oracle, Sybase, etc. in that I don't have to code workarounds (which is what they are) to have hot backups, or spread over multiple dumps, etc.. At least to me that is what the Enterprise world knows, and loves, and expects. If you want MySQL to have a chance, you can't tell a company that they're going to have to write utilities (or custom code, or set up a dedicated replication backup server, etc.) to perform routine things that their RDBMS has been doing for them. They don't have to write custom application code to handle subselects, joined updates, hot backups, etc. and telling them they will have to simply 'deal with it' is not a good way to win the hearts and minds of developers, DBAs, etc. :D

    Not to really focus heavily on this but I believe MySQL.com does mislead:
    designed for speed, power and precision in mission critical, heavy load use

    Power, to me, implies much more SQL options (e.g. subselects, joined updates, etc.) which yes, IS BEING worked on, but is not there yet (nor stable from what the docs tell me). Power, to me as a DBA, means that I can tweak server settings without dropping and restarting the DB server. It means that I can see more than what I have now. :D

    Stored procedures are typically faster than ad hoc SQL, so it would be faster to have precompiled SQL capabilities.

    Mission critical implies that I can have fail-safe replication and failover when something goes wrong. It says that I don't need to have 'workarounds' to hot dump my database (say I can't afford to have a dedicated backup replication guy somewhere).

    Is MySQL getting there? Of course - but as I said 'Not yet'. :D

    The misunderstanding re: indexes came from SlashDot parsing out my less than in the query, so it cut it off. This is what I wrote (sometimes slashdot times out and I lose the post so I write them in textpad first):
    Given an example query - 'SELECT bob FROM sometable WHERE somecol = 45 and somecol2 less than 44' - if I have two indexes on sometable (somecol and somecol2) it can join the two indexes together and use the 'virtual' index to find rows.

    I don't think the generalizations were overly broad, certainly you can achive hot backups via a roundabout way, or that you can 'sort of' work with data as you're loading it via load but in PRACTICE I think it was accurate. We could split hairs over how to achive hot backups but in the end, the enterprise customers just want non-corrupt backups (is there a way to achive something like a rolling transaction dump to achive up-to-the-minue backups without backing up the entire database? I know we can't live with day old dumps if we have data loss, again replication can help but if I issue 'delete table;' then that will be replicated, too :D).

    As I said, it's sort of a trade-off between the costs of, say Oracle (which is typically obscenely high ;)) and having to 'put up' with a lot of deficiencies which certainly are 'slated' to be addressed but the only roadmap we have is 'next version' with no real timetable (and many of us recall many years ago the docs stating 'real soon' for things which are still not implemented). At our site we started on MySQL and encountered major problems and eventually purchased Sybase ASE for very cheap (under $15,000) which includes 24/7 support. And we have hot backups, subselects, triggers, stored procs, etc. and all sorts of other things which we didn't have to spend time developing in house.

    I suppose it comes down to can you afford to not have the enterprise features? The problem is most people don't know until they encounter a situation in which they need the feature. :D

    --

    Thanks,
    --
    Matt
  115. Better Question by eples · · Score: 2


    MySQL 4 - Is it Stable?

    Better question is: "Is it ANSI SQL-92 compliant?"
    No. It is not. MySQL does not conform to even a 10 year old SQL standard.

    --
    I'm a 2000 man.
  116. R trees by Anonymous Coward · · Score: 0

    Check em out :)

    1. Re:R trees by Anonymous Coward · · Score: 0

      I like GIST either. Potentially it may make PostgreSQL just unbeatable.

  117. You're lucky! by Guru2Newbie · · Score: 0

    Ach! You're lucky to have artificial arm replacements...I had to use a wire coathanger after M$ Access blew off my arm!
    It's great to use to roast marshmallows in the fire, but hell in the W.C.

  118. Yes, 4.0.2 has excellent stability by hotfries · · Score: 1

    4.0.2 has been rock-solid for us on Linux. We we're running 4.0.0 with 80 days of uptime before we upgraded to 4.0.2.

    mysqladmin Ver 8.13 Distrib 3.23.31, for pc-linux-gnu on i686
    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.2-alpha-Max
    Protocol version 10
    Connection db1 via TCP/IP
    TCP port 3306
    Uptime: 17 days 5 hours 2 min 37 sec

    Threads: 127 Questions: 79924235 Slow queries: 66360 Opens: 52010 Flush tabl
    es: 1340 Open tables: 222 Queries per second avg: 53.750

  119. license and documentation by pmineiro · · Score: 1

    as a programmer, i like working with postgresql.

    one, the postgresql protocol is extremely well documented, making it easy to implement a database handle, e.g., for a gsk style main loop or even in a language like haskell. the mysql protocol is completely undocumented.

    second, the mysql client libraries are gpl licensed. postgresql is bsd.

    these two points are related because 1) i can't really effective reimplement a mysql client library without good protocol documentation and 2) i can't distribute the mysql client library without releasing all my code, and sometimes from a commercial standpoint that's not an option. i could suck it up and get a mysql commercial license, but at that point, i'll also consider other commercial rdbms's.

    i would also like to note that in the case the bsd license is actually indirectly incentivizing better documentation.

    -- p

  120. serious question by Anonymous Coward · · Score: 0

    Postgres rocks!
    Postgres rocks!
    Postgres rocks!
    (MySQL sux0rz!)
    Postgres rocks!

    That should keep the flaming morons away, so:

    does the mm.mysql JDBC driver support the InnoDB features like foreign keys and row locking -- or is that a non-issue and something the driver doesn't have to deal with?

  121. Depend on your application by Anonymous Coward · · Score: 0

    Many people are happy with MySQL despite it lacks some features. That's the point.
    You can find many MS Access systems in corporate environment too. :)
    It depends what you are working on.

    For PostgreSQL and firebird, I think they really need some graphical administration tools. DBA may work on many diffenent databases in real life. Life is really hard if you depend 100% on command line.

  122. Back it up with benchmarks by kpharmer · · Score: 1

    I continually hear mysql folks repeat the dogma that it is faster than the commercial alternatives - but I've *never* seen a benchmark that backed this up - and wasn't trivial. Can anyone point to something beyond the home hobbiest level?

    Since these days OLAP & warehousing are *core* functionality, any database that cannot provide at least nominal capabilities in this area isn't a serious contender beyond the web boutique/minor league applications.

    Although some analytical functionality is needed today within most OLTP applications (summary tables, search tables, simplistic report tables, etc), a pure OLAP/Warehousing benchmark would be the easiet to compare to commercial alternatives.

    So, how about something along the lines of TPCDs - representing, say, a 300 gbyte reporting application with dimensional tables.

    Oracle, DB2, Informix, and Sybase easily delver solutions for this with support for partitioning, unions, parallelism, bitmap indexes, etc. SQL Server can as well, just to a lesser extent.

    But, have any benchmarks - or success stories established that mysql is even a player in this space? Or is this just another popular delusion?

  123. I'll use MySQL 4 when... by danpbrowning · · Score: 2

    I'll use MySQL 4 when Slashdot upgrades to it. :-)

    --
    Daniel
  124. myth of the day by kpharmer · · Score: 1

    The problem with putting 100% of the business logic in the middle tier dogma is that most folks saying this haven't sufficiently tested it.

    Aside from the valid and well-known disadvantages to implementation within the database, the following advantages are unfortunately not well known to having a logical application layer constructed from stored procedures & views:

    #1: database technology typically outlasts application technology. So - business logic implemented in T/SQL or PL/SQL in 1994 still runs perfectly fine today. If it had been implemented in pro/c it would have them probably been re-implemented in VB, then C/CGI, then perhaps Perl, then Java, and now .NET.

    #2: physical tuning. Databases physical schemas often have to be changed to deal with changing performance needs. If the interface from the application layer to the database is through a stored procedure the entire change can be implemented by a DBA. On the other hand, if the application is using selects/deletes/updates on the database a physical schema change will generally require a combined effort of programmers and DBAs - and suddenly become a significant project.

    #3 Adaptability. Similar to the above issue, logic within the database allows the DBA to re-engineer the physical schema to one with greater flexibility without impacting the interface to existing applications. The alternative typically involves duct-tape-and-bailing wire to ensure minimal impact to existing application code.

    #4 Capability. Some database modeling patterns involve the use of tree and network patterns that allow tons of flexibility but poor performance for scanning queries. The poor performance can be addressed with triggers that also insert to read-only tables. This capability provides extrordinarily flexible, adaptable, and reusable schemas, with no performance disadvantages. But - it is practically impossible if you are doing selects/deletes/inserts from the application layer.

    So, yeah 'common knowledge' says that you need to use just a subset of database functionality, and move everything into a middle application layer. Then again 'common knowledge' in 1994 said that client-server was the future of database architectures. And quite a few projects suffered because of the parrots that endlessly repeated the dogma/mantra that client-server was best. Business logic in the middle-tier is the exact same thing.

  125. MySQL by nerdin · · Score: 2

    After 20 years working with virtually every DBMS in the market I'd simply discarded MySQL in favor of Postgres.
    MySQL is to Open Software what Access 1.0 was to closed Software. Sorry to say that.
    Lame, lame "database" that ignores everything except CREATE, UPDATE, INSERT or DELETE. [where]...
    No joins, no views, no foreign keys, no subqueries, no stored procedures, no transactions, no row locking, no dirty reads, no REAL gain in speed. I don't know what some MySQL supporters call an "application", but I'd really like to see MySQL trying to run a real production environment with a few hundred (oh, preferably around a thousand) concurrent users in a highly transactional environment, using a hundred-table database. Yeah, right. Go ahead. I know people that also tried with dbase III / Clipper on DOS. Some of them even survived.

    1. Re:MySQL by Star_Gazer · · Score: 2, Insightful
      Yep, and I'am sure you are driving to the super market with your giant 30 (metric) ton Truck...

      What is wrong with all you guys mocking about MySQL not being a "real" database and basically calling its users idiots? It's all about the right tool for a job - and MySQL is OK for some applications. It's lightweight, extremely easy to use, very fast and easy to install and administer. Other systems may share some of this pro's and even offer (significantly) more, but if it's enough for a given app, why don't use it?

      BTW, I know some systems that still run dBASE databases - and they are working fine and do what they are expected to do.

    2. Re:MySQL by nerdin · · Score: 2

      Don't mince words. Please quote when I said idiots.
      By any means, whatever you want to say, it looks to me that MySQL is a very poor choice as a dbms: an overkill for single user, few table apps and too small for real day to day robust applications.

      >BTW, I know some systems that still run dBASE databases - and they are working fine and do what they are expected to do.

      Corrupting every other day?

  126. MySQL supporters need to learn SQL by Anonymous Coward · · Score: 0

    You claim to know databases and yet you force your view that I am supposed to know the underlying data representation. The basic premise of a database is to shield you from the underlying complexity of handling data. If I am supposed to know the underlying data representation then what good is the database ? Sw. design is more about how components fit and db is just one component. Sure it would help me to enable data savings if I know I should put all the not null columns in front rather than mix them in the table definition. I'd rather pick someone who knows about cardinalities and how to setup proper indexes then someone who knows the innate underlying data representation.

  127. Interbase/Firebird by Anonymous Coward · · Score: 0

    Never ceases to amuse me: MySQL users clamouring for the basic features that have been in Interbase for a decade and now available to all opensource users.

    Sure, MySQL is the popular choice (LAMP), but following that logic we never would have seen the growth of Linux against MS! C'mon, people, show some initiative! With PHP and Apache's inbuilt support for Interbase/Firebird, what are you waiting for? You want views? You want foreign keys? You want a true CS multigenerational RDBMS that has been around since 1984?

    www.ibphoenix.com

    -AF

  128. i bet people do ASM in you by Anonymous Coward · · Score: 0

    ASsMastering.
    Oh and by the way: VB sucks. If you'd tried Java, Delphi, hell, even C#, you'd realize.

  129. MySQL 4 alpha currently being used in production by pHaze · · Score: 1

    We currently use MySQL 4 for www.workzoo.com and have been for the last 6 months since the first alpha release. We use it for the extended fulltext index support. We do up to 400 inserts and updates per search as we are a realtime meta-search engine and use MySQL to build a cache. We have had one or two minor problems which were solved by the Monty and his team (for free!) sometimes at 10pm on a friday night, simply by sending in a bug report to the list. We dont have a support contract.

    We haven't had to reboot mysql for more than 3 months now - and it's version 4 Alpha!

    BTW, MySQL currently supports transactions and foreign keys via InnoDB Tables - although we use MyISAM tables as InnoDB does not support the (ultra fast) full-text indexing of MyISAM.

    ~pHaze

  130. So I'm not a DB expert... by tree_frog · · Score: 1
    but I do find myself in need of a RDBMS right now. My constraints aren't the usual ones though. I need to do pretty much real time data logging from a simulator, which can then be queried later. If I work hard and pull some fancy tricks, I can get the load down to 10000 updates per second. Each update will insert one or more rows into one or more tables. Data is never altered once it is entered. I may have up to 8 simulatneous users logging data. At the risk of starting a flame war - is my choice of mySQL over another RDBMS a good one here, or should I look for something else.

    Any help appreciated, treefrog