Home |  MySQL Buzz |  FAQ |  Feeds |  Submit your blog feed |  Feedback |  Archive |  Aggregate feed RSS 2.0 English Deutsch Español Français Italiano 日本語 Русский Português 中文
Showing entries 1 to 30 of 674 Next 30 Older Entries

Displaying posts with tag: drizzle (reset)

Libdrizzle 5.1.4 released!
+0 Vote Up -0Vote Down
I've just created a release of Libdrizzle 5.1.4 (the BSD licensed C connector for MySQL servers) which for me is one of the most exciting releases to date.

Why?
Not because the amount of features or anything that we have added, in fact this is mostly a minor release with bug fixes.  It is because Brian Aker and I didn't submit the most code for it.  That honour goes to Wim Lewis from The Omni Group who has done a fantastic job fixing up Libdrizzle.

As for the release itself the main fixes revolve around cleaning up code and many fixes to the server-side prepared statement handling.  Behind the scenes Wim has supplied many improvements to the test suite and Brian has setup




  [Read more...]
The MEMORY storage engine
+3 Vote Up -0Vote Down

I recently wrote about Where are they now: MySQL Storage Engines and The MERGE storage engine: not dead, just resting…. or forgotten. Today, it’s the turn of the MEMORY storage engine – otherwise known as HEAP.

This is yet another piece of the MySQL server that sits largely unmaintained and unloved. The MySQL Manual even claims that it supports encryption… with the caveat of having to use the SQL functions for encryption/decryption rather than in the engine itself (so,

  [Read more...]
The MERGE storage engine: not dead, just resting…. or forgotten.
+0 Vote Up -0Vote Down

Following on from my fun post on Where are they now: MySQL Storage Engines, I thought I’d cover the few storage engines that are really just interfaces to a collection of things. In this post, I’m talking about MERGE.

The MERGE engine was basically a multiplexer down to a number of MyISAM tables. They all had to be the same, there was no parallel query execution and it saw fairly limited use. One of the main benefits was that then you could actually put more rows in a MyISAM table than your “files up to 2/4GB” file system allowed. With the advent of partitioning, this really should have instantly gone away

  [Read more...]
Where are they now: MySQL Storage Engines
+3 Vote Up -0Vote Down

There was once a big hooplah about the MySQL Storage Engine Architecture and how it was easy to just slot in some other method of storage instead of the provided ones. Over the years I’ve repeatedly mentioned how this

  [Read more...]
30 configuration options and counting
+1 Vote Up -2Vote Down

While Domas may have rather effictively trolled the discussion with his post on howto configure table/user statistics (which gave me a good chuckle I do have to say), it’s at least incorrect for Percona Server as you have to enable the “userstat” server option :)

That being said, once enabled there are no extra configuration variables to think about. This is a huge advantage over configuring PERFORMANCE_SCHEMA - which has a total of THIRTY configuration options (31 if you include the global enable/disable option).

Some of these thirty odd configuration variables are only going to matter if

  [Read more...]
Refactoring Internal temporary tables (another stab at it)
+1 Vote Up -2Vote Down

A few weekends ago, I started to again look at the code in Drizzle for producing internal temporary tables. Basically, we have a few type of tables:

  • Standard
  • Temporary (from CREATE TEMPORARY TABLE)
  • Temporary (from ALTER TABLE)
  • Internal temporary (to help with query execution)

If you’re lucky enough to be creating one of the first three types, you go through an increasingly lovely pile of code that constructs a nice protobuf message about what the table should look like and hands all responsibility over to the storage engine as to how to do that. The basic idea is that Drizzle gets the heck out of the way and lets the storage engine do its thing. This code path looks rather different

  [Read more...]
MySQL and the forks in the road
+0 Vote Up -0Vote Down
There's a lot of activity in the MySQL ecosystem currently. I've written an article for The H which takes a look at MySQL and the various forks and spinoffs to give an overview of where MySQL's community and close competition is currently at.
http://www.h-online.com/open/features/MySQL-and-the-forks-in-the-road-1829242.html
Which is bigger: MySQL or PostgreSQL?
+1 Vote Up -0Vote Down

From my previous posts, we have some numbers (excluding NDB) for the size of MySQL, so what about PostgreSQL? Here, I used PostgreSQL git trunk and classing things in the contrib/ directory as plugins. I put the number of lines of code in the src/backend/storage directory down as storage engines LoC but did not count it as non-kernel code.

Version Total LoC Plugin LoC Storage Engines LoC Remaining (kernel) MySQL 5.5.30 858,441 2,706 171,009 684,726 (79% kernel) MySQL 5.6.10 1,049,344 29,122 236,067 784,155 (74% kernel) MariaDB 5.5 1,142,118 11,781 304,015 826,322 (72% kernel) Drizzle trunk 334,810 31,150 130,727 172,933 (51% kernel) PostgreSQL trunk 648,691 61,934 17,802 586,757  [Read more...]
MySQL modularity, are we there yet?
+2 Vote Up -1Vote Down

MySQL is now over four times the size than it was with MySQL 3.23. This has not come in the shape of plugins.

Have we improved modularity over time? I decided to take LoC count for plugins and storage engines (in the case of Drizzle, memory, myisam and innobase are storage engines and everything else comes under plugin). I’ve excluded NDB from these numbers as it is rather massive and is pretty much still a separate thing.

Version Total LoC Plugin LoC Storage Engines LoC Remaining (kernel) MySQL 3.23.58 371,987 0 (0%) 176,276 195,711 (52% kernel) MySQL 5.1.68 721,331 228 237,124 483,979 (67% kernel) MySQL 5.5.30 858,441 2,706 171,009 684,726 (79% kernel)  [Read more...]
Other MySQL branch code sizes
+1 Vote Up -0Vote Down

Continuing on from my previous posts, MySQL code size over releases and MariaDB code size I’ve decided to also look into some other code branches. I’ve used the same methodology as my previous few posts: sloccount for C and C++ code only.

There are also other branches around in pretty widespread use (if only within a single company). I grabbed the Google, Facebook and Twitter patches and examined them too, along with Percona Server 5.1 and 5.5.

Codebase LoC (C, C++) +/- from MySQL Google v4 patch 5.0.37 970,110 +26,378 (from MySQL 5.0.37) MySQL@Facebook 1,087,715 +15,768  [Read more...]
unireg.h is finally gone
+2 Vote Up -0Vote Down

I got rid of unireg.cc way back in 2009 as I rewrote all the FRM related code inside Drizzle to instead use a nice protobuf based structure. If you’re wondering what was there, I just quote this part of pack_screens() from unireg.cc in MySQL 5.6:

start_row=4; end_row=22; cols=80; fields_on_screen=end_row+1-start_row;

We have gradually pulled things out of unireg.h over the years too. But, let’s go back to ask the question “What is UNIREG?”. To answer that, I’m going to quote from something that was current back when MySQL 3.22 was the latest and greatest:

In 1979, he developed an in-house database tool called UNIREG for managing databases. Since 1979, UNIREG has

  [Read more...]
First version of Drizzle Tools for MySQL servers released
+1 Vote Up -0Vote Down
Today marks the first release of Drizzle Tools for MySQL servers.  Drizzle Tools aims to be a collection of useful utilities to use with MySQL servers based around the work on the Libdrizzle Redux project.

In this first version there is one utility in the tree called 'drizzle-binlogs'.  If you've seen me talk about this tool before it is because it used to be included in the Libdrizzle 5.1 source but has now been moved here to be developed independently.  For those who haven't 'drizzle-binlogs' is a tool which connects to a MySQL server as a slave, retrieves the binary log files and stores them locally.  This could be used as part of a backup solution or a rapid way to help create a new MySQL master server.

Due to the API changes before the Libdrizzle API became stable



  [Read more...]
Fun with Coverity found bugs (Episode 1)
+2 Vote Up -0Vote Down

Taking the inspiration of Valeriy Kravchuk great series of blog posts “Fun with Bugs” (and not http://funwithbugs.com/ which is about both caring for and eating bugs), and since I recently went and run Coverity against Drizzle, I thought I’d have a small series of posts on bugs that it has found (and I’ve fixed).

An idea that has been pervasive in the Drizzle project (and one that I rather subscribe to) is that there is two types of correct: correct and obviously correct. Being obviously correct is much,

  [Read more...]
Coverity scan for Drizzle
+2 Vote Up -2Vote Down

Coverity is a static analysis tool, which although proprietary itself does offer a free scanning service for free and open source software (which is great by the way, I totally owe people who make that happen a frosty beverage).

Prompted by someone volunteering to get MariaDB into the Coverity Scan, I realized that I hadn’t actually followed through with this for Drizzle. So, I went and submitted Drizzle. As a quick overview, this is the number of problems of each severity both projects got back:

Severity MariaDB Drizzle High 178 96 Medium 1020 495 Low 47 52

I don’t know what MySQL may be, but it’d be great to see this out in the open too.

Developing Libdrizzle
+2 Vote Up -2Vote Down
This weekend I am supposed to be giving a talk at FOSDEM on Libdrizzle.  Unfortunately my kids and I all fell ill on Thursday (my wife appears to be immune) so I had to cancel my plans (infecting 5000 people didn't seem wise :)

Instead I am writing this blog post about Libdrizzle and my part in it which covers some of what I was going to talk about.

History of Libdrizzle

Libdrizzle started out as a from-scratch C connector for Drizzle and MySQL originally created by Eric Day.  It was designed to be high performance and use common standards to make it easy to work on.  In the summer of 2010 it was merged into the main Drizzle tree where development has been focused.  There were several attempts to split it out again but until now none were truly successful.

For a few





  [Read more...]
Introducing Drizzle Tools
+1 Vote Up -2Vote Down
As part of the Libdrizzle Redux project I created an example tool which was bundled with it which will connect to a MySQL server as a slave and download the binary logs to local files.  This was developed as a quick example of what can be done with the new binlog API.

Two things quickly became apparent:
  • We shouldn't really be distributing applications in a library
  • I am going to be developing more useful tools around libdrizzle and they certainly shouldn't be in the same package
  • BSD is a fantastic license for a library, but I personally prefer GPLv2 for applications
  • With this in mind I have pulled the drizzle_binlogs utility from Libdrizzle trunk (and therefore won't be in the 5.1.3 release) and put it in its own repository.  It has been licensed appropriately (GPLv2) and I am already beginning to develop more tools to go with it.


      [Read more...]
    Libdrizzle 5.1.2 released and Libdrizzle at FOSDEM
    +1 Vote Up -0Vote Down
    Libdrizzle is getting better and better with every release, and to reflect this we have two announcements to make.

    First of all, Libdrizzle 5.1.2 has been released.  This release has several major bug fixes and performance enhancements.  Changes are as follows:
    • Non-blocking Windows connections are now more stable
    • Improvements to Windows building
    • Unix Socket connections are now more stable
    • Memory allocation/freeing cleanups (for performance and ease of code)
    • Network packet buffer now much more flexible
    • Many performance improvements (the bundled drizzle_binlogs tool is now around 10x faster on my i7 laptop)
    • Several other minor bug fixes
    API chages:
    • drizzle_query_str() has been removed, drizzle_query() with a 0 byte length parameter now does the same thing.
    As



      [Read more...]
    On the clarity of licensing
    +2 Vote Up -0Vote Down

    Being clear in licensing is a great benefit to users. I’m quite proud that with Drizzle we got to a really simple situation:

    • server is GPLv2
    • client libraries are BSD licensed and are fresh implementations

    We had the complete okay from Sun to have libdrizzle be BSD licensed and for us to work on that.

    Questions about MariaDB JDBC Driver
    +6 Vote Up -0Vote Down
    The recent release of the MariaDB client libraries has prompted questions about their purpose as well as provenance.  Colin Charles posted that some of these would be answered in the very near future.  I have a couple of specific questions about the MariaDB JDBC driver, which I hope will be addressed at that time.  
    1.) What is really in the MariaDB JDBC driver and how exactly does it differ from the drizzle JDBC driver?  What, if any, relation is there to Connector/J code?  There is a 
      [Read more...]
    The state of MySQL client libraries
    +5 Vote Up -0Vote Down

    Those who’ve been around the MySQL world are probably aware of the much-discussed topics of GPL licensing, dual licensing, and in particular, licensing of the client libraries (also called connectors or drivers) and the FOSS exception (http://www.mysql.com/about/legal/licensing/foss-exception/) to that licensing. This is newly relevant with the announcement of a permissively-licensed MySQL-compatible client library for MariaDB.

    The difference is that this time there’s been some question about the provenance and history of the source code. Some people asked me about this. Some of them were aware of a relatively obscure detail: there’ve been permissively licensed MySQL client libraries for years, in the form of libdrizzle, a BSD-licensed library for the Drizzle fork of MySQL.

    Here are some of the thoughts that seemed to be going through

      [Read more...]
    A MySQL Christmas present - Libdrizzle 5.1.0
    +2 Vote Up -0Vote Down
    Brian Aker and I have been working hard in the last few weeks to give you a great Christmas present, Libdrizzle 5.1.0.  The MySQL compatible, BSD licensed C connector (so static compiling with commercial software gets the thumbs up!).

    The latest changes include:
    • A server-side prepared statement API
    • Improved binary log API
    • An example binary log remote retrieval utility using the binlog API called "drizzle_binlogs"
    • A new build system, DDM4 which is used by Gearman and Memcached
    • Many bugs fixes
    The source and manuals can be found on the Launchpad downloads page.  Please enjoy, feel free to file bugs, questions and hack on code on our Launchpad page.  Happy holidays to all!
    Libdrizzle Redux 5.0-alpha1 Released!
    +1 Vote Up -0Vote Down
    Over the past few months I have been spending my spare time on a new project.  A new version of libdrizzle which is much simpler to use and with many new features.  Today the first version of this MySQL compatible client is released, called Libdrizzle Redux.

    Why 5.0?  Because Libdrizzle 1.0 and 2.0 have already been released, in packaging versions 3.0 and 4.0 used as API revisions.  So 5.0 is the fresh start.


    Main Features

    These are the main features of the library:

    • A BSD licensed MySQL compatible C connector, so you can statically link it with commercial software
    • A simplified API compared to Libdrizzle.  No more confusion over whether the client or library should be allocating/freeing.  There isn't a big difference to the MySQL C API for most things.
    • New






      [Read more...]
    Slides for Connectors Talk
    +5 Vote Up -0Vote Down
    I could not find a way to upload my slides for today's talk entitled "MySQL Compatible Open Source Connectors" on the Percona Live website so the PDF can be viewed on Slideshare.  Enjoy!
    Impact of MySQL slow query log
    +0 Vote Up -0Vote Down

    So, what impact does enabling the slow query log have on MySQL?

    I decided to run some numbers. I’m using my laptop, as we all know the currently most-deployed database servers have mulitple cores, SSDs and many GB of RAM. For the curious: Intel(R) Core(TM) i7-2620M CPU @ 2.70GHz

    The benchmark is going to be:
    mysqlslap -u root test -S var/tmp/mysqld.1.sock -q 'select 1;' --number-of-queries=1000000 --concurrency=64 --create-schema=test

    Which is pretty much “run a whole bunch of nothing, excluding all the overhead of storage engines, optimizer… and focus on logging”.

    My first run was going to be with the slow query log on. I’ll start the server with mysql-test-run.pl as it’s just easy:
    eatmydata


      [Read more...]
    State of the MySQL forks - conclusions
    +4 Vote Up -1Vote Down

    I promised to still post some general comments about the MySQL ecosystem, to conclude my outlook of State of the MySQL forks and Drizzle. I will do this now in the form of answering questions I got in the comments, twitter and some that I make up just myself.

    Oracle has not stopped updating bzr trees

    read more

    But what about Drizzle?
    +0 Vote Up -0Vote Down

    I got several comments and questions on my previous blog "The State of the MySQL forks". One question was "Why didn't you mention Drizzle?" So I will say something about Drizzle here before concluding with other remarks.

    So why didn't you mention Drizzle?

    Mainly because the post was already long and also I had to wrap up and call into a meeting.

    read more

    State of the MySQL forks
    +3 Vote Up -8Vote Down

    It's been some time since I last wrote an overview of the state of the MySQL forks, but the last few weeks have been eventful enough that it is a good time to again see how the competing variants are positioned against each other.

    I have written on this topic 1-2 times a year. Here are links to the previous overviews:

    Map of MySQL forks and branches (2010)
    The state of MySQL forks: co-operating without co-operating (2010)
    Observations on Drizzle and PostgreSQL
    Percona.tv: State of the MySQL


      [Read more...]
    Is Synchronous Data Replication over WAN Really a Viable Strategy?
    +3 Vote Up -0Vote Down
    Synchronous data replication over long distances has the sort of seductive appeal that often characterizes bad ideas.  Why wouldn't you want every local credit card transaction simultaneously stored on the other side of the planet far away from earthquake, storms and human foolishness?  The answer is simple: conventional SQL applications interact poorly with synchronous replication over wide area networks (WANs).

    I spent a couple of years down the synchronous replication rabbit hole in an earlier Continuent product.  It was one of those experiences that make you a sadder but wiser person.  This article digs into some of the problems with synchronous replication and shows why another approach, asynchronous multi-master replication, is currently a better way to manage databases connected by

      [Read more...]
    Finding out What’s Next at BarCampMel 2012 with Drizzle, SQL, JavaScript and a web browser
    +0 Vote Up -0Vote Down

    Just for the pure insane fun of it, I accepted the challenge of “what can you do with the text format of the schedule?” for BarCampMel. I’m a database guy, so I wanted to load it into a database (which would be Drizzle), and I wanted it to be easy to keep it up to date (this is an unconference after all).

    So… the text file itself isn’t in any standard format, so I’d have to parse it. I’m lazy and didn’t want to leave the comfort of the database. Luckily, inside Drizzle, we have a js plugin that lets you execute arbitrary JavaScript. Parsing solved. I needed to get the program and luckily we have the http_functions plugin that uses libcurl to

      [Read more...]
    Hacking the Jenkins BZR plugin
    +2 Vote Up -0Vote Down

    For Drizzle and for all of the projects we work on at Percona we use the Bazaar revision control system (largely because it’s what we were using at MySQL and it’s what MySQL still uses). We also use Jenkins.

    We have a lot of jobs in our Jenkins. A lot. We build upstream MySQL 5.1, 5.5 and 5.6, Percona Server 5.1, Percona Server 5.5, XtraBackup 1.6, 2.0 and 2.1. For each of these we also have the normal trunk builds as well as parameterised ones that allow a developer to test out a tree before they ask for it to be merged. We also have each of these products across seven operating systems and for each of those both x86 32bit and 64bit. If we weren’t already in the

      [Read more...]
    Showing entries 1 to 30 of 674 Next 30 Older Entries

    Planet MySQL © 1995, 2013, Oracle Corporation and/or its affiliates   Legal Policies | Your Privacy Rights | Terms of Use

    Content reproduced on this site is the property of the respective copyright holders. It is not reviewed in advance by Oracle and does not necessarily represent the opinion of Oracle or any other party.