[development] Tip for large site scaling: tracker.module considered harmful

Chris Johnson chris at tinpixel.com
Wed Nov 30 04:41:33 UTC 2005

This is a good example of why one might want to use PostgreSQL instead of 
MySQL for a Drupal site.


Khalid B wrote:
> Seems like your site should move to a more modern ACID table
> database, for example switching from MyISAM to Inno should
> help, since it provides row level locking.
> In conjunction with this, a few changes to the db layer will be needed
> (e.g. locking the whole table should not be done).

> On 11/29/05, John Handelaar <john at userfrenzy.com> wrote:

>>1.  Some tracker module queries, particularly the one which
>>     shows 'all my posts' to individual users, stop functioning
>>     on large data sets.  In this case, queries ran for >600s
>>2.  An INSERT/UPDATE on {comments} while those queries are
>>     trying to complete will be stalled, waiting for a full-table
>>     lock (MySQL + MyISAM).
>>3.  While there is an INSERT/UPDATE waiting to execute, *all*
>>     other SELECTS on the same table are frozen and marked as
>>     'Locked' in MySQL's process list until 1) and 2) are complete.
>>Add 100 logged-in users, simmer for about 3 minutes -> MySQL server
>>drops dead with 'Too many connections' (whether using mysql_pconnect()
>>or not).
>>Workaround:  under *no* circumstances enable tracker.module on a
>>heavily-used site which gives posting rights to visitors.

More information about the development mailing list