[drupal-devel] Re: Database analysis of CivicSpace/Drupal
Kieran Lal
kieran at civicspacelabs.org
Sat Apr 16 02:28:21 UTC 2005
How about that 68 fields involved in JOINs are not indexed?
So every time there is a join operation the database has to do search
through every record on that field. Of course, if I had just waited
until people thought it was a problem we wouldn't know it was a problem
;-)
Kieran
On Apr 15, 2005, at 6:36 PM, Dan Robinson wrote:
> what problem are we trying to solve here?
>
> Dan
>
>> There are currently 107 database tables in the latest release of
>> CivicSpace. I believe there are 55 in Drupal core. One of the most
>> important things you can do in improving database performance is to
>> make sure you have the right indicies for your database. Currently we
>> do not use foriegn keys to enforce relationships between database
>> tables. I did an analysis of the CivicSpace code base and found that
>> there was 156 SQL statements with at least one JOIN. We can consider
>> these as application level relationships between tables. Here is a
>> visual representation of those JOINs:
>> http://civicspacelabs.org/home/files/schema.png I also analysed the
>> indicies of the current database schema. There are 182 indicies.
>>
>> The question was do they match? The answer was no.
>>
>> There are at least 68 fields that are joined which do not have
>> indicies from my initial analysis. Here are the fields in my blog
>> post:
>> http://civicspacelabs.org/home/node/12245
>>
>> The scientific method teaches us that results are useless, unless you
>> have a repeatable method. I am going to explain in this book(
>> http://civicspacelabs.org/home/node/12246 ), Drupal-Docs folks, how I
>> conducted this analysis and it needs to be repeated and verified
>> before being acted upon. I built several tools with help from Drumm,
>> Ankur, Tom Eliaz, and Chris Johnson(cxj). It's possible those tools
>> ran amok.
>>
>> This is the first step in what I hope will be a continued analysis of
>> the database layer in Drupal. The next step will be to extend
>> devel.module to do batch updates of page executions times and mysql
>> query times. I have several theories about how to do this properly
>> and would appreciate your input. The final stage will be to create a
>> documented database schema that allows for external application
>> integration with common labels. If we want to integrate with
>> non-drupal applications we will have to allow for semantic mapping of
>> our database schema to a common database bus architecture(See Ralph
>> Kimball http://www.rkimball.com/). But I'lll leave that for another
>> discussion.
>>
>> Cheers,
>> Kieran
>>
>> P.S. I am off to go mountain biking, hiking, and kayaking in Hawaii
>> for a week so don't expect too many responses from me.
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: civicspace-dev-unsubscribe at civicspacelabs.org
>> For additional commands, e-mail:
>> civicspace-dev-help at civicspacelabs.org
>>
>>
>
More information about the drupal-devel
mailing list