Over the last few weeks I have been doing some work on improving
the concurrency performance of PBXT. The last Alpha version (1.0.03) has
quite a few problems in this area.
Most of the problems have been with r/w lock and mutex contention
but, I soon discovered that MySQL has some serious problems of
it's own. In fact, I had to remove some of the bottlenecks in
MySQL in order to continue the optimization of PBXT.
The result for simple SELECT performance is shown in the graph
below.
Here you can see that the gain is over 60% for 32
or more concurrent threads. Both results show the performance
with the newly optimized version of PBXT. The test is running on
a 2.16 MHz dual core processor, so I expect an even greater
improvement on 4 or 8 cores. The query I ran for this test is …
OK, now I know that the GA version of 5.1 is rapidly
approaching. PBXT compiles with the latest release of MySQL
without any changes!
This has never been the case before. Just search the PBXT
code for MYSQL_VERSION_ID, and you will find things like:
#if MYSQL_VERSION_ID < 50114
XT_RETURN_VOID;
#else
XT_RETURN(0);
#endif
and, even worse:
#if MYSQL_VERSION_ID < 60000
#if MYSQL_VERSION_ID >= 50124
#define USE_CONST_SAVE
#endif
#else
#if MYSQL_VERSION_ID >= 60005
#define USE_CONST_SAVE
#endif
#endif
The lack of changes that affect pluggable storage engines can
only mean that the bug fixes required are diminishing in
scope.
And I believe this is a far better gauge of whether GA is close
than any other …
Here’s a rundown of Thursday (day 3) of the MySQL Conference and Expo. This day’s sessions were much more interesting to me than Wednesday’s, and in fact I wanted to go to several of them in a single time slot a couple of times.
Inside the PBXT Storage Engine
This session was, as it sounds, a look at the internals of PBXT, a transactional storage engine for MySQL that has some interesting design techniques. I had been looking forward to this session for a while, and Paul McCullagh’s nice explanations with clear diagrams were a welcome aid to understanding how PBXT works. Unlike some of the other storage engines, PBXT is being developed in full daylight, with an emphasis on community involvement and input. (Indeed, I may be contributing to it myself, in order to make its monitoring and tuning capabilities second to none).
PBXT has not only a unique design, but a …
[Read more]- Paul McCullagh presents
- BLOB
- invented by Jim Starkey
- Basic Large OBject
- Binary Large OBject
- photos, films, mp4 files, pdfs, etc
- how MySQL handles BLOBs
- mysql client send buffer -> receive buffer on the server (max_allowed_packet)
- streaming a BLOB
- continuous data stream
- stream BLOB data directly in and out of the database
- store BLOBs of any size (>4GB) in the database
- create a scalable back-end that can handle any throughput and storage requirements. Wouldn't need to know in advance how big the database will get
- provide an open system that can be used by all engines
- provide extensions for …
Today is the first day at the conference (aside from the tutorials, which were yesterday). Here’s what I went to:
New Subquery Optimizations in 6.0
By Sergey Petrunia. This was a similar session to one I went to last year. MySQL has a few cases where subqueries are badly optimized, and this session went into the details of how this is being addressed in MySQL 6.0. There are several new optimization techniques for all types of subqueries, such as inside-out subqueries, materialization, and converting to joins. The optimizations apply to scalar subqueries and subqueries in the FROM clause. Performance results are very good, depending on which data you choose to illustrate. The overall point is that the worst-case subquery nastiness should be resolved. I’m speaking of WHERE NOT IN(SELECT…) and friends. It remains to be seen how this shakes out as 6.0 matures, and what edge cases will pop up.
The Lost Art Of the Self …
[Read more]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 we have created a BoF session on Tuesday night for a round table discussion if necessary. We encourage people 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 …
[Read more]
Brian Aker has found general agreement with his post: "The
Death of Read Replication".
Arjen Lentz says "I
think Brian is right...", and Frank Mash confirmed: "what Brian says about replication, caching and
memcached is very true".
Just like Video killed the Radio Star it looks like
maybe Memcached killed the Replication
Hierarchy!
But of course, Brian and others are talking about replication
for scaling reads.
In my session on PBXT next week at the conference I will
be talking about how we plan …
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.
Today I started my new job at PrimeBase Technologies. The company that has brought you the PBXT and Blob Streaming Pluggable Storage Engines for MySQL 5.1.
My move to Germany has gone mostly without incident and now I’m settling in to different weather, language and food, plus the change in time zones +6 hours.
A smaller company from my previous, but I’m part of a larger group then expected. One of 26 people in the office. It’s good to have a desk, a big monitor (and definitely not a German keyboard) and see and talk to people on various topics and interests in comparison to either past work at home by myself, or on a new customer site each week during my consulting days.
Preparations for the upcoming …
[Read more]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 …