PrimeBase PBXT/Blob Streaming BoF – What you missed.

A small but committed group met at 8:30pm to hear more about our the plans from PrimeBase Technologies here at the 2008 MySQL Conference. Our discussion started in true MySQL form.

Monty Widenius presents to the group plastic cups and a bottle of Absolut Vodka.
After a shot, Paul starts with “While I can still talk”.
Monty, slams another bottle of Vodka on the table.
We all laugh.

Paul outlined some of the roadmap plans from existing the Alpha release to Beta releases.
He talked about the plans for Synchronous Replication and there was active discussion on various use cases.
There was also discussion and input on Solid State Drive (SDD) Technology which will be tested with PBXT in the coming months.

Scaling Wisdom

The 20 second summary from the Scaling MySQL – Up or Out? from our panel of experts at 2008 MySQL Conference and Expo.

  • Paul Tuckfield from YouTube — The answers to everything is replication, you just have to rephrase the question.
  • Jeff Rothschild from Facebook — Memory, the source of all problems is your developers.
  • Domas for Wikipedia — You should be afraid that 10 min structural change may answer detailed problems.
  • Fahan Mashraqi from Fotolog — Architect property, the most optimized schema may not be enough, what is the cost of serving the data, no just the time to run the SQL.
  • John Allspaw from Flickr — There is nothing more permanent then a temporary solution
  • Monty Taylor from MySQL — You have to know what’s happening on every piece of your technology stack.

What's in a new name

Also in the MySQL Press Releases today but dated for tomorrow is Sun Microsystems Announces MySQL 5.1.

I find the wording clearly a new language from my previous understanding — “pending general availability of MySQL™ 5.1″.

We now see the trademark notice, obviously a Sun influence.
We now have a “pending” GA version. MySQL is obviously very keen to release MySQL 5.1 for GA. This was expected at last years’ MySQL conference. Many in the past year have expected this prior to this year’s conference (we are now being informed late Q2 2008). There was an anticipation there would be two RC versions, this is now the third. So what exactly does “pending” mean? Will 5.1.24 be renamed Production if it passes community acceptance (I say community because it’s not an Enterprise release). This would be a change from previous naming policy. What’s most likely is hopefully they release 5.1.25 as production. Comes back then to why the words “pending general availability”, and not “next release candidate” which is what it is.

Previously MySQL also made new with the initial RC status of 5.1, moving away from the previously policy.

Standing room only

At Day 1 of the 2008 MySQL Conference and Expo today, our high numbers of attendees (reported at 2,000) have resulted in Standing Room only in a lot of talks. This has got to be excellent PR.

I got to sit in on the Memcached and MySQL session by Brian Aker and at the end I stuck my head in to Best Practices for Database Administrators by and Explain demystified by Baron Schwartz both 2008 MySQL Award winners.

All full to overfilling presentations.

PrimeBase XT (PBXT) in the news

In today’s Official MySQL Press Release, PrimeBase XT (PBXT) has been named along with three other storage engine partners in “Sun Celebrates Third-Party MySQL Storage Engines“.

This a great achievement for a small company to be recognized in the certified storage engine partner program, in comparison to the other companies that are much larger on the balance sheet. This continues the news with last week you may have read PrimeBase Technologies a MySQL Platinum Level Partner.

A noted absence from the list is Nitro, an expected absence was Solid.

Off to a flying start

Marten has opened the 2008 MySQL Conference & Expo. This time he started in his opening comments “I have more to say to more people, and given less time to say it”.

His answer to why Sun bought MySQL included slides showing “Alignment in Culture and Vision” and “What’s in it for you – Performance & Scale, Support, Marketplace”.

This year the MySQL Conference has over 2,000 people and 55 exhibitors.

What was funny, was the photo showing the burning of the IPO Prospectus. Marten mentioned now with many Sun lawyers he has to be more careful what to day. I actually have an interesting extension to this at Watching what you say

Some points of note for me:

  • The Web Economy continues to have exponential growth and the need for new technology but a goal of linear growth.
  • Continuing to mention becoming “Disruptive Online Innovations”
  • The Online landscape consists of the Software Development Model, Business Model,Software Deployment Model and Organisational Model.
  • He Reiterated the Design Priorities at MySQL. Reliability, performance, easy of Use
  • MySQL Workbench is now GA. Congratulations Michael Zinner.
  • On Storage Engine Update, PrimeBase, PBXT and Paul McCullagh got a mention. In addition to he usual suspects, but ScaleDB & Tokutek are newly mentioned and are Exhibitors this year.

A few words from Jonathan Schwartz

Following Marten Mickos, the second opening keynote at the 2008 MySQL Conference and Expo was by Jonathan Schwartz CEO and President of Sun Microsystems. Blog

His opening joke was about dinner with Marten, to which Marten said “You not going to get a keynote, unless you buy the company.”

So what was striking for me in his presentation “What is Sun’s Agenda?

  • There is no open-source phone yet, but that’s an industry that needs disrupting.
  • Like the need for water or electricity, The Network Has Become A Social Utility.
  • We want to work with the community, create greater innovation.
  • The future, the price tag of Free, the philosophy of Freedom

I had a chance to meet Jonathan and Rich Green on Sunday night, and it was great to see Jonathan learning about, and getting behind the product PBXT – The Community Engine a MySQL 5.1 open source engine.

MySQL Awards at the MySQL Conference & Expo

Announced this morning is this year’s MySQL award winners.

2008 MySQL Application of the Year

  • FaceBook – Social Network
  • Virgin Mobile France – Mobile Operator
  • eBay – ECommerce Site

2008 MySQL Partner of the Year

  • Zmanda
  • Microsoft
  • Computer center

2008 MySQL Community Member of the Year

PrimeBase Technologies a MySQL Platinum Level Partner

As per the Platinum Partners List PrimeBase Technologies has made a key achievement. I think this is a great list to make for the company. There are only 18 Platinum partners, and PrimeBase Technologies are the third Storage Engine provider and the second first open source storage engine company.

The News Release quotes “As a key milestone in our relationship with both the MySQL Community and MySQL, this partnership strengthens our commitment and involvement in working with the MySQL database server starting with PBXT and following with additional product developments.”

Update Thanks to Ken Jacobs, I need make a correct, we are not the first “open source storage engine company”, Innodbase, a wholly owned subsidiary of Oracle was indeed.

What is your max_connections?

Kevin Murphy just posted Tip of the Day — max_connections and I thought it might be nice to know what people actually set this to so I’ve created a Survey “What’s your max_connections” (totally anonymous).

For the record, while a consultant the record for a production system was 9,500. Yes you read right, and I might add the client was running a 32-bit OS as well, just to boot.
Apparently they had also tested they could get 9,500 connections, problem is they didn’t do anything with the connections, so didn’t see any per thread memory usage, and I did not get confirmation of how the actually system memory usage was used during the test.

MySQL Community Photo Day Prizes

I forgot to mention in Support the MySQL Community Photo Day that PrimeBase Technologies is providing 3 prizes for the best photos uploaded.

First Prize $150 Amazon Gift Voucher
Second Prize $100 Amazon Gift Voucher
Third Prize $50 Amazon Gift Voucher

So, take your photo with other community supporters — they’ll also be wearing their open source t-shirts. You can upload photos to www.flickr.com/groups/mysqlcommunityphotoday.

Where's the News?

It’s been six weeks since the completion of the acquisition of MySQL by Sun Microsystems. In this time, on the MySQL News and Press Releases there has only been one (1) Press Release here.
In the six weeks between the announcement and completion of the acquisition MySQL made ten (10) Press Releases, and the six weeks preceding this including the Christmas break there was (six) Press Releases.

On the Sun Press Releases in this period there has been twenty three (23), but just the same one MySQL specific.

The MySQL Developer Zone has picked up three articles in the past week, but nothing prior to that for a month.

So, Where’s the News of what’s happening with MySQL?

It seems our only options are the official company blog of Kaj Arno and his travels , Robin Schumacher and Giuseppe Maxia as other sources of information.

The pursuit of a synchronous world

Well at least your MySQL database world.

As Paul eluded to, PrimeBase Technologies has a project to provide synchronous replication for MySQL in a High Availability environment. It is more then an idea, there is a plan.

Is it possible?
What are the use cases?
How can you use it?
Would you use it?

Some input to date. We need these questions and more, and we seeking more input for discussion.

Unfortunately the opportunity to hear any input during a presentation is left to the last day of the conference, so there has been created a BoF session on Tuesday night for a round table discussion if necessary. People are encouraged to bring specific cases and situations for feedback, the reasons why MySQL Replication, MySQL Cluster, DRBD/HeatBeat or any other solution does not satisfy your needs, and what would.

If you can’t wait you may need to seek out Booth #518, and make a time to seek out the Technology Expert.

Just today, Peter Zaitsev of MySQL Performance Blog also writes in State of MySQL Market and will Replication live ?, “Customers are constantly asking me if there is something which would help them to scale MySQL and get some HA out of the box even on the medium level. Seriously – MySQL Cluster, Continuent, Master-Master Replication, DRBD or SAN based HA architectures all have their limits which makes neither of them used for very wide class of applications.” to confirm this pursuit.

Support the MySQL Community Photo Day

Updated On good advice from Sheeri I made a few comments clearer.

It has been proposed that the integral “MySQL Community Photo Day” be on Thursday April 17 2008, the final day of the MySQL Users Conference.

Wear a t-shirt from an open source community project on Thursday, whether a PrimeBase PBXT one or your favorite open source project. Get your photo taken with the masses of community supporters. If your not attending this year, this doesn’t mean you can’t also contribute a photo yourself from what location you are from. Save a saving fund for next year but get us a photo.

It doesn’t have to just be Thursday, photos will be accepted at any time before then. Upload a photo and win a prize. (Baron you definitely get chocolate)
Their is a Flickr group called “MySQL Community Photo Day” at http://www.flickr.com/groups/mysqlcommunityphotoday

This is a chance for you to support the community. There is already a small band of supporters before my post already including Colin C, Paul M, Lenz G, Baron S, Sheeri K.

Replication++, Replication 2.0, Replication.Next

There has been some discussion recently regarding the death of MySQL Read Replication starting with Brian Aker and then Farhan, Arjen and Paul have all chimed in. Whatever you want to call it, the next generation of replication approach is clearly on the agenda of the industry leaders and pack followers. We should take a programmatic look however and ask ourselves a few questions. Such as:

  1. The Use — What is/was MySQL Replication used for?
  2. The Reasons — Why was it used?
  3. The Problems — Why is there a need for something better, different or improved?

Read Scalability

  1. The Use — Clearly the most commonly known method of MySQL Replication is for Read Scalability. The ability for many more reads to occur against the data then writes. I call it the YouTube effect, thousands/millions of reads (i.e. view a video) to a single write (i.e. upload of a video)
  2. The Reasons — Database servers could not support the read/write load. Applications were poorly designed for sharding data. The database was being used for a function when it wasn’t really needed. The MySQL Server can’t scale to a massive number of cores.
  3. The Problems — MySQL Replication suffers from the asynchronous condition. A successful transaction on the Master, is not confirmed with a Slave before acknowledgment to the client. Google has made inroads in their own environment to improve the asynchronous nature with the SemiSyncReplication patch, now submitted back to the community. The number one effect of asynchronous replication is lag, and again poorly developed applications simply can’t support successful scale-out. Other problems include locking contention when not using a transactional engine.

Backups

  1. The Use — A Replication slave is used to perform a database backup, designed to not affect production usage.
  2. The Reasons — MySQL does not support a single “unbreakable” online backup solution. Period. There are partial/incomplete implementations, dependent on storage engines and data volume. There is a Roadmap for a solution in MySQL 6.0 (finally), but it’s way too early to tell what features will there be, will you need to pay for some of them, will it just work, let alone who is going to upgrade to 6.0 for this.
  3. The Problems — There exists no consistent method for backup across all storage engines. There is no compatibility for backup/point in time recovery (e.g. binary logs/redo logs) across different master/slave servers. No mirrored binary logs is also a problem, something also in the Google Patch.

Failover

  1. The Use — You need Business Continuity or Revenue Continuity Solutions (RCS) as discussed by Marc Simony. You need to ensure the maximum uptime possible with a failover infrastructure when some component (software or hardware) fails and your production database is not accessible.
  2. The Reasons — MySQL provides no Online DDL. In a 24×7 large volume, changing functionality application this provides an unnecessary complexity for applying changes easily.
  3. The Problems — When correctly configured and applied in a controlled situation, failover can work, provided your data is not too large, and your traffic is not too much. It simply doesn’t have a guarantee to work without data loss in an uncontrolled (i.e. disaster recovery) situation.

Others

There are more reasons, something to write about at a later time. These would include.

  • Testing
  • Alternative data access path (e.g. Data Warehousing)
  • Upgrade Path/Migration Path

Options

To handle Read Scalability. Why select something from the database (or various level of caches in the database call when it can be managed by the Application). Memcache is the obvious buzz word here. With tighter database integration (such as the patches and commands FaceBook has) this could be a winner.

Backups is a tough one, without practical storage engine agnostic consistent solutions I don’t feel the backup conundrum will be resolved anytime soon.

To handle a successful failover you need a guarantee that the data is consistent. A Synchronous Replication solution will solve this. MySQL Cluster is a synchronous solution, however it is impractical for basically every application that is already running with MySQL Replication.

What other options exist? Food for thought.

About Memcache

A little on Memcache for those still in the dark ages. Many large sites such as FaceBook,Fotolog, Wikipedia and Slashdot are strong proponents of Memcached. Created originally for Live Journal Memcached has become the defacto standard in this level of application data caching.

The description from the source.

memcached is a high-performance, distributed memory object caching system, generic in nature, but intended for use in speeding up dynamic web applications by alleviating database load.

The MySQL SandBox

This week I’d expected to hear good friend Giuseppe (CCO) Maxia speak about MySQL SandBox at the Hamburg MySQL April Meetup.

This is product I’ve thought about using, wanted to use, but just never got to the point to using. I download the current version 1.18, I had MySQL tar’s already of 5.0, 5.1 and 6.0 and was all ready until the late topic change.

However due to the language barrier in the second talk, I got a one-on-one lesson. Now I know how it works, and understands the strengths I can use it as part of my standard vanilla testing. There are some improvements I could see, something perhaps I can contribute if they allow a Perl part-timer too. The joy of open source is I can add, modify, change and submit my work, if not wanted for example, there is simply no loss to me.

  • By default installation goes to $HOME, and then creates a different standard for individual, replication or multiple instances. I’d like to see this default to a directory say $HOME/msb so all different installs are all under one directory node. You can specific this currently via –sandbox_directory otherwise.
  • express_install.pl could benefit from a –help option
  • I’d like the set_replication.pl and set_many.pl commands to support an array of mysql tar’s. I’m most interested in testing replication say from 5.0 to 5.1 and 6.0, not just 5.0 to 5.0. I’d also like to be able to install a 5.0, 5.1 and 6.0 versions and be able to use the multi_cmd to run the same SQL across different versions easily.
  • The multi_cmd would benefit from a means to list the identify of the instance with the output. It’s hard as MySQL does not have MYSQL_SID, only a server_id which can be a little confusing.

Thanks Giuseppe for your work on this product.

Current syntax

./install.pl --help
Unknown option: help
    The MySQL Sandbox,  version 1.18 05-Apr-2008
    (C) 2006,2007,2008 Giuseppe Maxia, MySQL AB
syntax: ./install.pl [options]
    -h --home_directory = name          The home directory. (default: $HOME (/Users/rbradfor))
    -d --sandbox_directory = name       Where to install the sandbox, under home-directory
    -P --sandbox_port = number          The port number to use for the sandbox server.
                                        (Default: 3310)

    --datadir_from = name               Where to get datadir files from. Available options are
                                        archive   will be taken from the archived data
                                                  provided with the package. They include
                                                  default username and passwords
                                                  ( DEPRECATED )
                                        script    the script mysql_install_db is called, with
                                                  default users, no passwords.
                                        dir:name  will be copied from an existing mysql directory
                                        (Default: script)

    -i --install_version = name         Which version to install (3.23, 4.0, 4.1, 5.0 or 5.1) default: 5.0
    -b --basedir = name                 Base directory for MySQL (default: /usr/local/mysql)
    -m --my_file = name                 which sample my-{small|large|huge}.cnf file should be used
                                        for additional configuration
                                        You may enter either the label (small|large|huge) or a full
                                        file name. (default: none)

    -f --conf_file = name               Configuration file containing options like the ones
                                        you can give on the command line (without dashes)

    -U --operating_system_user = name   Operating system user (for mysql installation)
                                        default: $USER (rbradfor)

    -u --db_user = name                 user for global access to mysql (Default: sandbox)
    -p --db_password = name             password for global access to mysql (Default: sandbox)
    -c --my_clause = name               option to be inserted in a my.cnf file
                                        it may be used several times

    --prompt_prefix = name              prefix to use in CLI prompt (default: mysql)
    --force                             Use this option if you want to overwrite existing directories
                                        and files during the installation. (Default: disabled)

    --no_ver_after_name                 Do not add version number after sandbox directory name (default: disabled)
    -v --verbose                        Use this option to see installation progress (default: disabled)
    --load_grants                       Loads the predefined grants from a SQL file.
                                        Useful when installing from script.
                                        (default: disabled)

    --no_load_grants                    Does not loads the predefined grants from a SQL file.
                                        (default: disabled)

    -t --interactive                    Use this option to be guided through the installation process (default: disabled)
    --no_confirm                        suppress the confirmation request from user

Example:
     ./install.pl --my_file=large --sandbox_directory=my_sandbox

MySQL Speakers and Presenters at LinkedIn

There is a Linked In group I created some time ago but forgot to advertise that is for MySQL Speakers and Presenters.

If you a speaker or presenter of MySQL content, confirm your registration here.
You will need to have a reference to a website confirming you have been a speaker at a MySQL Event such as a User Conference, MySQL Camp or Local MySQL Users Group.

Hopefully overtime we can build a consolidated index at MySQL Forge Presently some pages exist including MySQL Conference & Expo and User Group Presentations but I’m accepting input for a model to have a central page, and link to or upload of presentation. Any input welcome.

Storage Engines at the MySQL Conference

I’ll be following closely the progression of Storage Engines available in the MySQL Database server, well soon to be available when 5.1 gets to GA (hopefully by end of Q2 which is what we have been told). Tick, Tick, time is running out.

PrimeBase XT (PBXT) and Blob Streaming is a focus as PrimeBase Technologies, the company which I want to note for people is an Open Source company, committed at providing an open source alternative to the other commercial players. You also have at the MySQL Conference talks on the the existing InnoDB from Innobase (a subsidiary of market RDBMS leader Oracle). There is a Nitro presentation, an Infobright presentation, no Solid presentation surprisingly (the IBM news happening after submissions closed). We also have from MySQL, presentations on the internally developed storage engines Falcon and Maria, both products that won’t even be in 5.1 but 6.0, however Maria is presently a different branch of 5.1 so I don’t know how that works. Will it be in 5.1?

But what I want to seek is more news of KickFire, a Diamond Sponsor, an engine with embedded H/W, something that’s been obviously worked on in reasonable stealth. For me it’s not just interesting, it’s a competitor in our technology space, so I’ve been researching Joseph Chamdani and some of his patents.

Plenty of news in the past few weeks on Kickfire including Kickfire Update by Keith Murphy on April 3, Kickfire: stream-processing SQL queries by Baron Schwartz on April 4, Kickfire looking to push MySQL limits by Farhan Mashraqi on April 4, and Kickfire Kickfire Kickfire by Peter Zaitsev on April 4, and myself back on March 23.

So what can I make from the lack of company information and posted information to date.

  • Hardware based acceleration.
  • No Solid State Drive (SSD) Technology, at least not yet but C2App mentions SSD.
  • Data Warehousing, lending to thinking it’s not a transactional storage engine
  • A new storage engine and a new approach to data storage. I find this surprising, as it takes years to develop a feature complete storage engine, and most new 5.1 storage engines are indeed existing products, take Nitro, Solid, Infobright and Falcon. Only PBXT has been written from the ground up for MySQL 5.1, so looking to know more about it’s development
  • Expensive, it’s dedicated H/W + (assuming) MySQL Enterprise + Storage Engine

Hamburg MySQL Meetup – Apr 2008

Tonight’s Hamburg MySQL Meetup was a packed room of 60-70 people at Sun in Hamburg. The most I’ve seen @ a MySQL Meetup across three cities, countries, continents and years (my first Oct 5, 2004).

As expected most was in German. Pity, I would have liked to hear about Open Office and MySQL. Giuseppe, CCO (That’s Chief Cartoon Officer – I liked that one) gave in English a general review of MySQL. He highlighted the reasons “Why did Sun by MySQL?” including most popular, most dynamic and people with the Freedom to work anywhere.

Three points I would like to re-iterate for the community.

    The MySQL Forge contains the Worklogs, i.e. what is going to be developed in current & future versions and the status of tasks in next version, say in review, in development, completed development etc. This is important because this gives exposure to the world what MySQL are indeed working on.

  • The MySQL University each Thursday gives a free session that includes from an expert audio and visual slides as well as the ability to ask questions via IRC. I’ve attended one of these before and I’d like to see this continue to improve and grow.
  • MySQL is open and values external contributions from the community. My new co-worker Paul creator of PBXT highlights this. I hope with additional time within the MySQL Community I can help to contribute and lobby for greater differentiation of MySQL Community and MySQL Enterprise in favor of the Community.

Giuseppe did however not talk about the MySQL SandBox as scheduled. I was even prepared having wanted to use his software previously. I’d downloaded and was all ready. I did manage to get a one-on-one lesson which I found most useful, and a few points of enhancements to consider.

I didn’t know there were so many MySQL people in the area, the following attending tonight. Lenz, Giuseppe, Kai V, Kay, Jan, Ulf W and Georg whom I’d not met before. Most I’ll see next week at the MySQL Users Conference.

Unexpected SEO results

I had need to show the official MySQL business shirt to somebody, so I did a Google Search on “mysql conference photos” (without the quotes) as I know I’ve seen photos of staff at the conference online before. Google Search Link

To my utter surprise, Google provided 3 image search results. Two of them were of Paul McCullagh, CTO of PrimeBase Technologies. Not only was this unexpected, the first image of Paul was actually from my own Blog. Go figure how I managed that Search Engine Optimization.

Come and get a t-shirt at UC2008

Here I am at my desk sporting the PrimeBase supporters t-shirt that will be available at the exhibitors booth at the 2008 MySQL Conference. The front is rather uneventful with the official logo, but the back will be worth the experience. So everybody interested in supporting PBXT as the transactional storage engine for MySQL developed by the community and for the community, please come and see us and mention the secret password.

We have been placed way back in the right hand side of the exhibitors hall at booth 518, in front of the Open Source and OEM providers.

A day with Paul McCullagh – Architect of PBXT and BlobStreaming

Continuing on from my lightning visits with Jan Kneschke and Michael Zinner, today I got to spend a day with Paul McCullagh at his home in Hamburg Germany.


Paul is the architect of the PBXT Pluggable Storage Engine for MySQL 5.1, and also the Blob Streaming Storage Engine. His work was acknowledged with the MySQL Community contributor for the year in 2007. The successful PrimeBase product for the publishing Industry in Europe and North America also now uses PBXT for underlying data storage which is great to see a company use it’s own products.

Like each friend and expert this week, Paul develops using Mac, but at least uses the US English version & keyboard layout, not the German layout. As Paul states, “the German version is not productive for coding”.

Paul uses NetNewsWire Lite as his RSS feeder, as I observe some PlanetMySQL links. I’m more old school, I just go to the site every few days. I really should move from the dark ages, one advantage is the RSS feeder shows you what you have read.

However, there is a particular reason why I visited Paul, other then to spend some time with a good friend. I’m doing more investigation regarding making coding changes to MySQL, and I’m very out of the development cycle. I’ve forgotten more then I remember with C++ and in particular the tools and techniques used to develop, debug and deploy. Of course I know what I need to do, I just need to know what now is the most efficient means of doing today.

Paul uses Xcode to view and edit his MySQL code. The development environment provided by Apple is good for Java and C++. As an Eclipse person from my Java days, I was using CDT for my C++ environment. XCode is used for project management (i.e. looking at files in project) and for file editing. A standard terminal is used to do make. Xcode can do a quick compile for syntax checking and you get a list of errors and hot links to lines of code.

The next key part is debugging, and you can very easily define executables and enable you to run in an integrated debugger. A good option testing is to run mysql test with is –manual-gdb. This gives you the command you can run. What Paul does it copy the parameters, and add to an executable defined within XCode, the arguments from the –manual-gdb output.

The MySQL source tree was added as a project but only partial source directories such as (storage,sql,include) are required. You do need to make sure it does compile (but necessary for a build via Xcode.)

Additional debugging help is In xcode you can do jump to variable definition. So you can add breakpoints, and then run the defined executable that was build via command line make, and copy mysqld binary to initially deployed directory.

Regarding testing, we got to talk again about the issues with the MySQL Test Suite including the issues I encountered while working with Nitro. Hard coded storage engine syntax such as such as engine type=Innodb make testing more complicated then necessary. MySQL test requires some modifications for pluggable storage engines. You need to add a row to the plugins table via mysql_system_tables_data.sql to enable –default-storage-engine=pbxt as a command line argument. Paul did state that on using the MySQL testing suite, the Perl version is a great improvement in performance.

So now I understand the environment, I get onto my problem, and we are specifically looking at the thread sort_buffer and sql/filesort.cc

So when I ask about a few lines of specific code, Paul shakes his head, and says “This looks crazy”. After we spend some time on it, his comment is upgraded, “this doesn’t look crazy, it is crazy. When you look at the effect of the code, it appears it can be done in 3 lines, and it would make sense what it is doing.” This is worth further discussion in a future post.

One last tip learned. You need to be careful with multiple versions and open projects of the same, not to make changes 1/2 in one version and 1/2 in another version.

Limiting your result set, but getting count of all rows

In reviewing some of my notes I thought it was relevant to ensure this small MySQL gem is documented for my history purposes.

Historically I’ve seen people do a complex SELECT statement twice, first to get a COUNT(*) and then to retrieve the data, perhaps in a paginated format. In MySQL you can combined both SELECT statements into 1 SQL. You still need a second SQL statement, but it is less impactful to your system.

Here is how?

mysql> select sql_calc_found_rows * from mysql.user limit 2;
...
2 rows in set (0.01 sec)

mysql> select found_rows();
+--------------+
| found_rows() |
+--------------+
|            5 |
+--------------+
1 row in set (0.00 sec)

Open Source Database Alternative – Ingres

On several occasions this year I’ve been prompted to mention in conversation Ingres as an alternative Open Source Database. Jonathan Levin in A list of Open-Source Alternatives to Business Applications was the latest example where Ingres was not mentioned and perhaps it should have been.

Want features like online backup, online alter, multi-master replication, parallel queries and partitioning. These are all long existing features in a more mature product then MySQL presently. Is this a sleeping giant that nobody remembers about? Ingres has been around a long time, in fact my experience extends back to 1988 (that’s 20 years).

From a product perspective they have created a number of pre-packaged product stacks, for example The Ingres Icebreaker BI Appliance Powered by JasperSoft, something MySQL has failed to capitalize on. Another stack appliance for example is with Alfresco.

However since the CA announcement to open source Ingres back in 2004 I’ve not seen a great deal of press, at least not in the Open Source or MySQL circles. Time permitting myself it’s time again to look at Ingres. It’s worth another look and hopefully I can provide some translation for MySQL DBA’s and Developers. Also part of Ingres is ABF Application By Forms, an entire development environment. My use was back in the terminal days so I can only assume they have fully embraced the Web now.

Just what are MySQL 9.x features?

Top marks to Jay Pipes for getting the Forge 2.0 finally out after quite some time, as well as in the midst of the MySQL Conference he is organizing.

I am worried however about some of the content, as shown in the screenshot below, the opening page lists Worklog tasks/features for versions 6.x or 7.x , that’s ok, but features in 9.x. Where is the practicality of thinking more then 2 releases ahead, and just having a future bucket. Indeed, we have 5.1 and 6.0 already frozen and not releases, so 6.x is already 3 releases out.

Tonight we were told at the NY PHP Meeting MySQL 5.1 is not due to late Q2, so that’s at least June 2008.
The MySQL 5.1 Release Notes reveals a history that I don’t find very flattering.

  • MySQL 5.1.3 (29 November 2005)
  • MySQL 5.1.9 (12 April 2006) *First reported beta via docs
  • MySQL 5.1.22 (24 September 2007: Release Candidate)

I hope that Sun will take on board this very slow release cycle of producing GA products, the last version MySQL 5.0.15 (19 October 2005: Production) 2 years and 6 months ago.

I’m even more interested then previously in the ultimate release and success of MySQL 5.1 as this is a pre-requisite of my new employer’s key product the PBXT Storage Engine for MySQL.

NY PHP – Sun & MySQL: A New Hope

Tonight’s New York PHP community meeting was a talk by Philip Antoniades the MySQL Systems Engineering Manager.

With an interesting topic opener “A New Hope” I could not resist to hear Philip’s official MySQL presentation.

Some small points I took away from the presentation.

  • Sun is committed to Postgres with Josh Berkus and a team of 20 people.
  • Solaris.next is the next version of Sun, I thought that was a cool internal name, be it obvious
  • A marketing slide of the highest traffic websites listed Meebo, yousendit, alexaholic, techcrunch, feedburneer, istockphoto and vimeo as reported by Pingdom. Not sure were they get their data, but Google, Yahoo, FaceBook, Wikipedia, MySpace, Fotolog are sites I think of as high traffic. Indeed 3 of these listed sites I’ve never heard of.
  • MySQL 5.1 is expected GA in late Q2 (no year was mentioned).
  • Falcon in 6.0 was listed as the “Next Generation” transaction Storage Engine, an interesting term I’d not heard of before.
  • Sun provides Hosted Database Services (i.e. the cloud) via network.com.
  • MySQL has had an influx of Sun Engineers (60-80).
  • MySQL is being benchmarked more on Sun H/W.

This talk did remind me it’s time to download Open Solaris. With the interesting comment that out of some 1,200 Sun Engineers over 1,000 were Macbook users gives me great confidence it will work just fine on my Macbook.

Out of other discussions there was talk of ZFS, so this will be interesting in what backup opportunities for MySQL without a true Online Backup solution may exist.
Also there was discussion with Sun’s GUI Tool NetBeans, and this casts light on how this will sit with the MySQL GUI team and MySQL Workbench.

Interesting times, this new hope.

What I love about the MySQL Community

The people, plain and simple.

I encourage you, if you are not part of the local MySQL community, then why not? Find a local MySQL Meetup group, attend the MySQL Conference, get online to IRC @ freenode#mysql, subscribe to some lists or read the forums. I didn’t meet these people being an observer, but part of the community.

As I wrote recently with some vacation time and the need to pick the brain of some experts I organized a quick trip to Germany to specifically visit Jan Kneschke and Paul McCullagh to improve my MySQL skills in certain areas on my own time (something I’d find harder to want to do at Sun when they owned all IP & copyright even during my personal time, so what incentive is there?)

As with the best laid plans of mice and men, the mention a few weeks earlier of skiing (my number one passion) and the chance to do this with Michael Zinner in Austria was too much a golden opportunity to miss, so this was added to my trip.

But it didn’t stop there. These were my plans yet news of my visit brought out others to want to see me during my visit. With Jan, additional events organized included my chance to see Kai Voigt, and then Jens Bollmann and Ulf Wendel. With Paul, lunch was organized with Lenz Grimmer. This is one beauty of a distributed company such as MySQL, people in lots of different places and something I am most glad that will not be lost just simply because I’m no longer an employee.

In the past year I’ve spent quality time with other MySQL Community people and also not just from MySQL. This past twelve months has included time with Sheeri Kritzer Cabral in Boston many times (including her wedding), Jay Pipes in Columbus (including also going there for Thanksgiving), Chad Miller in Orlando (even just to visit one day to see a shuttle launch), Gary Whizin in Santa Cruz, Baron Schwartz in Charlottesville and of course Farhan Mashraqi in New York. It’s great to get to know people better personally, to meet spouses and partners and to just consider life in general. People and their own goals and dreams are far more significant then just our own careers.

During my time at MySQL I’ve also made friends with several clients and have spent time with them in varying locations in the US including New York, Jacksonsville, Chicago and San Francisco.

In the past week following a request for any Linked In recommendations of my work, I’ve exceeded my goals of 25, and I’m now at 31 of 166 contacts, many from members of the MySQL community and clients.

I’m sure 2008 will be no different. Any offers for me to visit are always most welcome and to live by my motto “Life is Short. Live Life. Life is an Adventure”.

My Motivation for MySQL Camp III proposal

I wanted to follow up my earlier post My Ideas for MySQL Camp III with some of motivations. Luckily, good friend and colleague Jeremy literally took all of 15 mins to respond to my post with “So, I see your vision for the event itself. What’s your vision for the results of the event?” (Unfortunately with 150+ draft posts, it’s taken some time to complete my reply).

The present differentiation of MySQL Community and MySQL Enterprise in my eyes is a joke. Now before I start or re-start more then already one flame war let me first talk about MySQL Enterprise. MySQL Enterprise is a great and necessary product offering by MySQL Inc. It serves essential services to essential customers with features such as commercial 24×7 support, MySQL Enterprise Monitor which is an excellent start when clients have nothing (and boy I’ve seen more then my share of these), monthly updates and certified binaries.

My gripe is not with MySQL Enterprise, but with little to nothing that MySQL has done with MySQL Community. Take these simple facts.

MySQL Community and MySQL Enterprise were split at 5.0.27 in October 2006.
Only one contribution was added to the Community side, SHOW PROFILE in 5.0.37. What was to be a start of hopefully more creative contributions, suddenly stopped and has not changed since. My only thought could be, heaven forbid you now change the scope of functionality in 5.0 between Community and Enterprise, but wasn’t that the point?

Ok, new features change the scope of the base feature set. New features may make the product more unstable. Community people get this. The present release cycle process with the differentiation is a joke. You can’t add any features to 5.0, you can’t add any to 5.1 for like the past year. I’d go so far as to say, ZERO community contributions submitted even now would make 6.0. We don’t want to draw from sales and marketing features of Falcon and Online Backup.

MySQL Community is an essential product, it’s the only choice when MySQL Enterprise is not an option.

So to answer Jeremy’s question. What’s your vision for the results of the event?

  1. To personally gain a better in-depth process of understanding the MySQL code, debugging, enhancing and contributing to MySQL
  2. To see others gain the same skills, knowledge and appreciation.
  3. To see better documentation of the process (A goal of the MySQL Community team)
  4. To see the length and breath of creative input increase
  5. To ignite some urgency and pressure to actually see MySQL Community differentiate to the benefit of the community.
  6. To simply have fun, hack code and enjoy it with others

Since drafting this response some time ago, Sun has acquired MySQL, MySQL 5.1 still remains in RC, and we now have a beta of Falcon in an alpha of 6.0 (which I don’t get). With the MySQL Conference happening in a few weeks, I’ll be keen to know what’s going to happen with the MySQL Community differentiation and whether any information will indeed be forthcoming.

I plan to revisit this topic in the next 3 to 6 months to see if anything has actually changed as a result of Sun. We will just have to wait patiently.

Companies speaking at UC2008

The Conference Speakers of the 2008 MySQL Conference provides some common and interesting names of companies not common in MySQL circles such as eBay, Microsoft Corporation, HP, Symantec. I see speakers outside of MySQL from countries including USA, Canada, Brazil, Germany, Japan and Australia.

I did some data analysis of the speakers list. There are 150 speakers, there are 45 from MySQL. Other companies with multiple speakers include Sun Microsystems, Kickfire, Linbit, Cafepress, Open Query, Proven Scaling, Standford Linear Accelerate Center, UC Berkeley, Siz Apart, The Hive, Zmanda, MySQL Performance Blog, Infobright, Digg, Grazr and of course PrimeBase Technologies.

Only two MySQL speakers have listed “MySQL/Sun” the rest are “MySQL”. I wonder what the policy is here? You have “Oracle / Innobase” and “Innobase / Oracle Corp.” some identity crisis there, the guys from “MySQL Performance Blog” prefer this name over the company name “Percona”, obviously for brand exposure. You have “Grazr Corporation” and “Grazr Inc”. It’s only trivia but interesting.