The first day of the first MySQL Connect
conference is done. It's been a busy day! Many
attendees are interested in the new MySQL Server 5.6 release, but
of course MySQL Cluster is the main draw here. After a
session from Oracle on the new features in 7.2, and early access
features in 7.3, I attended Santo Leto's
MySQL Cluster 'hands on lab'. Despite having started more
clusters than most, it felt like a new and exciting experience
installing and running my cluster alongside everyone else.
The lab machines had some networking issues, but with Santo's
help we seamlessly failed-over to some downloads he'd prepared
earlier - very professional!
Afterwards it was my turn to talk on the subject of MySQL Cluster
performance. The quality of the questions was impressive -
there seems to be a very capable crowd in San Francisco this …
As always, I am a little late, but I want to jump on the
bandwagon and mention the recent MySQL Cluster milestone of
passing 1 billion queries per minute. Apart from echoing
the arbitrarily large ransom demand of Dr Evil, what does this
mean?
Obviously 1 billion is only of interest to us humans as we
generally happen to have 10 fingers, and seem to name multiples
in steps of 10^3 for some reason. Each processor involved in this benchmark
is clocked at several billion cycles per second, so a single
billion is not so vast or fast.
Measuring over a minute also feels unnatural for a computer
performance benchmark - we are used to lots of things happening
every second! A minute is a long time in silicon.
What's more, these …
In my last post I described the motivation for the new NDB$EPOCH
conflict detection function in MySQL
Cluster. This function detects when a row has been
concurrently updated on two asynchronously replicating MySQL
Cluster databases, and takes steps to keep the databases in
alignment.
With NDB$EPOCH, conflicts are detected and handled on a row
granularity, as opposed to column granularity, as this is the
granularity of the epoch metadata used to detect conflicts.
Dealing with conflicts on a …
tl;dr : New 'automatic' optimistic conflict detection functions
available giving the best of both optimistic and pessimistic
replication on the same data
MySQL replication supports a number of topologies, and one of the
most interesting is an active-active, or master-master topology,
where two or more Servers accept read and write traffic, with
asynchronous replication between them.
This topology has a number of attractions, including :
- Potentially higher availability
- Potentially low impact on read/write latency
- Service availability insensitive to replication failures
- Conceptually simple
…
[Read more]
The HandlerSocket project is described in Yoshinori Matsunobu's blog entry under the
title 'Using MySQL as a NoSQL - A story for exceeding 750,000 qps
on a commodity server'. It's a great headline and has generated a
lot of buzz. Quite a few early commentators were a little
confused about what it was - a new NoSQL system using InnoDB? A
cache? In memory only? Where does Memcached come in? Does it
support the Memcached protocol? If not, why not? Why is it called
HandlerSocket?
Inspirations from Memcache may include the focus on simplicity,
performance and a simple human readable protocol. As Yoshinori
says, Kazuho Oku has already implemented a MySQLD-embedded
Memcached server, no need to do it again. What's more, the
Memcache protocol …
Unlike most other MySQL storage engines, Ndb does not perform all
of its work in the MySQLD process. The Ndb table handler maps
Storage Engine Api calls onto NdbApi calls, which eventually result in
communication with data nodes. In terms of layers, we have SQL
-> Handler Api -> NdbApi -> Communication. At each of
these layer boundaries, the mapping between operations at the
upper layer to operations at the lower layer is non trivial,
based on runtime state, statistics, optimisations etc.
The MySQL status variables can be used to understand the
behaviour of the MySQL Server in terms of user commands
processed, and also how these map to some of the Storage Engine
Handler Api calls.
Status variables tracking user commands start with …
When MySQL AB bought Sun Microsystems in 2008 (or did Sun buy
MySQL?), most of the MySQL team merged with the existing Database
Technology Group (DBTG) within Sun. The DBTG group had been busy
working on JavaDB, Postgres and other DB related projects as well
as 'High Availability DB' (HADB), which was Sun's name for the
database formerly known as Clustra.
Clustra originated as a University research project which spun
out into a startup company and was then acquired by Sun around
the era of dot-com. A number of technical papers describing
aspects of Clustra's design and history can be found online, and it is in many ways similar to Ndb
Cluster, not just in their shared Scandinavian roots. Both are
shared-nothing parallel databases originally aimed at the
Telecoms market, supporting high availability and horizontal
scalability. Clustra has an impressive feature set and …