1. 05 12月, 2011 1 次提交
    • X
      implements a much faster auto EXPLAIN, closes #3843 [José Valim & Xavier Noria] · cfeac38e
      Xavier Noria 提交于
      This commit vastly reduces the impact of auto
      explain logging when enabled, while keeping
      a negligible cost when disabled.
      
      The first implementation was based on the idea
      of subscribing to "sql.active_record" when
      needed, and unsubscribing once done. This is
      the idea behind AR::Relation#explain. Subscribe,
      collect, unsubscribe.
      
      But with the current implementation of notifications
      unsubscribing is costly, because it wipes an internal
      cache and that puts a penalty on the next event.
      
      So we are switching to an approach where a long-running
      subscriber is listening. Instead of collecting the
      queries with a closure in a dedicated subscriber, now
      we setup a thread local.
      
      If the feature is disabled by setting the threshold
      to nil, the subscriber will call a method that does
      nothing. That's totally cheap.
      cfeac38e
  2. 04 12月, 2011 6 次提交
  3. 03 12月, 2011 20 次提交
  4. 02 12月, 2011 13 次提交