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
10 Older Entries »
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 was one MySQL feature that I was always very afraid to ask for. I sure needed it for past 15 years of my MySQL practice, and yet I never got to it. I wanted MySQL processlist (‘SHOW PROCESSLIST’, later – information_schema.processlist) to have more accurate query execution time.
I submitted a patch for that to MongoDB (and it got merged and released really quickly). I couldn’t admit to myself and others that MySQL does not have this functionality, even though it is hard to reason about systems in production without such data.
When 99.999% of queries happen within 1s, one has to resort to statistical analysis of zeroes and ones to determine how long they may be running (that is, if nine queries are at 0s and one is at 1s, there’s a chance that all of them are running for 0.1s). Unfortunately, this kind of statistical analysis is not feasible …[Read more]
There are a lot of holy wars between programming language
advocates in the industry.
I use Python.
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.
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:
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
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
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]
10 Older Entries »