A day with Jan Kneschke – Architect of MySQL Proxy


Recently I got to spend a day with Jan Kneschke at his home in Kiel, Germany. This was an excellent opportunity to interact directly with a fellow MySQL employee and resident expert in several fields. Doing this on my own vacation time enabled me to control what I wanted to achieve.

Jan uses Linux, Windows and Mac OS/X all actively and with Synergy enables a single keyboard and mouse to work seamlessly across his three screens. I knew you could do this, just last year I tried to find out the software that could do it without obvious success.

Of interest was our discussion in English, while he was also communicating on IRC in German during the day. Being multi-lingual is something we don’t often consider and talking in one breath in English, then having to type in German is a little more complex then as I’m writing it here.

One of the discussions was the impact of the Sun acquisition, but I can’t say anything here as it’s all confidential. I don’t want the MySQL legal police after me. It’s business as usual here are MySQL. However we both discussed several concerns we have, a common topic among many MySQL Employees here at MySQL.

I spent some time browsing Jan’s library. Books browsed included “MySQL Database Design and Tuning” (Amazon link). (Why as a MySQL employee I haven’t see this, or been given a copy to review/read/access I don’t know. I had heard of it). “SQL Performance Tuning” (Amazon Link) by Peter Gulutzan and Trudy Pelzer who are now both MySQL employees, and “SQL for Smarties – Advanced SQL Programming” (Amazon Link) by Joe Celko.

Within the MySQL Database Design and Tuning book I came across SQL_MAX_JOIN_SIZE, a handy per connection session variable to limit the size of poorly joined SQL statements. Problem is it’s not part of any resource control restrictions so if you can’t control connections to the database by reporting end users, then what’s the real point. A nice idea that’s only partially implemented for real use.


Part of my time here, is to get answers. Some of my specific questions were around Lua (The scripting language used with MySQL Proxy). One particular question was the ability to process a SQL request and response programmatically at startup (to manage some global data), but the way to achieve this is to piggy-back off the first actual SQL request for the connection.

Another question was in regards to the testing of newer Lua scripts. The solution is to see the test cases which manage the Proxy via Mock up functions.

On Saturday, there was another change of aspect. Jan over the weekend was needing to do some security updates with lighttpd. “You need to still respond to requests from the community or they have the impression the product is dead. It’s a burden, you can’t really step out.” I completely understand as for almost 10 years now I’ve provided support and service to a number of not-for-profit organizations. My usage requirements are now very low, I don’t make any more software or website changes, just the occasional web server issue. (My present primary server uptime is up 560 days, and this was only to do an OS level upgrade from the past x100 days.)

The lighttpd project has up to 6 other committers that add work from time to time. For any successful Open Source project you need to ensure this occurs, otherwise it’s something you can never leave. Interestingly, Lighttpd is still a popular web server as per the Netcraft Survey Results.

Jan wakes up to the sound of the coffee machine in the morning, literally. It’s rather a loud and predicable process.

Not all work, we attended the Nubit 2008 event by NetUSE AG in the evening for networking, dinner and drinks. In his spare time on Saturday I caught him playing Hellgate.

Part of interacting with other professionals is you come across tools and sites they use to benefit their productivity or functionality, and this type of viral exposure helps greatly in your experiences and knowledge transfer.

And just in closing, two bizarre technology occurrences here (just before the full moon). The first, my computer become intelligent. I must have found a magic key combination in vim because it was doing interactive spelling correction while typing. It was even doing correcting of variables names. It was a little unnerving and even Jan was surprised (so it’s probably not just a German thing). The second, my Timex watch of at least 15 years (with many band and battery replacements) reset it’s self for the first time ever. I looked and it had 12:05am, Mon 1.1 – Weird.

Jan will also be speaking at the upcoming 2008 MySQL Conference, you can read his profile.

Stay tuned for Parts 2 and 3 with Michael Zinner – Architect of MySQL Workbench and Paul McCullaugh – Architect of the PBXT Storage Engine .