Slashdot Mirror


MYSQL & Row Level Locking

An anonymous reader noted a press release talking about how NuSphere is planning on adding row level locking to a version of MySQL due out 1Q 2001. Anyone who's used MySQL for anything with more then a few hundred thousand records (like, say, Slashdot to pick an arbitrary example) knows that this is the biggest shortcoming MySQL has... you can work around replication and transactions, but when your whole DB freezes because of one piddley write, its more then just a little annoying.

162 comments

  1. Re:fractured IP addressing scheme by Anonymous Coward · · Score: 1

    Nonsense. Just spin on j until i gets paged and the ReiserFS raises an signal that's logged to syslogd. Then parse the syslog for lost data and reclaim it on stick em notes. Should be no slower than a Java implementation. Really, this isnt rocket science, you know.

    Btw, Bababooey to you!

  2. other Open Source DB's? by JediLuke · · Score: 1

    You could use another DB...just a thought.

    didn't borland open up their db?

    JediLuke

    --

    JediLuke
    -Do or Do Not, There is no Try
  3. Re:fractured IP addressing scheme by TheSunborn · · Score: 1

    Now THIS is funny. Somebody moderate this up -)

  4. Stop the madness. by pauldy · · Score: 1

    I don't know about anyone else but I'm tired of people dogging on mysql and the things it doesn't have and things it "should". If you use it you will find it has strong areas and weak ones for most applications you will find the strengths outweigh the weaknesses. That is of course unless you are doing multitiered POS/Banking/Finance type integration the first being the most common where it might not be a good idea to use. Another argument is that you have to have transactions to e-commerce. Which I don't feel is true there are hundreds of ways, some possbly easier than implimenting transactions, to deal with the fact mysql doesn't have them.

    The impression I get is there are DBAs out there who don't know anything else but the DB they were raised on let alone how to learn a new one. And there are people out there that believe anythign their highly paid DBA tells them. This is just the only way I'm able to rationalize anyone would suggest mom and pop PC retailer on the net should pay 3-15k on a database that may never see more than a couple thousand records. Esp when there are alternatives that are in some cases free that give them the functionality they need without starting them off in the red.

    I think the quasi proffesionals who fail to realize the importance of mysql in the industry aren't real proffesionals at all.

    P.S. didn't mean to not include any of the other free databases out there but I could not call myself an expert in them yet so I cannot argue there strengths as well as I could mysql/oracle/mssql.

  5. Re:SHOW ME THE CODE by g_mcbay · · Score: 2
    Agreed!!!

    These type of future announcements are unsettling. It is not really much different than Microsoft announcing products months to years in advance... It means nothing until there's something to release. Also, there's a specific danger here in the open source world... Imagine if someone were planning to add this functionality to the open source version of MySQL but didn't because of this announcement...Then imagine that the company doesn't follow through...I'm not saying we have any specific reason to distrust NuSphere...but...

  6. Re:Why don't they strip down PostgreSQL instead ? by johnnyb · · Score: 1

    Why does it matter? Isn't that what schemas are for? Every connection to Postgres gets its own process, so what does it matter if rows are in the same database or not? Maybe the fact that you were splitting up your databases are because of limitations in Sybase, and not because of the inherent goodness of splitting. Please clarify your post, or clarify your understanding of PostgreSQL.

  7. Re:Why lock a row when you can use a transaction? by Earlybird · · Score: 3
    Oracle, InterBase and PostgreSQL all implement a generational table algorithm. This is why they do not need transaction logs. Sybase databases and Microsoft SQL Server don't, and rely on icky transaction logs (journaling).

    Both schemes work well, but the former is potentially must faster because there is no lock contention: Nobody can ever be writing to the same piece of data, and nobody can ever be reading something that being written, unless explicitly specified in the isolation level.

  8. Re:MySQL != DB (nitpicking the nitpicker) by Golias · · Score: 1
    And Excel is called a spreadsheet, even though it really is an application that lets a user edit a spreadsheet. What's your point?

    Um, not it's not. It's called a spreadsheet application. When people say "an Excel spreadsheet", they mean a spreadsheet created with Excel. Likewise, when somebody says "an Oracle database", they don't mean the application, they mean the database which Oracle is managing.

    Sometimes, a tool and its function ARE the same thing (Hand me that level, I don't think this table is level). The tool that is used for leveling tables is, indeed, called a level... but Oracle, PostgreSQL, and others are not called databases, they are called database management systems.

    --

    Information wants to be anthropomorphized.

  9. Re:MySQL *IS* a Database by CorporateProgrammerD · · Score: 1
    Of course, you're right. A well designed system does solve many problems, and you can provide an actual fourth tier that truly is separate from any of the others. And yes, doing so does provide more modularity and scalability. The philosophy of "throw fast multiprocessors and RAID at THE database server" really isn't my favorite solution. If you insist on throwing hardware at the problem, a cluster of app servers really is a more scalable solution. In fact the project that I'm currently working on is structured that way.

    I just feel that it is possible to logically isolate the business logic (design ) while physically deploying it with the data store (implentation).

    And yes, the reasons to do that include time-to-market. (Valid reasons for doing so do not include cost. Two cheap application servers and one mid-range database server will often outperform one high-range database/app server, depending on where the particular application's bottleneck is.) And yes, there is a tradeoff. That was the point that I was trying to make, even if I did not express it as well as I would have liked. It is a tradeoff, and as long as you get what you want (TTM) and you know what you're paying (scalability and portability) then it's acceptable.

    --
    To email, do the obvious.
  10. Re:Row locking is already implemented - here's how by SuiteSisterMary · · Score: 2
    If SALES:54 wasn't locked before, this INSERT would be successufull.
    Beside the point. Table being read, read read. You put row 54 into your locking table, then do an update to the main table. BOOM: no selects can be done; THE ENTIRE TABLE IS LOCKED. If you've got 500,000 records, and one gets updated, the other 499,999 can't be read. Who cares that you're being sure, using the locking table, that you yourself won't touch it during read; THE DATABASE AUTOMATICALLY, AND UNAVOIDABLY, LOCKS THE ENTIRE TABLE.
    --
    Vintage computer games and RPG books available. Email me if you're interested.
  11. Re:But SyBase? by Christopher+B.+Brown · · Score: 2
    I'm not sure I'd go along with standard non-mainframe DBMS; Oracle seems to fit that bill a bit more closely. I see Oracle used a lot more...

    But you are indeed right that page-level locking can be made to work with a sound design when architected by someone that knows how to cope with this.

    I'd expect it to work out best if updates are performed via a TP monitor (like Tuxedo) or a message queueing system (ala MQSeries); if updates are grouped together so they are done by a central "update process," then the number of users involved becomes less relevant.

    The problem is that page locking mandates having "highly-qualified Sybase experts;" it tends to be easier to keep in stock "somewhat qualified Oracle folk," which means that the assumption of "perpetually good design" is not safe...

    --
    If you're not part of the solution, you're part of the precipitate.
  12. Re:Why lock a row when you can use a transaction? by Earlybird · · Score: 1
    Oracle does use versioning -- as does SOLID, incidentally. However, I don't know the full extent to which Oracle uses this; it clearly provides transaction logging, as well.

    InterBase actually pioneered the algorithm, which they call "multi-generational". Here's from an InterBase marketing blurb:

    • Multi-Generational Architecture and Row-Level Locking
      InterBase's unique Multi-Generational Architecture (MGA, also known as versioning) enables clients to access an InterBase server with high concurrency and throughput. Also, the manner in which InterBase stores multiple versions of a given data record means that each client sees a consistent snapshot of the database. A client can update data without interfering with other clients' views of the data. These features result in DBMS technology that is well-suited to handle the short-lived transactions common in OLTP, concurrently with the longer-lived transactions of OLAP.

      The server implements true row-level locks, using an optimistic locking strategy. Any number of clients can share read access on a record simultaneously; contention occurs only when two clients attempt to update the same record. In that case, the client who was first issuing an update operation has the option to commit the operation, and the server returns an error to the other client(s)

      The combination of versioning and row-level locks give InterBase exceptional throughput and concurrency, when compared with RDBMS implementations that use page-locks or exclusive locks for reading. Readers never block writers, and writers never block readers.

      InterBase handles all versioning and locking transparently and automatically for the application. This relieves the developer from the manual locking control required in some other RDBMS products. A number of optional parameters for transactions permit developers to specify other locking behavior.

    So InterBase deals with conflicts through row-level locking. So it does not deal explicitly with "dependencies", but rather the first transaction to commit succeeds; later transactions will fail because the versions timestamps will mismatch.

    A more technical summary can be found here

  13. Re:Hmmm this sounds exciting by Jason+Earl · · Score: 2

    MySQL is the perfect datastore for a mostly read database that needs to be fast, and doesn't need the ACID properties of a real database. If this describes your application then MySQL is probably the best solution for the job.

    I find it a little disturbing that MySQL feels the need to change their database so that it becomes something that it is not. When they are done they almost certainly will be left with something slower than they have now for their current target audience, and it probably won't be as fast as PostgreSQL or Interbase for their new target audience.

  14. Re:Why don't they strip down PostgreSQL instead ? by scotteparte · · Score: 1
    Also remember that /. keeps itself running quickly by hard-coding old entries to static pages. This keeps the tables from getting unmanageably large, but definitely has its downsides :)

    MySQL should go away now... hasn't PostgreSQL surpassed it in performance (by recent benchmarks)? Data consistency should not be an issue with any db, no matter how piddling the content seems to be!

  15. Re:Mistakes are hard to clean up by scotteparte · · Score: 1
    You see, here is where the "Who cares that MySQL doesn't support feature xxx?" argument is brought to its knees. If MySQL data exports were more solid, you could dump the whole table and pull it into oracle, postgres, or even msql :)
    or M$ $QL $erver ;)

    Unfortunately, when you choose MySQL, you're locked in. But you could still port slash to PostgreSQL with some clever scripting. But why would you want to? Slash includes workarounds for MySQL's shortcomings that real RDBMS's don't have.

  16. Re:MySQL != DB by tuffy · · Score: 4

    MySQL is called a database because people are stupid. My /etc/passwd file is a database. My comma-delimited file of CDs is a database. MySQL is a database management system. Whether or not it's relational is for the pedants to bicker about.

    --

    Ita erat quando hic adveni.

  17. Re:fractured IP addressing scheme by f5426 · · Score: 1

    Lol. Thanks. Last sentence make the troll a bit obvious, but the rest is darn funny.

    Cheers,

    --fred

    --

    1 reply beneath your current threshold.

  18. Re:The real reason for this... by latemus · · Score: 2

    I would recommend Interbase over MySQL for just about any application. There is a very active community working on it. They forked the code because Borland/Inprise's apparent lack of real commitment to Interbase. They call it now Firebird. For more Informatin, look here.

  19. Re:ooooh yea. lets wait. . . by Anonymous Coward · · Score: 1

    Postgres is not GPL'd - it's a BSD license, which makes it far friendlier to embedded systems developers than MySQL (eg: Cobalt RAQs).

  20. Enough already by deasmi · · Score: 5

    Why is it that MySQL receives so much converage for adding 'features' that most/all other DBMSs take for granted.

    It's not even releational yet, supports the references keywork, does nothing. Recently found a MySQL database with duplicate primary keys in a table ???!!

    If you need and OpenSource RDBMS PostgreSQL ( Also Open Source ) has had most if not all the important features for years. Yes it may be slightly slower, but it won't corrupt your data randomly, you don't need to take it offline to backup and it supports a proper set of SQL.

    1. Re:Enough already by flec · · Score: 1

      >Yes it may be slightly slower, but it won't corrupt your data randomly,

      Mmmm. In 14 months I've never lost any data to MySQL. And I don't have a *shitload* of data, but enough to worry about, nonetheless.

      > you don't need to take it offline to backup

      BACKUP TABLE, anyone?

      > and it supports a proper set of SQL

      At the end of the day, I use MySQL because it suits what I need to use it for. So do thousands of others; but then, if they need to use a different feature, then choose another system. There will always be trade-offs.

      -flec

    2. Re:Enough already by DrWiggy · · Score: 3

      There's no pleasing some people. Whenever a story in the past has come up about MySQL, the PostgreSQL kiddies run around like headless chickens, screaming about the lack of integrity and row-level locking, lack of transactional support, etc.

      Then, a story is posted saying how MySQL will address these issues in the next 6 months, and all of a sudden the same people start running around screaming at us to shut up, and why bother in the first place, because putting such functionality in is a stupid idea anyway.

      Plain and simple, MySQL is faster and has multi-user (at the DBA level) support. It means different applications only get access to the SQL tables they need. It means you can give users their own databases easily. It's incredibly fast. All it lacks is a little transactional auditability and data integrity - for most applications run out here on the net, this isn't an issue, and if it is, you can normally work your way around it.

      Now, MySQL is going to get the features that will make it fit snugly into the low-end RDBMS range of open source DBs, and we're going to be happy, because it means our data is going to be safe. We're even prepared to happily take a hefty performance hit if need be.

      Unfortunately though, people seem to take this matter as seriosuly as their religion, and we end up with this sort of argument. This is all seeded from either jealousy, bigotry, or both. The argument as to which DB is best is one for you to decide all by yourself.

      However, when I saw this story, a smile appeared on my face, because it's the one thing, and the only thing, that I actually wanted MySQL to incorporate at some point. Sure, the model and philosophy sounds a bit kludgey but I don't care because as long as it works, I'll be happy. :-)

    3. Re:Enough already by f5426 · · Score: 2

      > Why is it that MySQL receives so much converage for adding 'features' that most/all other DBMSs take for granted

      Because slashdot is built upon MySQL. Slashdot editors post stuff that interest them. MySQL is obviuously and rightfully one of those topics.

      Cheers,

      --fred

      --

      1 reply beneath your current threshold.

    4. Re:Enough already by cpeterso · · Score: 1

      All it lacks is a little transactional auditability and data integrity

      'nuf said.

    5. Re:Enough already by denshi · · Score: 1
      Plain and simple, MySQL is faster and has multi-user (at the DBA level) support. It means different applications only get access to the SQL tables they need. It means you can give users their own databases easily. It's incredibly fast. All it lacks is a little transactional auditability and data integrity - for most applications run out here on the net, this isn't an issue, and if it is, you can normally work your way around it.
      You're not quite grasping the point here....

      Firstly, "MySQL is fastest" - a currently debated issue. I will not step into that mire.

      Next, "and has multi-user support" - everyone does. What's your point? Is it "different applications only get access to the SQL tables they need" - we have a words for that: schemas, tablespaces. Every DB out there has them.

      "You can give users their own databases" - Again, different schemas. But in MySQL, the system catalogs are page-level locking! How much slower is this multi-user solution than a real RDBMS?

      "and if it is, you can normally work your way around it" - you have a piss-poor understanding of concurrency. DB vendors & researchers & universities have been working for decades on this problem. Transaction integrity in a multi-user concurrent environment will not be written in CGI on a weekend.
      Please check your hubris and understand why we demand ACID compliant DBs. This stuff is *hard*.

  21. But SyBase? by YuppieScum · · Score: 4


    and it seems to me that this should be something 'standard' with any DB that is expected to handle non-trival amounts of data.

    Sybase has been the "standard" non-mainframe database in the financial world for many years, storing non-trivial volumes of data, and only in it's most recent version (11.9.2) has it had row-level locking.

    In fact, row-level locking is a requirement driven more by the number of users, size of each row, size of pages, and the frequency and speed with which any given row will be updated.

    Where users=>many, rowsize=>small, pagesize=>large, and update frequency/volume=>high, then row rather than page locking is required to keep performance high - otherwise processes get blocked waiting for a page to be released.

    Where the above are not met, then page-level locking is fine - as long as your design is sound. Row level locking is not a substitute for a good design.

    --
    This sig left unintentionally blank.
    1. Re:But SyBase? by hugg · · Score: 2

      It's been awhile, but I don't think MySQL even has page-level locking .. it has *table*-level locking. This means that you get many readers or one writer on a table at any given time. Someone correct me if I'm wrong, but I believe that's the sad truth.

    2. Re:But SyBase? by jonsmirl · · Score: 1
      Sybase ASE 11.0.3 for Linux is free for commercial use at: Get ASE

      This is a real, high performance, commercial quaility database. Why bother playing with a MySQL toy when you can have the real thing?

    3. Re:But SyBase? by Tower · · Score: 2

      >"You transaction have be choosen as the victim of a deadlock"

      Sounds like the instructions on those assemble-it-all-yourself kits from K-Mart...

      "Please be happy to waiting for most honorable deadlock to join the ancestors." ?


      --

      --
      "It's tough to be bilingual when you get hit in the head."
    4. Re:But SyBase? by Tassach · · Score: 2
      The financial market is the one area where Sybase has a market share lead over Oracle. In most other sectors, Oracle does have a larger user base.

      I would submit that ANY non-trivial RDBMS requires a highly-qualified expert-level DBA/Database Designer. Personally, I feel that Sybase is much more administrator friendly than Oracle. A "somewhat-qualified" Sybase DBA is less likely to hose the system than a "somewhat-qualified" Oracle DBA would be. A database designer has to take the idosyncracities of his target database into account when designing the schema -- this is true regardless of the RDBMS platform he is targeting. Unfortunatly, good database designers are a rare breed. It dosn't seem to be a subject which gets much attention in CS programs at the undergraduate level.

      --
      Why is it that the proponents of "one nation under God" are so eager to get rid of "liberty and justice for all"?
    5. Re:But SyBase? by f5426 · · Score: 1

      > users=>many, rowsize=>small, pagesize=>large, and update frequency/volume=>high

      and transaction => long (For short transactions, page-locking is not a problem as the page-wait will be very short. If each transaction do a single update, I doubt page/row locking would change much). Most financial transaction are short.

      Note that I still recall SyBase's (Paraphrased):

      "You transaction have be choosen as the victim of a deadlock"

      as page-locking give a much bigger potential for deadlocks.

      Cheers,

      --fred

      --

      1 reply beneath your current threshold.

  22. Re:Gee...high tech features here, eh? by baudtender · · Score: 1

    Well, the funny thing is that they have
    pre-announced these features, and say they
    will achieve them by using Berkeley DB as
    a sort of wrapper. I believe there's a
    version in beta now.

  23. Re:MySQL *IS* a Database by baudtender · · Score: 1

    >Replication, transactions, row-level locking,
    > stored procedures and triggers are NOT
    > requirements of a database.

    That's a red herring - the whole point of the
    discussion is MySQL's claim to be a _relational_
    database, which it isn't.

    > A few good reasons not to use triggers and
    > stored procedures are:
    >
    > 1) Performance
    > 2) Portability

    Them ain't a few, them's a couple, and half
    of them are wrong. When you use triggers and
    stored procedures, you aren't interested in
    portability. If portability is an overriding
    concern, you'd use ODBC and never use the
    server's native API at all. Of course, you'd
    do that at the expense of performance, which
    brings up the (dead wrong) second point.

    Performance is exactly why you use triggers
    and stored procedures. When used appropriately,
    there isn't any way to gain the performance
    enhancements they offer without using them,
    unless you like the idea of making all of your
    clients also behave as multi-threaded servers.

    It doesn't make a bit of difference where the
    code is stored, it's where it is executed that
    makes a difference in performance. If you
    don't grok that, you're missing one of the
    main benefits of client/server architecture
    versus client file-sharing.

    Your column flag work-around for row-level
    locking provides a textbook example of how to
    slow a database to a crawl. You need to read
    a good book on concurrency and deadlocks to
    know why you're scheme is disaster bound, e.g.
    (one of many) what happens when one of your
    clients crash after setting and before
    resetting your flag?

  24. Re:Hmmm this sounds exciting by Nicolas+MONNET · · Score: 2
    I do, but I've honestly never seen it happen. I've been using Oracle for a couple of month and I already had a major corruption problem.

    --

  25. MySQL Isn't A Heavyweight Database System by rabtech · · Score: 2

    If you need a super-heavyweight database system, go with Oracle, or MS SQL. (The latter will never happen, no matter how good SQL Server is because /. will never admit Microsoft may have a good product)

    Both are excellent database systems that support many more advanced features than just row-level locking, such as real-time English Natural Language Query systems.

    Remember: You get what you pay for. Don't use a free database system then compain when it doesn't scale as well as the big boys


    On a side note, IMHO the Dynamic locking on SQL Server works really well -- automatically adjusts to table, page, and row-level locking on the fly.


    -----

    --
    Natural != (nontoxic || beneficial)
  26. Re:MySQL *IS* a Database by chaillet · · Score: 1
    > That's a red herring - the whole point of the
    > discussion is MySQL's claim to be a _relational_
    > database, which it isn't.
    Glad *I* didn't claim that MySQL was an RDBMS.

    Triggers and stored procedures provide increased performance in specific situations. Thses usually involve very few client conections (not really enterprise class apps). Replication and mirroring aside (which you would only need for back up and fault tolerance, if you designed right) there should be only *1* data store, however, there are multiple clients. By concentrating your logic in the data store you are creating a bottle-neck instead of distributing the load across clients. This is why triggers and stored procedures are generally bad (for large apps). If you can't understand this, then there is nothing that can be done for you.
    > Your column flag work-around for row-level
    > locking provides a textbook example of how to
    > slow a database to a crawl. You need to read
    > a good book on concurrency and deadlocks to
    > know why you're scheme is disaster bound, e.g.
    > (one of many) what happens when one of your
    > clients crash after setting and before
    > resetting your flag?
    See above discussion. Distributing the load across *multiple* clients as opposed to a *single* data store REDUCES lag. As far as a client dying unexpectedly, see the original post, use a timestamp for the flag and use a timeout. If the lock's expired then tough shit for whomever set it.
  27. Re:MySQL != DB by johnnyb · · Score: 1

    PostgreSQL _IS_ a lot faster for some things, especially complicated selects. In addition, it has SERIALIZABLE transaction isolation support (email me if you don't understand how serializable differs from other transaction isolations), capable of views(why have a database without views?), allows you to create functions in PGSQL, C, or a few other languages, supports triggers and other wonderful things. For basic stuff, its not much slower than MySQL, and for complicated things, it is much faster. In all things, it is much more flexible.

  28. Re:fractured IP addressing scheme by mojorisin67_71 · · Score: 1

    I am not sure if C is the problem.
    Locking in a database is not implemented by 'locking pointers'. The 'pointer' address can be
    used to generate a lock object.

  29. Re:Mistakes are hard to clean up by zerovoid · · Score: 1

    (Notice: I am a fan of MySQL and use it myself)

    Even though I'm not familiar with Slashcode, i'm sure it would not be hard to transfer to another database package because of the Perl DBI 's generic database interface. As far as I know, you would just have to change up the connection code if Slashcode were written well.

  30. Re:MySQL is a DB by ZanshinWedge · · Score: 2

    MySQL IS a database, and a pretty damn good one at that. However, it is not a very sophisticated database. At one time, actually not THAT long ago, MySQL level databases were state of the art. Now, of course, the state of the art has been bumped up quite substantially. MySQL is still an excellent choice for many database needs, but obviously not all of them, especially in the "high end". Not everyone needs a Lamborghini that pumps out 450 horsepower, sometimes a VW bug works just fine, that's what MySQL is.

  31. wow by kaisyain · · Score: 3

    A Press Release about vaporware due out sometime in the next six months submitted anonymously.

    I can see why this is news.

  32. This is what's happening by johnnyb · · Score: 1

    MySQL is gaining popularity because it is so fast. The reason it is so fast is because it supports almost none of the features that people want in a RDBMS. It really is only useful for small datasets. Now people are trying to use it for larger datasets and more complex things, and finding out that they really do need those extras that normally come with RDBMSs. Once those things finally get implemented in MySQL, it will be just as slow as any other database. So, for large datasets where manageability is an issue - go for PostgreSQL - MySQL will make it there eventually, but Postgres is there now.

  33. mysql does support Transactions by Anonymous Coward · · Score: 1

    According to their documentation, the latest version supports transactions if you use Berkeley DB tables, albeit they still consider it to be alpha. See http://www.mysql.com/documentation/mysql/commented /manual.php?section=BDB

  34. Access by KyleCordes · · Score: 1

    For complex queries, Access's query engine / optimizer is actually VERY good. For complex queries, MySQL does a poor job; it can't do a lot of types of query feature, and does not optimize well.

    Of course, I have built web services on MySQL, not on Access.

    1. Re:Access by KnightStalker · · Score: 1

      I had to maintain a web site with ODBC/Access cgi scripts written in C and they were a real bear. If nothing else, the connection times for Access tip the scales in favor of *any* database server, no matter how slow. I've since rewritten the site to use MySQL and the database connections load at perhaps 100 pages/sec instead of 5.

      None of the queries are at all complex, however, so I can't say how well they compare in that regard.

      --
      * And remember, it's spelled N-e-t-s-c-a-p-e, but it's pronounced "Mozilla."
  35. MySQL != DB by Anonymous Coward · · Score: 2

    Until it supports transactions & row-level locking, why is MySQL called a database?

    1. Re:MySQL != DB by Speare · · Score: 2

      And Excel is called a spreadsheet, even though it really is an application that lets a user edit a spreadsheet. What's your point?

      People mix and match levels of metaphor all the time. Sometimes, a tool and its function ARE the same thing (Hand me that level, I don't think this table is level).

      If your mother wants to use the Internet because "it's included in her iMac," what's the point in correcting that level of semantics?

      --
      [ .sig file not found ]
    2. Re:MySQL != DB by ichimunki · · Score: 2

      Those are nice features for a database to have, but they are not necessary to join the database club. Can we save the semantic arguments for something important? I mean, if this isn't a database, what would you like us to call it?

      Note: I do not use MySQL, I use postgreSQL. Of course, I frequently use Perl to interface with it, and that's not really a programming language, so what do I know, huh?

      --
      I do not have a signature
    3. Re:MySQL != DB by tuffy · · Score: 1

      A database is any ordered collection of data. Thus, the /etc/passwd file is a database. Make sure not to confuse it with the various RDBMS terms which, taken as a whole, form a subset of actual database-ness.

      --

      Ita erat quando hic adveni.

    4. Re:MySQL != DB by istvandragosani · · Score: 1

      Careful with your terminology. PostgreSQL is no more public domain than Linux or Apache. Public domain means the product in question does not bear a copyright, like a piece of music written 200 years ago. PostgreSQL most definitely is copyrighted, and is distributed under the Berkeley Open Source License. Very different than 'public domain'.

      --
      Go not to the Elves for counsel, for they will say both no and yes
    5. Re:MySQL != DB by erc · · Score: 1

      So is MySQL, and it's a LOT faster. MySQL isn't PD, but it doesn't have to be. Oh, and don't bother referring me to those trumped-up "benchmarks" that were done by the PostgreSQL folks, they're obviously bogus.

      --
      -- Ed Carp, N7EKG erc@pobox.com PGP KeyID: 0x0BD32C9B What I'm up to: http://intuitives.mine.nu
    6. Re:MySQL != DB by jallen02 · · Score: 1

      Its not a LOT faster, in fact as soon as the connections and load get going MySQL performs like Linux and it chokes, PostgreSQL keeps on chugging.

      Jeremy

    7. Re:MySQL != DB by GypC · · Score: 2

      My bad... I was under the impression somehow that it was Public Domain, but I guess it's not.

      "Free your mind and your ass will follow"

    8. Re:MySQL != DB by Lennie · · Score: 1

      Try turning off sync, that'll help (afterall that's probably what mysql does).

      --
      New things are always on the horizon
    9. Re:MySQL != DB by dfetter · · Score: 1

      Speed is not the most important attribute a RDBMS has. >/dev/null has plenty of speed, but it's no damned good for keeping accurate records. Neither is MySQL.

      --
      What part of "A well regulated militia" do you not understand?
    10. Re:MySQL != DB by GypC · · Score: 2

      PostgreSQL is public domain... and it is actually a real RDBMS!

      "Free your mind and your ass will follow"

  36. Re:MySQL *IS* a Database by CorporateProgrammerD · · Score: 2
    True. Stored procedures and/or triggers are not required to store/retrieve data. They're not even required to meet the requirements of ACID.

    But they can be rather useful tools. They can facilitate information hiding, and provide an object-like (keeping some behavior with the data) feel to the application. They can also make management of multiple systems and applications somewhat easier.

    Let's say your company decides that the USPS just isn't good enough. The new policy is that all US customers get their shipments via UPS or FedEX. Suddenly all those "PO Box" addresses in the database are no longer valid.

    So what do you do? Do you rewrite that legacy order entry application used by division X? As well as the new order entry app used by the rest of the company? (And let's not get into why division X can't use the new app, it's not under your control. Life is unfair. Other people get their way sometime, even if they're idiots. Just deal with it.) What about the new Web interface that the Consumer Technologies department has just released? Let's not forget the software that the sales department uses to give price quotes. And the Customer Service app. How many developers will that take? How long will it take to roll out after QA approves all of the changes? How many desktops, laptops, and servers are affected?

    Personally, I'd just rather change one trigger or stored procedure on one or two servers. OK, so the QA people still have to test all of those different apps, but they'd have to anyway. This is still the easiest way to get it done.

    Can stored procs and triggers affect performance? Yes. Especially poorly written triggers.

    Can stored procs make it more difficult to migrate to another database? Yes, while making it easier to migrate the UI portion of the app to other platforms.

    It's a tradeoff. Often it makes more sense to put some (all?) of the business/application logic into the database. It doesn't always make sense. That's a design decision. While designing a system, I'd rather have more tools at my disposal, and pick the best combination, rather than having my hands tied.

    --
    To email, do the obvious.
  37. Re:Hmmm this sounds exciting by Cato · · Score: 2

    And make sure you do logical exports if possible, not just physical backups - it's a lot easier to spot and fix messed up data in a flat file.

  38. Sounds like it is about time by EFGearman · · Score: 1

    The title pretty much says it all. I am curious on why this hasn't been added before. I am not an expert on databases, but have worked with a few extensively, and it seems to me that this should be something 'standard' with any DB that is expected to handle non-trival amounts of data.

    Any ideas on why it took so long to add this?

    Eric Gearman
    --

    --
    Atomic batteries to power! Turbines to speed!
    1. Re:Sounds like it is about time by GypC · · Score: 2

      you get what you pay for

      Oh really?

      "Free your mind and your ass will follow"

    2. Re:Sounds like it is about time by Paradise_Pete · · Score: 1
      A moment's thought would show that the parent was not in the least off-topic. A bit crude, perhaps, but on-topic.

      Pete

    3. Re:Sounds like it is about time by erc · · Score: 1

      Nonsense. MySQL can handle tables with millios of rows of data. No transactions doesn't mean it's not a database any more than saying that a woman who's had a mastectomy isn't a real female.

      --
      -- Ed Carp, N7EKG erc@pobox.com PGP KeyID: 0x0BD32C9B What I'm up to: http://intuitives.mine.nu
    4. Re:Sounds like it is about time by f5426 · · Score: 2

      > Here's my guesswork:

      Here is mine:

      MySQL have been designed to be lightweight and fast for non-critical applications.

      Users of MySQL have happilly fit this definition, but now, more and more of them are going higher profile. Instead of migrating to a more adequate tool, they want to migrate the tool itself. IMHO, a bad idea.

      Locking is definitely not a trivial subject. I doubt that it can/should be implemented as an afterthought.

      Cheers,

      --fred

      --

      1 reply beneath your current threshold.

    5. Re:Sounds like it is about time by Anonymous Coward · · Score: 1


      MySQL is not a real database (no transactions).

      MySQL isn't expected to handle non-trvial amounts of data.

      As one poster noted before, you get what you pay for.

    6. Re:Sounds like it is about time by Skater · · Score: 3

      Well, if you read the MySQL home page, they clearly state that they created a database for their own use. Apparently, they didn't need the feature.

      Not everyone needs a total heavyweight database system. Since I'm the only one accessing my databases, I didn't even realize it didn't do row-level locking.

      Everyone is so harsh toward people who write a product and release it for free...I'm just glad these tools are available because it allows me to experiment and learn without spending thousands of dollars for hardware and software.

      --RJ

    7. Re:Sounds like it is about time by MartinG · · Score: 3

      > Any ideas on why it took so long to add this?

      Here's my guesswork:

      Probably until recently, the average MySQL user hasn't taken it seriously enough to rely on it for large amounts of data, so it was unneccesary or perhaps even undesirable - row level locking is _slower_ to a point for small data sets.

      More recently though, I expect more people are starting to use MySQL "seriously" as it matures, storing much more data and suddenly the need for row locking shows itself more clearly.

      It will still be slower for very small data sets, but thats a small price to pay for the scalability benefits row locking brings.

      --
      -- MartinG To mail me: echo kewyjlcxyzvjfxbqwh | tr bcefhjklqvwxyz .@adgimnoprstu
  39. MySQl concurrent user limitation?? by tcyun · · Score: 1
    I was told by a more seasoned database expert in our company:
    Before they tout MySQL as an industrial strength database, they might want to address the concurrent user limitation. One of the lessons I learned was that the concurrent user limit was low. That system was ported to Oracle.
    Can anyone with more experience comment on the verity of this?
    1. Re:MySQL concurrent user limitation?? by flec · · Score: 1

      Define 'low'.

      safe_mysqld -Omax_connections=1000 ?

      Now, I've not had to use more than that, yet, but still with about 600 (active) connections I found no issues with speed.

  40. Hmmm this sounds exciting by eeks · · Score: 1
    Allthouh I am doubting they will release on time. How would other people rank the its competition? Where does MySQL fit in. I just want other people's opinions -- I have my own. =)

    --
    niceFire.com - Humor and Lego's or Lego's and Humor or Some Combination of
    1. Re:Hmmm this sounds exciting by KnightStalker · · Score: 1

      Perhaps so, but it's about a thousand times faster than Access and, unlike a plain text file without large amounts of programming is able to handle multiple people writing to it at once. Access has its advantages, so do plain text files, and so does MySQL. Oracle it ain't, but it's pretty good at what it does. Why do people have this need to criticize it?

      --
      * And remember, it's spelled N-e-t-s-c-a-p-e, but it's pronounced "Mozilla."
    2. Re:Hmmm this sounds exciting by Delphis · · Score: 1

      Yes, exactly.. I do hope that they're not sacrificing the read-speed advantage that most people choose MySQL for.
      --

      --
      Delphis
    3. Re:Hmmm this sounds exciting by Nicolas+MONNET · · Score: 2
      I know you mean this as a flame, but as far as *code* stability is concerned (not talking about database stability -- which would require transaction to have any kind of meaning), I've never ever seen MySQL crash on me in like 4 years of using it ... quite impressive.

      Most ascii file schemes end up eating some shit usually. And Access ... BURP.

      --

    4. Re:Hmmm this sounds exciting by Delphis · · Score: 2

      Why do people have this need to criticize it?

      I have no idea and it bugs me too that the /. 'groupthink' is 'sucks to MySQL' .. assholes. Many people (myself included) like it for its simplicity and outright SPEED. If you want to have some dynamic content on a site - I'm not talking a full-blown e-commerce site, just some small stuff like .. OH, a discussion forum perhaps?? - then MySQL is great for the task.

      If you don't want to use it, noone is forcing you people.
      --

      --
      Delphis
    5. Re:Hmmm this sounds exciting by Anonymous Coward · · Score: 1

      MySQL ranks somewhere between Access & a plain text file.

    6. Re:Hmmm this sounds exciting by ppetru · · Score: 1

      This means that you are one of those lucky guys who didn't had to spend a couple a nights with isamchk, unwedging corrupted mysql tables.

      There's no silver bullet: I've seen MySQL, Postgres and Oracle eating my data. Be afraid, and backup often.

      --

      Petru
  41. Re:Enough with the database stories! by Anonymous Coward · · Score: 1

    Yeah, what's holding up our semi-daily :Cue:Cat story? It's almost lunchtime on a Monday morning and we haven't had a chance to mock Digital Convergence yet.

    hey, check it out, man, meeptool featured the Battlin' Siezure Robots! what next, goatse.cx?!!! heh heh heh.

  42. Re:ooooh yea. lets wait. . . by Anonymous Coward · · Score: 1

    It is important to note that mysql is currently one of the fastest db servers on the planet. Sure it lacks some features, but stuff like load balancing comes with time.

  43. Why wait for the next version? by brianvan · · Score: 3

    Just pony up the dough for Oracle in the first place, ya cheap fux0rs.

    Or, if you need something quick and dirty, go with the quickest and dirtiest of them all: Access. (that is, if you have a Windows box available)

    I'm being serious. MySQL has it's good uses, but if there's severe limitations in its use, why wait for it to get better? (if it will at all) I don't believe that the announcement is vaporware, but there's more problems with MySQL for serious usage than row-level locking. If you're not happy with it right now, I can point you to a handful of solutions that will fit your needs one way or another.

    And if you are happy with it right now... well, then nevermind, have a nice day.

    1. Re:Why wait for the next version? by brianvan · · Score: 2

      I know Access sucks a lot... I would never use it to power a website...

      I'd use it as a development tool, though. It takes bona fide SQL queries, and it is a database, so you can build some stuff around that and then just use another database as the real live thing.

      MySQL + PHP is great for websites. But then again, if that's true, obviously everyone's learned to live without transactions and row-level locking, eh? And if you need something more powerful than the current MySQL... well then you might as well step up to Oracle at that point anyway, rather than wait for a better MySQL...

    2. Re:Why wait for the next version? by Delphis · · Score: 1

      Yes, you and I have similar points of view it seems :) .. I've done a number of Access database efforts for previous employers but they're all pretty small-scale stuff as you well know. As we were talking about MySQL, I naturally thought of its uses in webpages, as I don't know who uses it outside of serving webpage content - it seems to be its 'raison d'etre' so to speak. Sure, Access is usuable for prototyping and the odd table re-jig, but beyond that I don't much care for it :D .. I do certainly agree about using Oracle or Sybase if you need that power. I think I said as much before. MySQL does well for serving of a lot of content quickly, reading is very quick (not to say that other dbs aren't fast - but we're talking raw efficiency here). If you want to have users edit that content (like a discussion group) it can work very well, if you're finding its slow because of the locking then move on to something else, yes.
      --

      --
      Delphis
    3. Re:Why wait for the next version? by Delphis · · Score: 1

      Access??? .. you're kidding right? :) .. I hope so as I had to laugh when I read that. Access sucks for data 'access' (no pun intended) via anything else than a windows visual basic program.. Some of us like to use databases to power websites, and an effective way to do that is MySQL .. PHP + MySQL is wonderful, if you want to do e-commerce then you want something like Sybase or Oracle .. but then, you wouldn't run an e-commerce site from an Access database would you... Jeez, I hope you're not gonna disagree with me on that one :D


      --

      --
      Delphis
  44. MySQL *IS* a Database by chaillet · · Score: 1

    Databases have 2 simple requirements:
    1) Reliably store data
    2) Reliably retrieve data

    Replication, transactions, row-level locking, stored procedures and triggers are NOT requirements of a database.

    However, MySQL *DOES* have full transaction support through the use of Berkley DB tables.

    A few good reasons not to use triggers and stored procedures are:

    1) Performance
    2) Portability

    Application code should be kept in the application, not the data store (which is what a database is). Those of you who feel that MySQL is not a real DB do not know what a real DB is. Your views are tainted by Oracle marketing.

    As far as row level locking goes; It can be easily implemented throught the use of a flag column in your tables. This can be used for passive or active locks. This flag could be:

    1) userID
    2) incremented integer
    3) time-out (DATETIME)
    4) userID+time-out

    Consider reading a products [current] documentation before you say what it can and cannot do.

    -- (my apologies for this semi-rant and poor speling) --

    1. Re:MySQL *IS* a Database by KyleCordes · · Score: 1

      I would do it the middle tier (business logic layer), hopefully affecting neither the front end presentation layer nor the database, and making it possible to apply that same piece of logic to different data backends.

    2. Re:MySQL *IS* a Database by SuiteSisterMary · · Score: 2

      Yup, the other way to do it is through middleware, generally objects. But at that point, your apps never touch the database anyway. And very rarely will you have seperate database backends that are running on different databases. In my experience, at least.

      --
      Vintage computer games and RPG books available. Email me if you're interested.
    3. Re:MySQL *IS* a Database by Malcontent · · Score: 2

      It's not a relational database unless it enforces referential integrity. MySql is not a relational database.

      --

      War is necrophilia.

    4. Re:MySQL *IS* a Database by Delphis · · Score: 1

      Yay chaillet!.. at least someone on /. has a friggin clue.
      --

      --
      Delphis
    5. Re:MySQL *IS* a Database by SuiteSisterMary · · Score: 2
      Replication, transactions, row-level locking, stored procedures and triggers are NOT requirements of a database.
      Correct. Some of them are requirements of being considered a Relational Database Management System. Others are just nice to have.
      --
      Vintage computer games and RPG books available. Email me if you're interested.
    6. Re:MySQL *IS* a Database by SuiteSisterMary · · Score: 2
      Application code should be kept in the application, not the data store (which is what a database is).
      Not exactly. It's a good idea to have all sorts of business logic in the database backend, to present transparancy in the front end. If all data going into column X need to have 5 added, it's better to do it at the database side than the app side.
      --
      Vintage computer games and RPG books available. Email me if you're interested.
    7. Re:MySQL *IS* a Database by chaillet · · Score: 1
      "Let's say your company decides that the USPS just isn't good enough. The new policy is that all US customers get their shipments via UPS or FedEX. Suddenly all those "PO Box" addresses in the database are no longer valid."
      My design practices:
      User Interface (HTML, GTK, etc..)
      Communications Layer (CGI, network, etc..)
      Application Layer (Business Logic, etc..)
      Data Store (DB, flat file, etc..)
      This (a well designed system) solves the above problem as well as countless others that may pop up. I understand that time-to-market is important to a commercial entity, but there is a price to be paid for any decision made during the design process (such as limiting the design process). A good design isolates the application's logic from the data store and UI; And the UI from the application logic.
  45. Re:MySQL is _NOT_ a database by maunleon · · Score: 1

    Of course, it is customary to bash M$ here. However SQL2000 is enterprise quality. Right now, if you are not running Oracle, MSSQL or DB2 you are not in the big leagues. Unless of course, you are running a proprietary solution.

  46. Re: So is NOTEPAD.EXE a database? by maunleon · · Score: 1

    It can store and retrieve data pretty reliably.

    Hey, MSSQL6.5 doesn't support row-level locking (well, it does insert-row-level locking, but i don't think it supports it on updates, for example)

  47. Re:Why lock a row when you can use a transaction? by maunleon · · Score: 1

    I don't think you understand what the purpose of locking is. Sometimes it may be desirable to lock at page level. Other times at table level. Other times at row level.

    transactions can let the dbms decide, but the dbms doesn't always pick the right locking mechanism for your application. How long do you hold the lock? On an insert, do you want a whole page locked, or just a single row?

    Row level locking can speed up concurency. Some DBMSs will escalate the locks for you, and some do a better job than others. But to say you never have a reason to lock, it's simply silly. Try writing a 200+ client application and not worying about locking.

  48. Re:Why don't they strip down PostgreSQL instead ? by Frank+Sullivan · · Score: 2

    PostGreSQL only allows *one* database per server, and doesn't have good inter-server communication. When asked about this, the PostGreSQL developer community responds that we should all just put everything in one big database, rather than splitting our databases up along functional lines and doing cross-database queries when needed. This goes against the way those of us raised on Sybase and other commercial databases were trained - and against good data modelling, imho.

    That is the #1 gripe we have against PostGreSQL, and one of the main reasons we're using MySQL instead. While feature-rich, the design of the engine interferes with what we understand as good data model architecture.

    The gripes against MySQL are missing features - better locking, transactions, stored procedures, and triggers. We learn to cope with them. And PostGreSQL doesn't offer stored procs at all, and requires triggers to be written in C - ugly, ugly, ugly. It ain't that much better, and in some ways it's worse.

    --

    --
    Hand me that airplane glue and I'll tell you another story.
  49. Update Slash then? by ericdano · · Score: 1

    Does this mean that the Slash gurus will come out with Slash 1.0.10 to allow Slash to work with the latest version of MySQL?

    --
    It's either on the beat or off the beat, it's that easy.
    I moderate therefore I rule!
    --
  50. Re:Row locking is already implemented - here's how by maunleon · · Score: 1

    Pretty silly. You have locking problems deleting from your locks table. :) It is also very expensive. We use up about 70,000-100,000 row locks in a current schema. If the application implemented locks in a table, it would slow to a crawl.

  51. "NuSphere, a Progress Software Company" by Earlybird · · Score: 2

    Does anybody else here find it horribly fascinating that Progress -- creators of Progress (a high-end, commercial RDBMS), WebSpeed and SonicMQ -- is expending time, effort and money in developing and marketing MySQL, a rival RDBMS?

  52. Re:MySQL is _NOT_ a database by Scareduck · · Score: 1
    Sorry, this is just BS.

    You can't run MSSQL in a colo facility. Remote access is of the "not enough, too slow" variety. Sorry, the Russian Hacker variety doesn't count. I know 'cause a friend whose company got bought out ended up having to make a colo decision (they wanted his servers in their colo), and rather than do that with NT+IIS+ASP+SQL Server, he migrated to RedHat+Apache+Perl+MySQL, and has an order of magnitude improved performance.

    --

    Dog is my co-pilot.

  53. Re:Why don't they strip down PostgreSQL instead ? by dentldir · · Score: 2

    I believe your information here is out of date. PostgreSQL offers stored procedures using pgpl/sql and handles multiple databases per server just fine. I'm not sure about cross database queries as I haven't tried any.

    If you haven't looked, PostgreSQL 7.0.2 is worth a look if the last version your worked with was 6.x.

  54. Why don't they strip down PostgreSQL instead ? by f5426 · · Score: 5

    (Go on. Moderate this as flamebait. It is probably one)

    I never understood why people have to re-invent the wheel every time.

    Linux is slowly re-implementing what FreeBSD already have, (vm, or kqueue), and now MySQL is trying to turn itself into a real DB, althought it doesn't have the the foundations for this.

    If someone (ie slashdot) have a problem with the absence of row-locking, then he shouldn't use MySQL at the first place. Maybe it is just me, but I would be more enthousiast to a 'optimise PostgreSQL' then to a 'compexify MySQL'. Probably because premature optimisation is the root of all evils.

    Or maybe because the concept of a non-ACID (basic ? :-) ) database make me barf...

    Cheers,

    --fred

    --

    1 reply beneath your current threshold.

    1. Re:Why don't they strip down PostgreSQL instead ? by danpbrowning · · Score: 1

      You are so out of date it's not even funny. When was the last time you ran pgsql, on your 8086?

      --
      Daniel
    2. Re:Why don't they strip down PostgreSQL instead ? by maraist · · Score: 2


      And PostGreSQL doesn't offer stored procs at all, and requires triggers to be written in C - ugly, ugly, ugly


      You can write them in TCL, Perl, SQL, PSQL, .... You just have to install the proper interpreter and bind the language..

      Granted, non-C stored-procedure support is very limited (compared to Sybase or Oracle).

      As other posted, a "server" can maintain multiple DB connections, though to my knowledge it is still impossible to perform inter-DB selections.. I don't think that Mysql can do this though, so the point it moot.

      -Michael

      --
      -Michael
    3. Re:Why don't they strip down PostgreSQL instead ? by Tuxedo+Mask · · Score: 1

      Slashdot can be fast because the underlying database is not a RDBMS. Not having transaction, or locking give you an order of magnitude performance increase.

      Read again what Taco wrote. Slashdot does lock, as it must if each attempted post ends up mapping to a unique id. Apparently the only way to do this with MySQL is to lock all of the tables you're updating.

      In principle, you can speed things up by having a table for each story. However, that is the most unclean fuckhead dumbass model I can imagine, and I would not implement it if you paid me anything less than one million USD.

      There are ways to make a real database fast. That's why Oracle engineers and good DBAs pull down the big bucks. I respect MySQL and Microsoft Access for what they are: cute toy databases. I use MySQL to catalogue my CDs. They're casually useful in the same way that spreadsheets and perl are.

      But if you want something that actually works, it really is worthwhile to use a fully-featured rdbms. that actually works,

    4. Re:Why don't they strip down PostgreSQL instead ? by maraist · · Score: 2

      I never understood why people have to re-invent the wheel every time...

      Maybe it is just me, but I would be more enthousiast to a 'optimise PostgreSQL' then to a 'compexify MySQL'.


      It's like saying, why bother with XML when we have relational database at our disposal.. Not all solutions fit all problems. For some people, a simple hash-table lookup is all that's needed (berkly hashes, for example). For others, a simplied data comparator is needed, e.g. MySql. For others, data-integrity is needed, i.e. Postgres or commercial apps.

      Mysql has speed as a stated goal.. They've hinted that they might implement Foreign keys soon, but ONLY as an option that can be implemented in such a way that it does not hinder performance one iota (see goal number 1).

      It's not reinventing the wheel.. It's learning that not all wheels fit all vehicles (see bicycle verses formula-one racer).

      I'm not sure about all the stated goals of PostgreSQL, but it seems to have, as it's goal to be a top performer with standards compliance - To be an all around champ. It can't win on all fronts / you have to make design choices. Postgres opted for version controlling rows instead of row-locking, it opted for one process per client instead of multi-threading, it opted for one file per meta data-entity, etc.

      I use to use Mysql until my work expressed concerns for Data-Integrity. Now we use a mix of Oracle and Postgres (depending on the target app). The inability to perform several basic standards-based SQL operations in Mysql was very daunting. Roll-back was a critical issue, for example.

      But, if I were a small-time ISP selling PHP and DB services, I'd go for Mysql.. Less overhead for me in terms of memory and CPU cycles.

      In the Mysql documentation, it says that you can "learn" to work around the limitations of Mysql. Meaning that there are successful programming practices. Such is the case with Slashcode I'm sure. But from a business standpoint, it's difficult to justify the use of limiting technology, when there are other alternatives..

      Performance-wise, Mysql has little overhead, and a small incremental cost, where-as Postgres has a decent amount of overhead and a moderate incremental cost. You'd think Mysql would come out on top, but Benchmarks [an old slashdot post] suggest that Mysql is unstable beyond a certain load level. Beyond that, if you use table locking, then you do not scale at all. Row-locking is slow for the big guys like Sybase (which I know much about). You take a hit on EVERY access just so that you can claim that you have regional locking, which facilitates concurrent access. Postgres side-stepped the issue (beit it for good or bad) through version-based rows, so they get to have a closer-to-linear performance curve.
      --
      -Michael
    5. Re:Why don't they strip down PostgreSQL instead ? by Captain_Frisk · · Score: 1

      You bring up an intersting question. Why is slashdot using MySQL? I know that its free, but for amount of traffic that slashdot recieves, why not use a more robust tool?

      I'm impressed that slashdot is able to operate as fast as it does given its impressive user base. Somewhere in a closet somewhere must be some pretty impressive machinery.

    6. Re:Why don't they strip down PostgreSQL instead ? by f5426 · · Score: 1

      > but for amount of traffic that slashdot recieves, why not use a more robust tool?
      [...]
      > I'm impressed that slashdot is able to operate as fast as it does given its impressive user base

      You sorta answered your own question (more robust==slower). Slashdot can be fast because the underlying database is not a RDBMS. Not having transaction, or locking give you an order of magnitude performance increase. But this only work if you can stand little data integrity problems (for instance reading data that is not fully written, or is already deleted) .

      MySQl was done for this. Buidling very fast solution at the expense of the integrity. You should not run you bank account on MySQL, but you can use it to track karma. That's why I feel that 'improving' MySQL into a more robust system may be a philosophy/design error.

      And, no, duplicate stories on slashdot are NOT due to lack of row locking. :-)

      Cheers,

      --fred

      --

      1 reply beneath your current threshold.

    7. Re:Why don't they strip down PostgreSQL instead ? by pauldy · · Score: 1

      I think mysql is perfectly suited for most applications the web has to offer currently. I wouldn't trust it for my banking or trading but It does do great for most applications. I think you said tables when you meant rows. And how do you decide how much functionality is to much for a given application do you have any metrics you can share that allow you to make the supervious decision on what rdbm is "full featured" and quik enough to do what you need.

  55. Re:Competitors by gdewis · · Score: 1

    Row locking in Oracle is automatic. A modified row in Oracle is always locked exclusively until the transaction holding the lock is committed or rolled back.

  56. Why not.. by vr · · Score: 2

    Why not use a real RDBMS like Borland InterBase. </flamebait>

    .. and yes; it is opensource.. :)

    1. Re:Why not.. by kordless · · Score: 1

      Because there is *very* little coding going on with Interbase right now. The amount of support provided is quite a bit less than MySQL, which makes it harder for people just getting started with db system.
      <p>
      Kord

    2. Re:Why not.. by vr · · Score: 2

      It is still better than MySQL, and it can actually handle large quantities of data pretty good.

      If MySQL doesn't fit your needs, don't use it.

    3. Re:Why not.. by nano2nd · · Score: 1

      That's right. Don't just choose a product based on how many other people use it - if everyone did that, it'd be a very boring world.
      fyi, I have a >20GB Interbase DB...

  57. Um, where have you been? by Anonymous Coward · · Score: 1
    Yes. Sure. Thats exactly the same reason that Apache is running 60.02% of the webservers in the world. But, hang on, Apache is free.

    But you get what you pay for, dont you. And we all know how unreliable and unstable apache is, right? You had better go and shell out some cash to Netscape or somebody else if you want a reliable webserver. Please!

    Just because Mr Ellison wants to drink your blood after he has raped your bank account, does not mean that his product is infallible. Having said that, anybody who knows their db's would have to agree though that Oracle does do a rather nice job.

    But I will support MySQL till the day it bombs out and is not recoverable (this has not happened to me in 5 years). I will do it simply to say fuck you to Larry and simply because I cannot afford to buy him a new tennis court and simply because if we all support MySQL now, one day when transactions, stored procedures and row-level locking are implemented we can all take the money we saved by not buying oracle and have a big party and not invite the fools who still think that if you pay peanuts you get monkeys.

    Lets all say it together: O-P-E-N--S-O-U-R-C-E.

    1. Re:Um, where have you been? by Paradise_Pete · · Score: 2
      Lets all say it together: O-P-E-N--S-O-U-R-C-E.

      Wait! I wasn't ready.
      Dang, I'm always missing out.

      Pete

  58. Why lock a row when you can use a transaction? by TurboRoot · · Score: 4

    I use PostgreSQL myself, and I never have to lock rows, its done automaticly for me by transactions. Mysql team has stated many times adding things like this requires almost a complete re-write of the database to make it work. It works well in PostgreSQL because rows are never deleted. They are appended when updated, and the old rows are still available. When no clients are connected that are using the old rows in a current transaction, it deletes the old rows the next time it finds it. Pretty simple, and it works fast. I am not another lamer saying, hay use PostgreSQL its cool. I am saying, it works. Derk

  59. Re:Try Postgres then - free and its a real DB by iMMersE · · Score: 1

    Why not use Postgres? It's a real database, real locking etc., commits/rollbacks (called "Transactions" to you msql/mysql boys) and it doesn't have a communist licence.

    OK, I concede it doesn't have "real locking", but check out the MySQL site and you shall see that "commits/rollbacks (called 'Transactions' to us msql/mysql boys) are there, and the communist license is actually the GPL.


    .iMMersE

    --
    codegolf.com - smaller *is* better.
  60. MS SQL by TheInternet · · Score: 2

    If you need a super-heavyweight database system, go with Oracle, or MS SQL. (The latter will never happen, no matter how good SQL Server is because /. will never admit Microsoft may have a good product)

    MS SQL may or may not be a good database (it must be better than Access, right? :), but it only runs on NT/W2K, and that's a deal breaker for me.

    - Scott

    ------
    Scott Stevenson

    --
    Scott Stevenson
    Tree House Ideas
  61. MySQL IS a database by jackmc · · Score: 2
    So what if it doesn't support transactions? It is faster because it doesn't. IMHO, a good programmer should be able to program with or without transactions. In most cases where one needs transactions, it isn't too difficult to write the code around it, and often have it work better than transaction based code (especially with MyISAM table, which don't have the transaction capability slowing them down).

    Again IMHO, transactions are a crutch. At times, they are a useful crutch, but a crutch nonetheless. There is an excellent chapter (appendix?) in the MySQL manual discussing the absence of transactions and some of the workarounds.

    Row locking is a whole 'nother issue. While you can implement row-locking with atomic SQL statements, it is more efficient for the DBM to do this. Besides, locks need to go away when the connection goes away, which manual locks do not. MySQL could fix this by allowing a connection to provide a query or queries that the server should always execute when the connection is closed, so that if something disrupts the connection, manual locks can be removed...

  62. Pony up for Oracle by dws · · Score: 1

    Unfortunately, Oracle is priced such that a mere pony won't suffice. They want most of the horse in the stable.

    1. Re:Pony up for Oracle by Malcontent · · Score: 2

      Two year per mhz licenses are pretty damned cheap especially when considered against ms-sql. With ms-sql you'd have to upgrade every two years anyways as MS does not support older software. OTOH why pay at all? Postgres, interbase, and sapdb are all open sourced.

      --

      War is necrophilia.

  63. Re: Errata by KnightStalker · · Score: 1

    er, I should say "*the pages with* database connections :-)"

    --
    * And remember, it's spelled N-e-t-s-c-a-p-e, but it's pronounced "Mozilla."
  64. SHOW ME THE CODE by Snowfox · · Score: 2

    Can we please not give notice/publicity to announcement-of-intent from companies? Show code, then collect your kudos and marketroid credits.

    Unchecked, this could turn into a constant shower of press releases from hundreds of companies wanting a piece of the Linux pie. And when the majority amount to nothing, as most of these seem to, it just makes Linux look bad.

  65. Re:The real reason for this... by tweek · · Score: 2

    I've just started messing about with Interbase a bit and I find it to be extremely nice. I'm not a database geek by any means but Interbase provided somethings that I'm used to from my previous Oracle experience. Basically this boils down to what different people THINK a database should or should not have. MySQL leaves most things (like FK's, triggers, etc) to allow for greater speed.

    --
    "Fighting the underpants gnomes since 1998!" "Bruce Schneier knows the state of schroedinger's cat"
  66. Re:The real reason for this... by h3x0r · · Score: 1

    Remember Delphi? Remember Kylix? What planet do you live on?
    ---

    --
    GetSystemMetrics(SM_SECURE) == FALSE
  67. Row locking is already implemented - here's how: by Anonymous Coward · · Score: 3
    As a mather of fact, it's very easy to implement row-level locking using any database engine that support unique-key indexes.

    To do that, just create a new table called "locks" with 2 fields:

    resource_name: char[80]
    user_name: char[20]

    and create a unique index on resource_name.

    In order to perform a lock on a specific resource, like a table row, you just have to do this:

    insert into locks values( "TABLENAME:ROWID", "USERID" );

    Where TABLENAME is the name of the table and ROWNUNBER is the number/ID of the row you wish to lock.

    If this resource wasn't locked yet, then a new row will be inserted in the locks table.
    However, if this resource was already locked, then it would create a duplicate entry in the resource_name column that would violate the unique index.
    This way, the unique index would stop INSERT from inserting this line into the locks table.

    You can create a very simple lock( table, rowid ) using this insert, that would return true if INSERT worked OK and false when INSERT fails.

    To unlock a resource, you just have to remove the respective row from the locks table.

    delete from locks where resource_name="TABLE:ROWID";

    The user_name field can be used to clean all locks that were active when a user connection drops.

    delete from locks WHERE user_name="USER";

    This works becuase insert will check for duplicates in unique indexes in an atomic operation.

    You simply cannot have two persons inserting the same lock in the locks table, because insert is ATOMIC.

    fjp_at_linuxstart.com

  68. Re:fractured IP addressing scheme by h3x0r · · Score: 1

    ..or Delphi.
    ---

    --
    GetSystemMetrics(SM_SECURE) == FALSE
  69. Re:Try Postgres then - free and its a real DB by Redundant() · · Score: 1

    Is Postgres the only DB that will run on Linux and does rollbacks? There must be others, I would imagine journaling is a must have for serious work.

  70. Re:Doubleclick on /. by h3x0r · · Score: 1

    It's not really of concern, soon they may stop, as probably 70% of slashdot readers block doubleclick one way or another anyways (I do).
    ---

    --
    GetSystemMetrics(SM_SECURE) == FALSE
  71. Re:ph34r my forumz engine! by h3x0r · · Score: 1
    Heh, or Ultraboard, the worst forum software ever.

    Kudos to you for writing or own, and kudos for using PHP, the Web Programming Language of the Gods (akin to Object Pascal, The Programming Language of the Gods).
    ---

    --
    GetSystemMetrics(SM_SECURE) == FALSE
  72. Re:Never, but... by spachev · · Score: 1

    What do you mean, MySQL has no staff to speak of?
    We do - I am part of it, and this is my full-time job. We spend quite a bit of
    time answering questions and fixing up systems of
    our customers in addition to developement.

    --
    MySQL Developer
  73. The *magic* of transactions and row-locking ... by Bezanti · · Score: 1

    It's incredible how people buy the marketroid BS about rdbms systems.

    What are transactions anyway?
    It simply means that when you store:
    (85, "some other data")

    it gets stored:
    (23, 85, "some old data")
    (32, 85, "some data")

    With 23 and 32 the transactions that have created the data.

    After a while, transaction 23 gets sweeped (=deleted) by some sweeping process.

    In the meanwhile, as long as transaction 32 has not been committed, all the other transactions 23,24,25,..., 33,34, ... will not see "some data" but rather "some old data".

    SELECT COL1,COL2 FROM T1
    conceivably becomes (optimized rather than in bland SQL)

    SELECT COL1,COL2
    FROM T1, TRANSACTIONS
    WHERE T1.TRANSID=TRANSACTIONS.TRANSID
    AND TRANSID >=
    (SELECT MAX(TRANSID) WHERE COMMITTED=TRUE)

    Of course, in a pointer arithmetic oriented system language like C, this stuff would go very fast, but rather hard to implement too.

    Unfortunately, we need this speed rather badly, on the relatively slowish hardware of today.

    Row-locking is very similar, with some in memory table getting consulted before touching a particular row (can you smell the overhead?) and transparantly having a column in every table that uniquely numbers the rows.

    MySql blazes, faaaast, because it does not implement the overhead for this. If you implement the table transaction, and the table rowlocks (preferably somewhere in-memory), you've got transactions and row locks implemented anyway.

    If they build it into MySql, you cannot get rid of the overhead any longer, if you don't need it.

    I guess the solution could consist in turning Mysql into some db framework with adaptor classes, mostly written in something higher level (like compiled GCJ Java), and then supply your own adaptor classes that implement the additional features that you need for a particular project. Note, however, that MySql wouldn't be as fast any longer, and therefore lose much of its appeal in the process.

  74. Why all the fuss? by drumsetdrummer · · Score: 1
    MySQL is a database. No, it's not an RDBMS. It's not BS either. MySQL is perfect for creating blazing fast dynamic Web pages if a database file isn't more than 100MB and/or the data isn't mission critical. Oracle has way too much overhead for dynamic pages in those situations. Plus if you're a small to medium sized business you really can't afford Oracle and don't need it anyway.

    Oracle certainly is awsome though when you are a mulimillion dollar corporation with vast amounts of data. Oracle and MySQL can't really be compared because they really serve different markets.

  75. Doh! - PostgreSQL by Colin+Smith · · Score: 1



    http://www.postgresql.org/

    And, yes, this is flaimbait.

    --
    Deleted
  76. Re:The real reason for this... by Delphis · · Score: 1

    I believe that's all called 'Inprise' now, instead of Borland.
    --

    --
    Delphis
  77. Re:Grammar Police by grammar+nazi · · Score: 1

    I couldn't have said it better myself. Thank you bazxissimo.

    --

    Keeping /. free of grammatical errors for ~5 years.
  78. Re:hah! free software at its best by scotteparte · · Score: 1
    Oh, of course. Why didn't I think of that? Use the 15GB dinosaur of all RDBMS's to run a multiuser threaded comment system! I'm sure that at 100,000 users, you won't run into speed issues.

    I've worked with Oracle extensively; it's nearly failsafe, and handles inserts well, but it's slow as balls. Good for sensitive transactions on low-traffic sites, but if you want real RBDMS power with speed, only PostgreSQL offers it.

    That is, unless you're just dying for the cool CTX stuff that Oracle offers. 'cause that just rocks.

  79. Re:Doubleclick on /. by Gothmolly · · Score: 1

    My junkbuster proxy has been blocking more and more of slashdot ads lately. And I haven't changed its filter rules. So to me, this is a sign that slashdot is moving more and more to "mainstream" web-ads just like any other free website. Good or bad? You decide. Not a problem here, junkbuster prunes them all out anyway.

    --
    I want to delete my account but Slashdot doesn't allow it.
  80. Re:MySQL is _NOT_ a database by scotteparte · · Score: 1

    Watch what you say, sxpert, M$ may sue you for breach of EULA for mentioning those benchmarks. Oracle found that one out the hard way.

  81. The real reason for this... by Maddog_Delphi97 · · Score: 2

    Is because Borland has open-sourced parts of the Interbase engine...

    Speaking of which, has anyone test-driven the open-source version of Interbase (In either the Windows or the Linux)? How good is the source code?

    1. Re:The real reason for this... by atrowe · · Score: 1

      I didn't think Borland existed anymore. Didn't they get bought out? Remember TurboPascal?

      --

      -atrowe: Card-carrying Mensa member. I have no toleranse for stupidity.

  82. Slashdot always freezes because of one piddly post by AFCArchvile · · Score: 4
    It's how I know that someone's posting a reply to one of my posts: if it takes longer than 2 seconds to navigate to my users.pl, then someone's probably replying.

    Of course, there's Bender: promises, promises. However, Bender still puts random spaces into long A HREF tags, so I can't refer to long URLs like Boston Globe pages. For such a good discussion site, Slashdot has some bad code issues.

    --
    "Ancillary does not mean you get to rule the world." --U.S. Circuit Judge Harry Edwards, speaking to the FCC's lawyer
  83. Re:Row locking is already implemented - here's how by Bezanti · · Score: 1

    How many times do you think you will find the code:

    EnterCriticalSection(cs);
    ... dosomeupdate ...
    LeaveCriticalSection(cs);

    in any database source code?

    I guarantee that it's all over! and it does nothing more or less than stopping all other threads! So everybody shuts up while this particular guy is speaking. When it's a process per user instead of a thread per user, you see mutexes acquired all over the place.

    For any practical purpose a single writing table-touch practically always means a table-lock.

  84. Re:fractured IP addressing scheme by h3x0r · · Score: 1

    Okay, freepascal.
    ---

    --
    GetSystemMetrics(SM_SECURE) == FALSE
  85. working around transactions? by bad-badtz-maru · · Score: 1


    How do you "work around" lack of transactional support (as quoted from the original post) aside from just not using transactions? When multiple updates must all complete in order to maintain data integrity and your code craps out after the first x, what mechanism is going to prevent the subsequent mess? Back in the late days of dbase there was code that tried to mimic transaction support using exception handlers and such, but if your code flat-out craps completely out, you are screwed.

    Maru

  86. Re:This is good by Stephen+Samuel · · Score: 2
    ...everyone knows, you get what you pay for.

    Yeah, right. tell that to MS. I think that we can be clear that what you (don't) pay for a product is not necessarily related to the value/power of the product.

    You don't get what you pay for, you get what you choose, then you pay for your choice.

    mySQL is not (currently) being touted as a real alternative to Oracle for large databases. It has it's uses, and that's not one of them.
    `ø,,ø`ø,,ø!

    --
    Free Software: Like love, it grows best when given away.
  87. Why lock at all? by Dion · · Score: 2

    Why lock AT ALL when you can use InterBase?

    Interbase doesn't lock anything, it simply makes a new version of the row that becomes the current when the transaction is comitted.

    MySQL is, IMHO, a piece of crud compared to ANY real DBMS, as it doesn't have any of the features that are needed in a database (like foreign key constraints or transactions)

    That said, if you don't compare MySQL to flat files it does come out on top, it's pretty neat as a structured storage, but it sucks so badly when you have more than one table that needs to be in a consistent state.

    InterBase is *VERY* nice and pretty fast, but it has rusted quite a bit from v4 to v6 and it's DBD was completely useless until quite resently, after lots of hacking it rarely deadlocks now, but it (IB) is quickly on it's way out of our setup.

    For a REAL database that scales the pants off anything that is Free software today (it can support SAP R/3 with it's 16000 tables) check out SAPDB:
    http://www.sap-ag.de/solutions/technology/sapdb/ index.htm

    I's set to come out under GPL(!) in April next year, but I've been using it for a while now and it seems to be a *really* nice DBMS.

    --
    -- To dream a dream is grand, but to live it is divine. -- Leto ][
  88. Re:Row locking is already implemented - here's how by SuiteSisterMary · · Score: 4

    You are aware that due to the way MySQL works, while a record is being inserted/updated, no other record in that table can be touched, yes? This is a programmed behaviour. It's not that it can't do row locking so much as it DOES do full table locking, and naught else.

    --
    Vintage computer games and RPG books available. Email me if you're interested.
  89. Please explain by h3x0r · · Score: 1

    How you can work around no transaction support? That's BS and you know it. There is no real workaround.
    ---

    --
    GetSystemMetrics(SM_SECURE) == FALSE
  90. Re:plz die tks by h3x0r · · Score: 1

    No it's not. It's stupid IRC shit. Go away, stupid IRC shit.
    ---

    --
    GetSystemMetrics(SM_SECURE) == FALSE
  91. MySQL rocks - but Frontbase looks pretty good too! by kordless · · Score: 1
    I've had the chance to research a lot of db systems lately and although I love MySQL, no row locking and the lack of transactions is a drawback. I'm thrilled that they will now support it, but in the meantime you might want to check out Frontbase. They really have it going on (just got vc money too) and they have been SUPER helpful in answering our questions.

    Realtime, distributed indexing of the Internet. Coming soon!

    Kord

  92. Re:Never, but... by AFCArchvile · · Score: 1
    ...have you heard of the support horror stories about Oracle? Check out some of these tales of woe; I don't know where, but I've heard a lot of griping over Oracle's staff.

    Of course, MySQL has NO staff to speak of (other than the development team), but still, you get what you pay for.

    --
    "Ancillary does not mean you get to rule the world." --U.S. Circuit Judge Harry Edwards, speaking to the FCC's lawyer
  93. Grammar Police by baxissimo · · Score: 2
    Anyone who's used MySQL for anything with more then a few hundred thousand records ... when your whole DB freezes because of one piddley write, its more then just a little annoying.

    I can deal with slashdot repeating the same story a few times, but when CmdrTaco repeatedly abuses the English language, it's more than just a little annoying. :-P

  94. Enough with the database stories! by AFCArchvile · · Score: 1
    Are we going to hear something equally as trite about PHP next? Ugh.

    Find something decent to report on, like the ATI Radeon problem with the capacitors breaking off.

    --
    "Ancillary does not mean you get to rule the world." --U.S. Circuit Judge Harry Edwards, speaking to the FCC's lawyer
  95. fractured IP addressing scheme by Bob+Abooey · · Score: 3

    The real problem lies within the addressing scheme that the C language uses. As we all know MySQL is written in C, which is the proper language. However C doesn't really have arrat's they are laid out in a linear manner in the heap of your program. So we need to be able to do pointer arithmaic when we access a row in the database. Yes, this is ultra fast, but the dangers are great. Say for example I have a mutex on J in the following schema: data [j][k], then it is vital for me to lock that row with a simple ((j * data) * k * sizeof(data)). Pretty simple no, but the problem is that you cannot lock a pointer. I think they will have to re-write MySQL in java to fix the problem.

    --

    All the best,
    --Bob

    1. Re:fractured IP addressing scheme by Denial+of+Service · · Score: 1
      You, uh, forgot to close your tag. The simple lack of a "/" prior to the second "ren" will now cause the remainder of the page to also fall under the text modifier, unless, of course, there is an orphaned somewhere else... doubtful at best.

      Surely you can see how this is bad news. Please fix. Tx.

      ---

      --

      ---
      Slashdot: News For Zealots. Stuff That's Hypocritical.
  96. SAP isn't a database.. by Pengo · · Score: 2


    It's a application built on top of a database. and 1600000 tables is hardly a fair comparison. You can have 10,000 tables in mysql and not have a problem.

    SAP runs great w/MS SQL Server or Oracle.




    --------------------

  97. Re:ooooh yea. lets wait. . . by scotteparte · · Score: 1

    Hey there, muppet, I just went to tpc.org and noticed something funny: they don't benchmark MySQL at all! In fact, they don't do PostgreSQL either. Your benchmark site looks like a pay-db only club.

  98. I know I could use by iiiFEAR!!! · · Score: 2

    some low level rocking.

    --
    "First rule of government spending: Why build one when you can build two at twice the price?" -- Mr. Haddon, Contact
  99. Re:hah! free software at its best by Daath · · Score: 1

    I would, but I can't afford a 1500 UPU perpetual license for Oracle (2x500Mhz RISC = 1500 UPU = US$ 22.500,-) *sigh* I need another alternative. Not mySQL, not Oracle, something else... What?

    --
    Any technology distinguishable from magic, is insufficiently advanced.
  100. Mistakes are hard to clean up by ^chuck^ · · Score: 1
    Imagine your Rob in college and making this website in your spare time. Slowly it grows, and before you know its the end all be all for Open Source groupies and trolls. You choose MySQL because its easy, and readily available.

    How the hell do you port that to another DB program easily, think about the sheer size of slashdot, or any other website stuck on one type of DB. That's why he's excited and not changing. Myself, I'm working on making a dynamic website and im using mysql right too, because its there, no other real reason.

    So for all of you who want slashdot to use a _real_ DB, download slashcode and change it, its there, I bet Rob (and I) have bigger problems to worry about.

    No I don't know him personally, but neither do you

    --

    Lemure, wtf! Don't you mean Lemur?
  101. how does PostgreSQL compare to Firebird? by Tumbleweed · · Score: 2


    Anyone got any experience with both they'd like to share?

    How do they compare with MySQL w/ Berkeley DB tables?

  102. Duh, but this is the first step in making it one by flimflam · · Score: 1
    So what exactly is your point?

    It's an open source project -- if someone wants to do the work to turn it into a more serious product do you have a problem with that?

    As one poster noted before, you get what you pay for.


    So PostgreSQL and InterBase are basically worthless as well, I take it?
    --
    -- It only takes 20 minutes for a liberal to become a conservative thanks to our new outpatient surgical procedure!
  103. Grammar is Great!™ by Anonymous Coward · · Score: 1

    ...when your whole DB freezes because of one piddley write, its more then just a little annoying.

    When Slashdot makes elementary grammar mistakes like these, it's more than just a little annoying.