Showing entries 1 to 10 of 27
10 Older Entries »
Displaying posts with tag: rant (reset)
The annoyance of the day, brought to you live from the MySQL Ecosystem

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

on time in mysql processlist

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]
Why I use Python

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 …

[Read more]
on nuodb and falcon

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]
My presentation from Fosdem

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]
Wating For The Miracle

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 …

[Read more]
Scaling-out OLTP load on Amazon EC2 revisited.

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

[Read more]
HTML 2d Canvas upscaling - really inefficient

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 …

[Read more]
For the n-th time, ReiserFS is not a cluster file system

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]
Yesterday I heckled a speaker.

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]
Showing entries 1 to 10 of 27
10 Older Entries »