[drupal-devel] Database analysis of CivicSpace/Drupal
Kieran Lal
kieran at civicspacelabs.org
Sat Apr 16 00:08:08 UTC 2005
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.
More information about the drupal-devel
mailing list