The time period up to the 2010 MySQL Users conference was as
usual packed with hard work. The last two conferences have been
very focused on getting scalability of the MySQL Server and
InnoDB improved. This year had a nasty surprise after the
conference in the form of ash cloud from an icelandic volcano.
When you're tired from hard work and just want to go home and get
some rest then the concept of staying at a hotel room with
absolutely no idea of when one could return home is no fun at
all. So when I finally returned home I was happy that summer was
close by, vacation days were available (swedes have a lot of
vacation :)).
Now the summer is gone and I am rested up again, ready to take on
new challenges and we've had some really interesting meet-ups in
the MySQL team to discuss future developments. The renewed energy
also is sufficient to write up some of the stories from the work
I did during the summer :)
During the …
I had the opportunity to test the Memory engine during the
summer. What I expected to be a very simple exercise in running
the Sysbench benchmark turned out to be a lot more difficult than
I expected.
My first experiments with the Memory engine gave very dismaying
results. I got 0-2 TPS which is ridiculously bad. So I couldn't
really think this was proper results, so I started searching for
problems in my benchmarking environment. Eventually I started
setting up a normal MySQL client session to the MySQL Server
while the benchmark was running and issued some of the queries in
the benchmark by hand and I was surprised to see some simple
queries take seconds.
EXPLAIN came to my rescue. EXPLAIN showed that the range scans in
Sysbench was in fact turned into full table scans. Now this was
surprising given that the primary key index in most engines is
always ordered, so a range scan should normally be translated to
a simple …
We quite often say, that benchmark performance is usually different from real world performance – so performance engineering usually has to cover both – benchmarks allow to understand sustained performance bottlenecks, and real world analysis usually concentrates on something what would be considered ‘exceptional’ and not important in benchmarks – stalls of various kind. They are extremely important, as the state when our performance is lowest is the state of performance we provide to our platform users.
On a machine that is doing 5000qps, stalling for 100ms means that 500 queries were not served as fast as they could, or even hit application timeouts or exceptional MySQL conditions (like 1023 transaction limit). Of course, stalling for a second means 5000 queries were not served in time…
We have multiple methods to approach this – one is our …
[Read more]Over the past year or so I’ve found myself evaluating my overall programming experience with the languages I’m working with. I might just be getting impatient in my old age (turning the big three-oh in a couple months), but I like to think I’m trying to find the most efficient way to solve the problem at hand. This has led me to learn and experiment with a number of languages, taking a look at each one’s strengths and weaknesses. I realize programming language selection is very subjective and folks can get quite passionate in the debate, but I’m still going to present my personal opinions on the matter. Flame away.
The main question that I’m trying to try to answer is: What language will enable me to solve the problem at hand correctly and in the fastest way possible? By correctly …
[Read more]Over the past year or so I've found myself evaluating my overall programming experience with the languages I'm working with. I might just be getting impatient in my old age (turning the big three-oh in a couple months), but I like to think I'm trying to find the most efficient way to solve the problem at hand. This has led me to learn and experiment with a number of languages, taking a look at each one's strengths and weaknesses. I realize programming language selection is very subjective and folks can get quite passionate in the debate, but I'm still going to present my personal opinions on the matter. Flame away.
The main question that I'm trying to try to answer is: What language will enable me to solve the problem at hand correctly and in the fastest way possible? By correctly I mean without bugs or missing requirements. By fastest I not only mean the initial design and coding phases, but also …
[Read more]
This is my last post on Blogger. I decided to move to WordPress
and leave, at least for now, this blog.
I decided to move to WordPress because I found it more suitable
for my needs.
So, from now on, you can read my posts re MySQL on mysql4all.wordpress.com.
My personal, non work related blog is izoratti.wordpress.com, but you may be
disappointed, there is only a "Hello World!" post and I am
planning to leave it like that for some time.
All the best to Blogger!
It doesn’t exist until it is nicely documented. Now Aspersa has documentation. Writing these tools has taught me how powerful and flexible Bash can be. Solving MySQL problems is a lot easier with good tools!
Oracle launches Unbreakable Kernel, updates MySQL and Java plans. And more.
Follow 451 CAOS Links live @caostheory on Twitter and
Identi.ca, and daily at Paper.li/caostheory
“Tracking the open source news wires, so you don’t have
to.”
# Oracle launched its Unbreakable Enterprise Kernel.
# Oracle announced the release candidate of MySQL 5.5.
# Oracle outlined its plans for Java platform. JavaWorld has the details.
# Novell and SAP have collaborated on SUSE …
[Read more]
Hello! First read this if you haven't yet.
I will now continue the back-and-forth obnoxiousness that
benchmarking seems to be!
In my tests, I've taken the exact testing method antirez has used
here, the same test software, the same versions of daemon
software, and tweaked it a bit. Below are graphs of the results,
and below that is the discussion of what I did.
Wow! That's pretty different from the first two benchmarks.
First, here's a tarball of the work I did. A small bash
script, a small perl script to interpret the results (takes some
hand fiddling to get it into gnuplot format), and the raw logs
from my runs pre-rollup.
What I did
The "toilet" bench and …
What is it that you can expect in future releases? Well, that is why we have a road map, but to be fair, it had not been updated in a while. A few weeks ago, the time came for reviewing this page. Considering that we are planning a major release in the next few months, it was a good time to get the road-map updated.
Before jumping into the future, let me review two important improvements that have been released recently.
Dynamic rules generation
We use rules for implementing a variety of behaviour: pricing, plans and mediation among others (this will change in jBilling 3, more about that later). It is then often necessary to be able to create new rules by making an API call, rather than writing the rule by hand and deploying it.
Let’s say that you have a plan that has a few tiers of pricing, from 1 to 100 the price is 1, from 101 to …
[Read more]