MemcachedLocal
MemcachedLocal caches the MT internal data, such as entry tags and comment counts, to the local memory, which allows you to speed up rebuilding templates especially under FastCGI environment.
Background
Some MT objects have both of internal data and external meta data. As for an MT::Entry object named $entry, $entry->comment_count and $entry->ping_count are typical examples of external meta data, which can be obtained not from 'mt_entry' table but from foreign tables such as 'mt_comment', 'mt_trackback', and 'mt_tbping'. It is natural to access the external meta data takes much longer time than to access the internal data, such as $entry->authored_on or $entry->title.
To amortize such overhead and to be able to access external data as quickly as possible, MT4 has a two-level caching mechanism for external meta data of MT objects.
For L1-cache, MT4 associates external meta data with an MT object. First time you call $entry->comment_count, MT calculates its value by using foreign tables, and stores it as a property of the object. After that, you can reuse the value without any calcluation. It's good. But, L1-cache has the same lifetime of the target object, which could be shorter than the lifetime of the session. Because, everytime sessions are finished, almost all of MT objects could be destroyed from the local memory, of course with L1-cache. Therefore, we can't reuse L1-cache across multiple sessions or multiple FastCGI requests.
For L2-cache, on the other hand, MT4 stores external meta data to Memcached. External meta data are stored persistently in Memcached, so we can reuse them across multiple sessions. Of course, this feature is avaiable only when you employ Memcached, and L2-cache based on Memcached, which is an external process, is much slower than L1-cache stored inside the Perl runtime object.
How it works
To resolve such situations, MemcacheLocal plugin enables the L2-caching feature without using Memcached.
Unlike Memcached-based L2-cache, MemcachedLocal stores the external meta data to the local memory and keeps them as long as the application instance lives. So, typically under the FastCGI environment, the application can reuse the external meta data without accessing foreign tables.
Moreover, MemcachedLocal realizes faster L2-cache than Memcached does, because of using the internal heap space. Of course, there is a trade-off point. MemcachedLocal has less scalability than Memcached does.

Timothy Appnel
October 2, 2007 7:51 PM | Reply
While memory caching will boost performance, this plugin seems to do the same thing as the built-in Data::ObjectDriver::Driver::Cache::RAM class that MT will use by default if memcached is not available.
Hirotaka Ogawa
October 2, 2007 10:10 PM | Reply
Memcached caches external meta data of MT objects as well as the contents of objects. For example, MTEntryCommentCount and MTEntryPingCount are typical examples of external meta data for MT::Entry.
This plugin allows you to cache such external meta data to the local memory without employing memcached.
I performed preliminary benchmarking tests by using mt-search.fcgi. You can see how much MemcachedLocal reduces the rendering times.
http://spreadsheets.google.com/pub?key=p05llkILPlbKaUHnM5dvdEA&gid=0