This post originated from an RSS feed registered with PHP Buzz
by Jackson Miller.
Original Post: Using InnoDB with Serendipity
Feed Title: Jaxn.org
Feed URL: http://jaxn.org
Feed Description: PHP thoughts on architecture and application design. Includes development information about Core Enterprise PHP.
I have switched the Serendipity install on jaxn.org to InnoDB tables from MyISAM tables. Using InnoDB tables has it's pros and cons in this situation, but for me it is the best thing to do.
By using InnoDB tables I give up a few things. The biggest downside to using InnoDB tables is that I may break future upgrades that have to alter tables (most notable if it has to do with Fulltext indexes). The other main downside is that without the support of Fulltext indexes, the search plugin will not work. I may switch to Google search or I may write a search plugin that does not use Fulltext indexes (I am temporarily disabling search).
However, there are some serious cons to using MyISAM tables which I feel affect more users and are solvable by moving to InnoDB tables. The biggest of which is table locking. MyISAM tables are locked when doing an insert or update whereas InnoDB tables implement row-level locking for inserts and updates. Since I update regularly this is a little problem, but when I am under attack from a TrackBack spammer, then the site is unusable. Since all pages access the comments table, a steady stream of comments keeps the table locked and the site slows to a crawl. There are days when I have hundreds of TrackBacks that get accepted from a spammer (awaiting moderation so no users see them); there are probably hundreds more that get blocked. Using InnoDB tables will keep the site swimming along even during an attack.
Update: When Serendipity's search function fails it really fails ugly. I am disabling search for the time being.