How MySQL is able to scale to 200M QPS – MySQL Cluster
highscalability.com
highscalability.com
To what degree can something be called durable if it's in-memory?
> It is possible to choose how to store data; either all in memory or with some on disk (non-indexed data only). […] Disk-based data can be used to store data with less strict performance requirements, where the data set is larger than the available RAM.
It's great to have all the concepts spelled out in this article, particularly the way nodes act as transaction managers when needed, synchronously replicate to a "buddy", and have management capabilities for recovering from partition events; however, it's almost misleading to use the MySQL name: this appears to be first and foremost an in-memory solution with some afterthought given to disk-based durability.
They use a log stream and checkpoints stream that are writing to disk.
[1] http://research.microsoft.com/pubs/193594/Hekaton%20-%20Sigm...
This only applies to the commercial version, though. The open source one ditched that feature.
Why did you deployed such a "horse shit" product ?
>>>> to recover our production data
Don't you have a backup ?
I had MySQL clustering in the lab with some serious live traffic for about a month. Unless you have a team of DBs whose job is just to monitor it and keep it going MacGyver style, seriously forget it.
There are other better options out there, with less headaches!
In that sense, similar "look how fast my simple lookups are" benchmarks published by other database vendors are really a function of their hardware budget for the benchmark assuming the implementation is competent. Queries with complex constraints or joins would be a more interesting indication of implementation scalability and performance.
I don't want to see the quarter mile, I want to see you road rally.
I found a bug and 5 months later still not resolved.
https://bugs.mysql.com/bug.php?id=75293
Maybe start fixing things people may want to use, instead of claiming "yeah we can do that".
I no longer use MySQL, I have upgraded to something more "enterprise" and more useful.
i just stop reading from there.
[1] https://en.wikipedia.org/wiki/Three-phase_commit_protocol#Mo...
1. The transaction coordinator (TC) role is
automatically taken over in case of the
failure of the coordinator during commit.
The new coordinator uses the surviving
participants' states to quickly decide
on Commit or Abort so that locked
resources are released.
2. As the participants are part of an integrated
system, failure of both the coordinator and
e.g. the only participant to be aware of the
commit decision can be handled correctly.
In this case the transaction is quickly
aborted by the new coordinator and on recovery
the old participant will 'undo' its local
committed-state before rejoining the cluster.
3. Participants' local commit decisions are not
coupled directly to lock release / visibility
of those decisions. Locks are released only
when the participant-failure-durability of
the commit decision is assured (e.g. all
replicas have committed).
4. Ndb has a third phase (The complete phase)
which releases locks on replicas. This is
not the same as the algorithm referred to
as three phase commit, so we don't call it
three phase commit. Also, the third Complete
phase is not part of the critical commit
path - the commit acknowledgement is sent
to the application prior to the start of
the third phase, so it does not affect
the user's experienced commit latency.
Not all '2PC' implementations are created equal.