February 15, 2008

Hello world!

Hey Wiki people! In our new new push to get more of the MindTouch devs out of the murky shadows, I’d like to say hi and share what I’ve been hacking on recently. First a bit about what I do here.. I’ve been focusing on the API side of the wiki working on features such as attachments, permissioning, authentication, etc.. They don’t let me touch the UI too much.. something about not knowing ‘color theory’ whatever that means. But I’m cool with that :)

Lately I’ve been spending quite a bit of time making the wiki faster by optimizing sql statements (execution plan is your friend!), profiling api calls, reducing memory allocations, etc. Many of the optimizations I’ve chased down have led me to the innards of MySql’s .NET connector library. We’ve submitted several bug reports to MySql and most of them have already been accepted into their community release.

One very promising issue I’m working on now could substantially improve the performance of this library and in many cases potentially cut in half the time it takes to perform a db call (of which we do many). To try to summarize, this lib performs a full round trip Ping request before executing every query. It does this (afaik) only to ensure that the db is up and running. As many queries are designed to use the query cache and execute instantly, this effectively **doubles** the execution time. I’ve modified the lib by removing the ping and more gracefully handling the case when the db is unreachable by scrapping the dead connection and retrying once on a fresh one. Although it works great for me and everyone in the office, I’d like to get this lib in the hands of more people before including it in a release of Deki Wiki. Take a look here if you want to help test it and make Deki Wiki (as well as all other .net MySql applications) run faster!

Now that I’ve probably bored 95% of you, I’ll end here and try to keep future posts shorter and maybe even more interesting! Though if you want to hunt me down and chat about performance or other techy Deki Wiki stuff, you can normally find me and other devs idling on irc.freenode.net #opengarden

Peace!

Max

2 Comments »

  1. If I understand well you want to fork the library because of the Ping change? If yes, why not submitting the modification upstream?

    Regards.

    Comment by knocte — February 17, 2008 @ 11:25 am

  2. @knocte: We don’t want to fork. We’re just asking for help testing this change - we *do* submit all our patches upstream to Reggie Burnett. There’s no reason we can’t ask people to help us test while we send it upstream :)

    Comment by Roy — February 18, 2008 @ 10:42 pm

RSS feed for comments on this post. TrackBack URL

Leave a comment