Forgot your password?
typodupeerror
Google Businesses The Internet Databases Programming Software IT

Google Releases MySQL Enhancements 208

Posted by CmdrTaco
from the what-an-exciting-morning-this-isn't dept.
An anonymous reader noted that "Google has released its internally developed enhancements to MySQL to the open source community this week. Changes include improvements in replication, high availability configuration, and performance." It'll be interesting to see if the changes they made are of interest to other places using MySQL.
This discussion has been archived. No new comments can be posted.

Google Releases MySQL Enhancements

Comments Filter:
  • Great! (Score:5, Insightful)

    by glwtta (532858) on Wednesday April 25, 2007 @11:22AM (#18870971) Homepage
    Did they fix that thing where it always sacrifices data integrity for speed?

    (I'm not even trolling, I do want to know if they fixed that)
    • Re:Great! (Score:5, Insightful)

      by Bigby (659157) on Wednesday April 25, 2007 @11:23AM (#18871013)
      You can go with a slower speed and higher data integrity by switching from MyISAM to InnoDB tables. The choice is there, so I would use the term "always sacrifice".
      • Re: (Score:3, Insightful)

        by Matt Perry (793115)

        You can go with a slower speed and higher data integrity by switching from MyISAM to InnoDB tables. The choice is there, so I would use the term "always sacrifice".

        According to the docs MyISAM is the default table format [mysql.com]. So how about "sacrifice by default." Sure, you can change the default to InnoDB but why isn't it set to InnoDB already? I find it strange that you have to enable data integrity features in a RDBMS.

        • Re: (Score:3, Funny)

          by rnicey (315158)
          Because then they'd have to admit that they're a fancy SQL parser, and most of the real meat is contributed by a company called Oracle (ahem Innobase). That said, InnoDB is a real nice data engine.
        • by ajs (35943)

          Sure, you can change the default to InnoDB but why isn't it set to InnoDB already?

          Why sacrifice performance by default for transactional integrity when most database applications require only statement atomicity?

          My spam token DB, photo album manager and Wiki back-end simply don't have the ACID requirements of a bank, and I DO NOT want to pay the performance penalty for some theoretical need that I might have in the future. I'll happily lock when I need to, and track completion of complex actions. If I need true transactional integrity, I'll turn it on in a new table that I only use for

      • Re: (Score:3, Interesting)

        by jbellis (142590)
        "MyISAM is faster than InnoDB" is certainly the conventional wisdom. It's also wrong. [blogspot.com]
    • Silly Question (Score:3, Informative)

      by bill_mcgonigle (4333) *
      Did they fix that thing where it always sacrifices data integrity for speed?

      It's a silly question, really. MySQL is about performance. If you can trade off integrity for speed, and you need speed, use MySQL with myASM tables. If you need that integrity and would benefit from MVCC [wikipedia.org] use PostgreSQL. If you need MySQL for some reason (web hoster, etc) and want the integrity, use InnoDB tables (for version 5 - something else for version 6), though there's a performance hit and you still don't get MVCC.
      • by afidel (530433)
        That's funny, your own link to Wiki contradicts your assertion that you don't get MVCC with MySQL.
        MySQL when used with InnoDB [7] or Falcon [8] storage engines.
        • That's funny, your own link to Wiki contradicts your assertion that you don't get MVCC with MySQL.

          Thanks for making me go look at this.

          From the MySQL site:

          InnoDB implements MVCC with a combination of multiple versions of record and write locks on key ranges and records. In Repeatable Read transaction isolation mode, InnoDB has update anomalies that require the use of the non-standard SELECT ... FOR UPDATE syntax. The result of a simple SELECT and a SELECT ... FOR UPDATE may differ within the same repeatabl

  • by Anonymous Coward

    Those Googlians are stupid, don't they read slashdot? If they did they'd know MySQL isn't fit for ANYTHING! Sheesh.

    • Re:Fit for duty? (Score:4, Insightful)

      by alienmole (15522) on Wednesday April 25, 2007 @11:35AM (#18871215)
      Yes, but imagine the world's biggest Beowulf cluster of MySQL servers.

      Now imagine them in Google's data centers.

      Which, in fact, is where they are. Now do you see?
      • But how can this be? According to the Slashdot Zingiest, MySQL isn't a "real" DB server. Only rubes use MySQL, real DB admins insist on PostgresSQL... So according to the Slashdoters with the low ID numbers, than, Google is just a bunch of rubes!
        • by alienmole (15522)
          What are they teaching in troll school these days? If Google were running PostgreSQL, they wouldn't need such huge clusters, and then they wouldn't be as cool!
  • Google-y goodness (Score:5, Insightful)

    by loafing_oaf (1054200) on Wednesday April 25, 2007 @11:26AM (#18871055)

    Ah, now this is how it's supposed to work. No bull like, "We're releasing improvements as MSN-SQL," or any other nonsense. Yay Google.

  • by emj (15659) on Wednesday April 25, 2007 @11:28AM (#18871091) Homepage Journal
    MySQL is dual licensed so if they add this code they can't sell their product under another license..
    • by Albanach (527650) on Wednesday April 25, 2007 @11:35AM (#18871209) Homepage
      MySQL could license the code for distribution. Equally Google could submit the code to MySQL using their existing mecanism for code contributions and transfer copyright to MySQL.

      To suggest that the code can't be included because someone else owns copyright is just wrong - MySQL didn't develop the Innodb stuff, they license it. They could do the same here.
    • Re: (Score:3, Insightful)

      by BinaryPower (1089809)
      Google doesn't sell a lot of software products. Some, but not a lot. It's intended purpose was to speed up their own internal system, and so they decided to share their work because it probably works well.
      • Re: (Score:3, Insightful)

        Also, because it's just cheaper for them if they get it merged in the mainstream mysql tree. Basically, it's stupid not to release it.
    • Re: (Score:3, Informative)

      by MightyYar (622222)
      That's true, but only part of this release is a patch - the other two items are tools:

      • mypgrep.py - a tool, similar to pgrep, for managing mysql connections
      • compact_innodb.py - compacts innodb datafiles by dumping and reloading all tables
      • patches - patches to add features to MySQL 4.0.26

      It will be interesting to see what happens with the patches.
    • by Bacon Bits (926911) on Wednesday April 25, 2007 @01:38PM (#18872811)
      No, these won't be included because the patches are for MySQL 4.0. To give you an idea, MySQL 4.0 is what shipped with Debian 3.1 (Sarge). It's that old. Mysql.com doesn't even host binaries for MySQL 4.0 anymore!

      4.0 is not actively developed at all, and lacks basic requirements such as subqueries, accurate math for DECIMAL or NUMERIC types (they're identical to FLOAT in 4.x so decimal errors for aggregate functions are common), and VIEWs. That's in addition to the normal flaws for data integrity in MySQL (MyISAM database engine, fsync disabled by default) that make it one of the least ACID compliant databases around that can still understand SQL.

      This is like Google releasing patches for Apache 1.2.
    • IMHO the dual license issue is holding back Firefox and OpenOffice.org as well. There are GPLed things that would make sense to include in each of those, but will not be included because of the dual license issue. Evince and (in the near future) gnash would make nice additions to firefox, not to mention the fact that they couldn't leverage existing SVG code going into 1.5 but had to write their own. Sure there are plugins, but for common stuff it should just be in there. OpenOffice is apparently planning to
    • MySQL is dual licensed so if they add this code they can't sell their product under another license.


      Presuming that Google owns all the copyrights (which I would assume they do) to their changes, nothing prevents MySQL AB from negotiating a deal with Google to include the enhancements in the commercial distribution.

      If there's enough value to MySQL that they can offer enough to Google to make it worthwhile, there is no reason for it not to happen.
  • The patch... (Score:5, Informative)

    by dfdashh (1060546) on Wednesday April 25, 2007 @11:31AM (#18871135)
    • by loconet (415875)
      Thank you. Why is it so hard to link to the damn link of interest in article summaries? Why must one always dig it from comments?
  • The situation is similar among wireless developers, almost 30% of who use Microsoft SQL Server compared to the 20% who use MySQL.
    What is a wireless developer? Cell phone companies? Programmers who use laptops?
  • by MikeRT (947531) on Wednesday April 25, 2007 @11:34AM (#18871193) Homepage
    At least with the GPL, anyway. You have a company like MySQL which actually makes a product, rather than bundling and providing services as the majority of the business. However because they can't exclusively control the app, they can't make a large amount of money except on other services and such. Then a company like Google comes in, with tons of resources, and makes great modifications to your code. The only problem is that you can't merge them into the commercial distribution without their permission. What's ironic about this is that being dual-licensed, the code would remain free for everyone to use under the GPL.

    MySQL chose this approach, but I could see how this might make others less inclined to dual-license under the GPL.
    • by 99BottlesOfBeerInMyF (813746) on Wednesday April 25, 2007 @11:55AM (#18871467)

      This illustrates a problem with commercial OSS At least with the GPL, anyway.

      I think this illustrates a problem with trying to sell OSS as if it were closed source software, instead of relying upon contract work for improvements, customizations, services, and other closed source add ons or using that OSS as a tool yourself for some other market.

      • In summary, OSS creates more opportunities to sell services, but not products. When the product can be produced at near zero cost, only systems with artificial restrictions allow it to be sold for more.
  • WTF? (Score:3, Interesting)

    by mekane8 (729358) on Wednesday April 25, 2007 @11:36AM (#18871233)

    MySQL is the second most popular database behind Microsoft SQL Server, according to a winter 2006 report from Evans Data. Oracle comes in second if you combine its database offerings. The situation is similar among wireless developers, almost 30% of who use Microsoft SQL Server compared to the 20% who use MySQL.
    What exactly does Oracle offer besides database offerings? How do you not include its "database offerings" when you're ranking the most popular databases? Is information week retarded? The vague reference to "wireless developers" is also weird. Wouldn't the Google page be more worth reading and more coherent?
    • Re: (Score:3, Informative)

      by 0racle (667029)

      What exactly does Oracle offer besides database offerings?
      Application Server, ERP, some other stuff.

      What they are talking about is counting Oracle Standard, Oracle Enterprise and other Oracle database editions as separate offerings to make MySQL look more important.
    • Re:WTF? (Score:4, Informative)

      by Smidge204 (605297) on Wednesday April 25, 2007 @11:46AM (#18871357) Journal
      The word is "combine" not "include" - Oracle offers a variety of Database "flavors" (editions) as well as services and utility suites. If you "combine" these offerings, Oracle comes in second.

      =Smidge=
    • Re: (Score:3, Insightful)

      by Em Ellel (523581)

      What exactly does Oracle offer besides database offerings?
      Erm, check out their web site [oracle.com] - look at the other two columns of products besides database - they offer quite a few products including little things like Oracle ERP, Peoplesoft and Siebel.

      -Em

    • by allenw (33234)
      I parsed that as intending to mean that the Evans Data report splits the various Oracle DB offerings (Enterprise Edition, Standard Edition, etc) into separate products for purposes of calculating market share. Of course, that begs the question of how they are calculating the MySQL installations. Does usage under the commercial/enterprise license count differently than the open source version?
      • It also begs the question as to what they define "wireless" to mean, as SQL Anywhere [ianywhere.com] was not mentioned at all [ianywhere.com].
      • I parsed that as intending to mean that the Evans Data report splits the various Oracle DB offerings (Enterprise Edition, Standard Edition, etc) into separate products for purposes of calculating market share.

        In edition to a series of "editions" of the main Oracle Database engine product, Oracle has Oracle Berkeley DB and the TimesTen In-Memory Database, which are (certainly in the first case, and I believe also in the second) completely different systems, not just different versions of the core engine.

    • What exactly does Oracle offer besides database offerings?

      Middleware [oracle.com] and applications [oracle.com] like Oracle Fusion, Oracle E-Business Suite, Oracle On Demand, PeopleSoft Enterprise, Siebel, JD Edwards EnterpriseOne, JD Edwards World and so on.
    • by TopSpin (753) *

      What exactly does Oracle offer besides database offerings?

      Three different widespread ERPs (Oracle E-Business, PeopleSoft and JDE,) Siebel, a Java IDE (at one time quite popular,) a database design platform, OLAP stuff (their own and now Hyperion) and application containers. They also have some not so widely used products including a collaboration system (email, etc.) and some sort of Oracle backed file system. They have a cluster file system for Linux that's gotten some play. Oh, and they're an OS vendor now with their 'Unbreakable Linux' thing.

      Oracle is a mon

    • The numbers from the Evans Data report [informationweek.com]:
      1. MS SQL - 61%
      2. mSQL - 40%
      3. MS Access - 38%
      4. Oracle 10g - 22%
      5. Oracle 9i - 20%

      The survey ``asked developers at 517 companies in its 2006 winter survey what database they developed with'' with developers allowed to give multiple answers. It isn't clear to me why Oracle was split between two versions while none of the other databases were.

  • InnoDB...? (Score:3, Interesting)

    by suv4x4 (956391) on Wednesday April 25, 2007 @11:44AM (#18871327)
    Apparently something has changed in Google's usage of MySQL. They have this to say for their patch:

    "In a perfect world, each feature would be provided as a separate patch and all code would be as portable as MySQL. We are not there yet. These have been implemented and deployed on Linux. Also, some of these features only work with InnoDB, because we use InnoDB."

    InnoDB is the slower, but safer/transaction-able way to use MySQL. In an earlier blog entry "let's get a real database", Google revealed they run AdWords/AdSense on MySQL, and they rolled up their own transactions as they went for speed with MySQL. Now we see they changed their mind.

    So I suppose that goes to show, never mind how limited your application, you better stay away from MyISAM: it'll bite you sooner or later.
    • Re: (Score:2, Redundant)

      by DeionXxX (261398)
      Umm, InnoDB is an engine for MySQL, they are still using MySQL. They just said they use the InnoDB engine exclusively rather than the other engines such as MyISAM. They probably never used MyISAM since it doesn't have foreign keys or transactions. No respected DBA would ever use MyISAM.

      • Re:InnoDB...? (Score:5, Informative)

        by suv4x4 (956391) on Wednesday April 25, 2007 @12:54PM (#18872221)
        Umm, InnoDB is an engine for MySQL, they are still using MySQL. They just said they use the InnoDB engine exclusively rather than the other engines such as MyISAM. They probably never used MyISAM since it doesn't have foreign keys or transactions. No respected DBA would ever use MyISAM.

        Where did I say InnoDB wasn't MySQL ..? And no, they used MyISAM initially, you can check the comments after their original post.

        In fact the irony in your post is big, as the original post addresses just people like you who are very quick to decide what a "respected DBA" would do, or not (versus reality).

        I'll quote one of the Google devs answering questions about it:

        Q: holy crap, you ran adwords on a transactionless database?

        A: Yep.

        Q: you have balls. and you're lucky as hell nothing (else) went wrong.

        A: Nope. Luck had nothing to do with it. If you don't have transactions you just roll your own. It's actually not hard at all.


        Bottom line is, you use transactions as it easier to retain data integrity and makes for simpler code. You don't use transactions to be "respected DBA". Whatever reasons they had to use MyISAM was probably sound, but after certain level of sophistication, they switched to InnoDB to make things easier to manage.
        • by DeionXxX (261398)
          I really wasn't talking about transactions, though very important, I think enforced foreign-keys is what most DBA's would say is more important. Without foreign-keys, the developers could enter in whatever information they want into the database. If there was a bug in some code, you could have orphan records, and lose data integrity, which will be vital for reporting.

          I could definitely see a reason for running MyISAM in situations where you don't care about orphan records, or data integrity, I just didn't
          • by suv4x4 (956391)
            Your Post
            "InnoDB is the slower, but safer/transaction-able way to use MySQL. In an earlier blog entry "let's get a real database", Google revealed they run AdWords/AdSense on MySQL, and they rolled up their own transactions as they went for speed with MySQL. Now we see they changed their mind."


            You're right, the last one "MySQL" should've been "MyISAM".
    • Re: (Score:3, Interesting)

      by fruey (563914)
      I've seen a lot of people saying InnoDB is slower, but last time I converted a forum from MyISAM to InnoDB it was *faster* on reads, it was the writes that were slower...

      And, of course, it didn't crash all the time.
      • by merreborn (853723)
        One of the things that makes innodb faster than MyISAM in many cases, is MyISAM uses table-level locks while innodb uses row-level locking. If your read/write ratio is anywhere between 30-70%, innodb will be faster. In fact, in a few places, the mysql guys say: MyISAM is only faster if your table receives 90% writes, or 90% reads.
  • It'll be interesting to see if the changes they made are of interest to other places using MySQL.

    Why don't you ask Jeeves [ask.com] then?
  • For those that couldn't get past all the doubleclink.net stuff,
    http://www.informationweek.com/news/showArticle.jh tml?articleID=199201237 [informationweek.com]
  • by thsths (31372) on Wednesday April 25, 2007 @12:31PM (#18871945)
    Because the replication support in MySQL is very basic. A single master for the whole database, isn't that a bit limited? I had to run two database processes just because I had two data sources to replicate from.

    Unfortunately, the patches from Google don't really fix the basic problem. I think MySQL needs a complete redesign of the replication function. Oracle seems to handle this much better: the replication is controlled on the master, not the client, and it works in just about any combination you can imagine. That is not to say that the MySQL replication is not useful in certain situations (it fans better), but it is very much limited to one kind of application.

    Way to go.
    • by Doug Neal (195160)
      I'd love to see proper multi-master replication on MySQL, I can't see any other way of doing an HA setup on an insert-heavy database (something I'm currently looking into). As it is, replication is a bit sketchy, it completely falls over on a few things that it shouldn't - delayed inserts and temporary tables, to name two. I think they've addressed some of the problems in 5.1 with a hybrid of SQL-based and row-based replication but haven't tried it out yet (mainly due to Debian only being on 5.0)... anybody
  • The Google add-ons are under Apache 2, while the open source version of MySQL is under GPLv2. Doesn't this present a problem?
    • Re: (Score:3, Informative)

      by linhux (104645)
      Actually, the announcement blog post [blogspot.com] says:

      [...] thus we have released the changes with a GPL license for the MySQL community to use and review.

      It seems to me that while their Python tools [google.com] are Apache-licensed, the actual MySQL patches are GPL.

      • The Google Code page says it's Apache 2, and I think that is what actually counts (rather than the announcement).
    • Re: (Score:3, Informative)

      by Pollardito (781263)
      that's really odd, i had remembered the article mentioning that they were released under the GPL and sure enough the first paragraph is:

      Google on Tuesday released new programming code under the GPL license to enhance MySQL databases.

      but then the actual tools code page [google.com] lists :

      License: Apache License 2.0

      as for the original question, the Apache FAQ [apache.org] for their license says they think that they're compatible but FSF does not:

      Is the Apache license compatible with the GPL (GNU Public License)?

      It is the un

  • TFA says they don't use MySQL for their search engine database. Does anyone know what they DO use for search?

"A great many people think they are thinking when they are merely rearranging their prejudices." -- William James

Working...