[wp-trac] Re: [WordPress Trac] #2268: get_option() on non-existent option always invokes new query

WordPress Trac wp-trac at lists.automattic.com
Thu Feb 1 10:02:29 GMT 2007

#2268: get_option() on non-existent option always invokes new query
 Reporter:  markjaquith              |        Owner:  markjaquith
     Type:  defect                   |       Status:  closed     
 Priority:  high                     |    Milestone:  2.2        
Component:  Optimization             |      Version:  2.1        
 Severity:  normal                   |   Resolution:  fixed      
 Keywords:  has-patch needs-testing  |  
Comment (by markjaquith):

 To explain this a bit:

  * Two pseudo-options are stored in the object cache (just there, not in
 the DB)
  * 'notoptions' stores all attempted non-options so that the DB isn't
 accessed more than once trying to load these options that don't exist
  * 'alloptions' stores all autoloaded options. The first time any option
 is queried, 'alloptions' will be populated (either from the DB, or from a
 persistent object cache). If the option is in there (likely, most options
 are autoloaded), it'll be read from there. So you just have one cache read
 for all your autoloaded options.
  * Non-autoloaded options revert to the options cache as before (one item
 per cache entry).
  * Since the loading of the autoloaded options is used by get_option(),
 people using alternative object caches will no longer see individual
 queries for each option on the first load (i.e. with an empty object

 All of this should be transparent. As long as you use get_option(),
 add_option(), update_option(), and delete_option(), it should be like
 nothing ever happened.

 This should reduce cache misses to zero (or close to it), and it should
 reduce redundant queries.

Ticket URL: <http://trac.wordpress.org/ticket/2268#comment:15>
WordPress Trac <http://trac.wordpress.org/>
WordPress blogging software

More information about the wp-trac mailing list