That's right! Today, 2 years ago, I started my job as Support
Engineer at MySQL! Ups, and downs along the way, but hey, what
love relation doesn't have that! Great Company!
To celebrate it I was given the opportunity today to give an
online web presentation about MySQL Performance Tuning Best
Practices. I'm used to give such seminars, getting better each
time. But with this one, there were 2 problems: I was nervous
because I couldn't see the people, and second: it was in Dutch!
Although my mother tongue, I don't talk it everyday. And surely
no technical terms. I put some German words in there as well I
think, hehe..
That's right! Today, 2 years ago, I started my job as Support
Engineer at MySQL! Ups, and downs along the way, but hey, what
love relation doesn't have that! Great Company!
To celebrate it I was given the opportunity today to give an
online web presentation about MySQL Performance Tuning Best
Practices. I'm used to give such seminars, getting better each
time. But with this one, there were 2 problems: I was nervous
because I couldn't see the people, and second: it was in Dutch!
Although my mother tongue, I don't talk it everyday. And surely
no technical terms. I put some German words in there as well I
think, hehe..
I just filed a bug regarding slow queries executed by replication thread are not being logged to the slow query log.
This is not a big deal but it is ugly little gotcha which I think few people know about. It is especially bad if you're using tools to analyze slow query log to find what queries take up the most resources on your server - in certain configurations replication load itself may be very significant contributor.
But even if you do not, as I wrote in the bug report it is quite handy to have this information our where as query times on master and slave can be different in a lot of circumstances.
One more thing to consider - slow replication queries also identify replication lag, ie if you have query which ran 10 seconds on the slave and …
[Read more]In a heavily webbed, automated, interconnected world with most data stored on relational databases, we can sometimes forget that there are indeed many situation where you simply want to FTP a file from one place to another.
That process in itself holds many dangers as I pointed out to someone on the forum today. Let me re-cap that post here on the blog…
Suppose your files are coming in using FTP to a local directory.
A file is being written, let’s call it
FILE_20070328.txt.
Now, in advance you don’t know the size of that file. Let’s say
it’s 10MB and takes 30 seconds to FTP.
In your transformation you detect this file and start working.
Chances are very high that you’ll be reading an incomplete
file. (See also this
technical tip on variables and file handling)
There are 2 ways to …
[Read more]Thanks to a gift from MySQL AB, I'll be attending the MySQL Conference & Expo 2007. I presented at the 2005 conference, and found the conference itself to be pretty educational. Plus the food is generally pretty good at the O'Reilly conferences. Of course the real reason people to conferences is for the swag. Now this year's PyCon had some pretty good swag; I got at least six free T-shirts and two Rubik's cubes. So top that.
mysql doesn?t
have quite the number of fancy internal applications that you
might suspect, and i got frustrated when the company started to
roll out a system of monthly time-off reports based on emailing
around an excel spreadsheet. (to add icing to that cake, they
kept sending out the excel sheet with password protection!)
last friday, i spent an afternoon cooking up this
little proof-of-concept application that tracked the same
information as the spreadsheet, but in tasty web format, with
some ajax goodness (courtesy of prototype).
as it turns out, there was an official company tool for doing
this that was in the works, but they hadn?t bothered to let
anyone know it was imminent. i?m told it is …
In my recent work I had to dive into the Internals of the MySQL protocol.
Most of the protocol is described in Chapter 8. MySQL Client/Server Protocol.
"Most" as it documents the state of MySQL 4.1.x before it was
stable. It is interesting for all developers who want to extend
the mysql-server or want to write a native
connector to MySQL which isn't using
libmysqlclient
.
Note: the protocol definition and the derived work at released under the terms of the GPL. See 8.1. Licensing Notice
Connection States
The MySQL protocol has two phases: auth
and …
Until recently I thought that currently popular scripting languages, which mostly evolved over last 10 years or something, must allow for easier portability across different platforms compared to ye good olde C/C++.
After all, their development started a few decades after C, so its notorious caveats are all well-known and should be easy to avoid when designing a new language, right?
However, PHP just brought me a new definition of "portable" - and that was when working with... integers.
PHP is not able to handle unsigned integers, and converts values over 2^31 to signed. So if your IDs go slightly over 2 billion, and PHP decides to treat them as integers, you're in trouble.
Oh wait, no - that's on 32-bit platforms only! PHP int size is platform-dependent, and it seems to be 8 bytes on our 64-bit boxes. Yes, the very same ones where C/C++ int is 4 bytes, you know.
That was the easy part. It was …
[Read more]One may think changing PHP session handler from file based to database driven is fully transparent. In many cases it is, sometimes however it may cause some unexpected problems as happened to one of our customers.
If you use file based sessions PHP will lock session file for whole script execution duration, which means all requests from the same sessions will be serialized on PHP level, which means they also will be serialized for single user on database level. If you change to store PHP sessions in MySQL instead this effect may be no more true and you may have number of requests executing for the same session at the same time. First of course means you may have your session data damaged because you will have lost session variables update from one of the script, in addition however you may run into database related issues of modifying user profile or other user/session related data in parallel, if you do not use transactions or lock tables. …
[Read more]
I am giving a talk at the MySQL user conference, April 23-26, Santa
Clara, California. The talk is titled "Building Scalable OLAP Applications with Mondrian and
MySQL" (slides).
When I gave a talk "Building OLAP Applications with Mondrian and
MySQL" at the 2006 MySQL UC, it was my first chance to meet a lot
of you in the mondrian and pentaho communities. It was great to
finally put faces to email addresses. But it was frustrating that
there wasn't enough time to have in-depth discussions and answer
everyone's questions.
So this year we thought we'd solve that by hosting a Birds of a Feather session on Tuesday …