[development] Caching, caching, caching...
Moshe Weitzman
weitzman at tejasa.com
Sat Jul 22 16:52:51 UTC 2006
Dries Buytaert wrote:
>
> On 21 Jul 2006, at 15:15, Moshe Weitzman wrote:
>> i can't think of any reasonable assumptions. to me, the waste is not
>> that we have to perform so many queries, but rather that we do so on
>> every page view even though the data rarely changes. to address that,
>> one should use mysql query cache or even memcached.
>
> A query cache only eliminates part of the overhead. Most of the
> overhead comes from Drupal's database abstraction layer, not from
> execution the actual SQL query:
>
> http://buytaert.net/drupal-database-interaction
>
> We gain most if we eliminate calls to db_query(). We use a MySQL query
> cache on drupal.org, and the one query that retrieves the URL alias is
> still to most expensive query (accumulated cost).
good point. i guess you have looked at opportunities for improvement in
db_query() and friends? I suspect that the slowdown is due to regular
expressions. I'm not fluent enough to evaluate which are slow, but here is
the list of DB functions that contain a regex.
db_query
db_query_range
db_rewrite_sql
db_escape_table
db_query_temporary - only used for search i think
Also, we call mysqlescapestring() an awful lot, to sanitize data in the
query. We do so even when the data is known safe. I wonder if this is
expensive or not?
@Dries - did you have the devel.module query log enabled when you did your
analysis? That log calls debug_backtrace() for every query and could
conceivably slow things down.
So, someone please look at these regex and see if they are expensive, and if
we can improve them. Or identify some other cause of delay in our DB
abstraction. The timer API might be useful here.
-moshe
More information about the development
mailing list