I'd appreciate suggestions on how to implement the query log for devel.module now that the new DB layer has landed. I've already submitted a patch to add timing info: http://drupal.org/node/298669 But, it seems that PDO will not show us the SQL that was executed for any given prepared statement. We have access to the statement with placeholders, but that can be verbose as sin, and can't be copy/pasted into a console. Here is a statement for cache_set(): INSERT INTO {cache_registry} (serialized, created, expire, headers, DATA, cid) VALUES (:db_insert_placeholder_0, :db_insert_placeholder_1, :db_insert_placeholder_2, :db_insert_placeholder_3, :db_insert_placeholder_4, :db_insert_placeholder_5) ON DUPLICATE KEY UPDATE serialized=:db_update_placeholder_0, created=:db_update_placeholder_1, expire=:db_update_placeholder_2, headers=:db_update_placeholder_3, DATA=:db_update_placeholder_4 Not so readable, eh? So, should we grab the executed SQL from the DB itself? I had some success with mysql SHOW PROFILES command - http://dev.mysql.com/tech-resources/articles/using-new-query-profiler.html. In order to fully implement that, I need a hook before and after the query is executed so i can start and stop profiling. The profiler will only log 100 queries at a time and our pages require more than that. Other DB backends would need a different approach.