A few weeks ago and in MySQL 5.7, I had an ALTER TABLE that failed with a duplicate entry error. This is old news as it is happening since MySQL 5.6, but I only saw this recently because I am normally using online schema change from the Percona Toolkit (pt-osc) or GitHub's online schema migration (gh-ost). I do not like that and I am disappointed this has not been improved, so this
And by MySQL Ecosystem here, I do not only include Oracle but also MariaDB.
So I am annoyed, not overly annoyed (probably also a little disappointed), but enough to do something about it (write this post). In the last days, two blog posts - relayed in social medias - were published by MySQL vendors (I am not linking to the posts, it is a waste of time for the reader - see below - and they can
There are a lot of holy wars between programming language
advocates in the industry.
I use Python.
Why?
Because I have found that programs written in Python are
significantly more likely to Work Correctly. They more often run
correctly the first time, therefore I spend less time
debugging.
There are lots of other reasons, but it's mainly the "It just
works".
A few years ago, I had 10+ years of industry experience of Perl,
but only 1 year of Python. I already found that my Python
programs initially worked correctly FAR MORE OFTEN.
This is comparing a language that I'd been using commercially,
most days, for 10 years, with something that I'd only just picked
up.
That's why I use Python.
---
Other stuff?
DEBUGGING: Stack traces. In Perl, it's possible to get a stack
trace from an exception, but you …
Warning: this is a mixture of historical content, biases, stupid marketing and unknown/proprietary/closed source technologies. Proceed with caution.
NuoDB marketing was sending out this message, encouraging me to blog (they were looking for bloggers too):
And while Facebook sharded MySQL 4000 times, even they call it a “fate worse than death.”
We’ve seen this phrase before and it did not come from us. For whatever reason NewSQL echo chamber is repeating this with less and less truth in it. In various whitepapers (all behind registration walls) they mention some analyst estimates and try to put a parallel between operating costs of large companies and something a new developer would do, as if everyone is living under same constraints.
I don’t know if NuoDB is a good technology for the customer they’re targeting, all their diagrams essentially …
[Read more]Last weekend I attended my first Fosdem conference. It was great to finally visit the conference that might be the biggest open source conference in the world. It's also an amazing experience how our Belgian friends pull off such a magnificent event purely with volunteer effort. You might say the conference itself is very much open source: free entry, created by volunteers. Organizers estimated that this year there were 7000+ attendees on campus. A hard data point was over 2300 simultaneous devices connected to Wifi.
I presented an introduction to Galera Cluster for MySQL. Due to problems with my personal laptop, I had to resort to an old version of the same presentation I had uploaded to Slideshare last year. (This is a variation of the old rule: The best way to backup your code is to publish it online as open source...). These are the slides:
…
[Read more]A short discussion with Baron at Henrik's blog has stirred my eloquence.
Baron points to a great post by Josh Berkus where Josh
contemplates the database clustering issues from a novel
viewpoint. The post is really insightful. But I'm going to top
that (albeit not so skilfully).
In his post Josh maintains that existing PostgreSQL clustering
solutions do a poor job satisfying user needs because developers
concentrate too much on technological choices and too little on
use cases, which he identifies three: Transactional User,
Analytic User, Online User. And all developers need to do is just
make three (only three) clustering solutions that would satisfy
each of those use cases well. And all will be nice and …
It's been long known that Galera optimistic replication and
enterprise-size databases are a match made in heaven. Today we're
going to get a little closer to testing this statement.
We'll have look at how Galera can scale out Sysbench OLTP complex
60 million rows workload in EC2. This is a first proper benchmark
for 0.8 series and also the first benchmark of MariaDB/Galera
port, so I'll start modest, just to see how it goes. I chose
m1.large instances with 7.8Gb of RAM for server nodes and
c1.xlarge instance for a client - I don't want the client to be a
bottleneck.
For comparison I have also measured performance of a stock
standalone MariaDB 5.1.55 server. I used the standard my.cnf that
comes with MariaDB Debian package with the following
alterations:
max_connections=1024
innodb_buffer_pool_size=6G
innodb_log_file_size=512M
Galera nodes also add
…
I started writing some test programs with the HTML canvas
element. This is great, as you can actually write games in
Javascript - efficiently - in principle.
My previous attempts have all used the DOM API which is not very
convenient, and not very efficient.
I had assumed the canvas 2d drawing context was basically a
software-renderer - it's not extremely efficient, but provided
the canvas doesn't have too many pixels, you can still do a lot
of work per frame on a modern machine.
Which is fine.
Suppose you have a canvas which is 640x320 pixels, you can then
get it upscaled into whatever resolution is in the browser
window, making the game appear the same size for everyone.
Great.
Except, the upscaling in web browsers sucks performance. I tried
Firefox 3.6 and Chrome 9. Both of them use loads of CPU scaling
the canvas on to the screen.
If we use a canvas …
Neither is ext3. Nor ext4. Nor btrfs. And thus, none of these will work on dual-Primary DRBD. Nor active-active shared storage. Nor any synchronously replicated active-active SAN. And we’re telling you very clearly.
So if you choose to ignore all warnings and put ReiserFS on dual-Primary DRBD, and mount it from two nodes, you’ve just signed up for wrecking your data. And when that happens, don’t come whining. And don’t blame DRBD or any other of the technologies you may be choosing to employ while ignoring the documentation.
[Read more]It's frustrating seeing examples of MySQL being slow as an example of why you should use NoSQL. If you have an invested interest[1] in comparing two technologies that are already apples to oranges, the least you can do is optimize both. If you can't do it, don't share it.
This came out of a talk on Cassandra. "MySQL" is not on the slide, but it was mentioned in reference to MySQL:
SELECT * FROM tweets WHERE user_id IN (SELECT follower FROM followers WHERE user_id = ?) order by time_tweeted DESC LIMIT 40;
Let me simulate that for you:
CREATE TABLE `tweets` ( `id` int(11) NOT NULL AUTO_INCREMENT, `user_id` int(11) NOT NULL, `info` text, `time_tweeted` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`), INDEX (time_tweeted), INDEX (user_id) ) …[Read more]