[wp-hackers] how big objects can i cache using wp transient api?

Phillip Lord phillip.lord at newcastle.ac.uk
Tue Oct 4 10:03:30 UTC 2011


Hmmm. If it's getting memory cached, this might also be a problem!

It's not clear to me from the documentation what the expectation is for
the transients API, and what sort of scale of usage it is meant to take.
Currently, I am putting XML documents describing metadata for
bibliographics references into it; it works fine where there are several
hundred, but I do wonder whether it will scale to many thousands.

In the end, I'll probably port this to Custom Posts for other reasons (I
want to control the expiration more), but it's good to know in that it
shouldn't explode in the short term. 

Phil


peter baylies <pbaylies at gmail.com> writes:

> You snipped the part where the results get cached; in regular usage, that
> SQL query shouldn't get executed again on subsequent calls to
> wp_load_alloptions() so I wouldn't worry about it too much.
>
>  -- Peter
>
> On Mon, Oct 3, 2011 at 7:03 AM, Phillip Lord
> <phillip.lord at newcastle.ac.uk>wrote:
>
>>
>> I have been worrying about this also.
>>
>> I may have this wrong, but looking at the back end implementation,
>> transients appears to back on directly to the options API. Now at times,
>> this calls "wp_load_alloptions()"
>>
>>
>> function get_transient( $transient ) {
>>      // ....snip
>>
>>                        // If option is not in alloptions, it is not
>> autoloaded and thus has a timeout
>>                        $alloptions = wp_load_alloptions();
>>      // .... snip
>> }
>>
>> which in turn looks like this...
>>
>>
>> function wp_load_alloptions() {
>>              // ....snip
>>
>>                if ( !$alloptions_db = $wpdb->get_results( "SELECT
>> option_name, option_value FROM $wpdb->options WHERE autoload = 'yes'" ) )
>>                        $alloptions_db = $wpdb->get_results( "SELECT
>> option_name, option_value FROM $wpdb->options" );
>>              // ....snip
>> }
>>
>>
>> So, it seems to me, that extensive use of the transients API with big
>> things is going to come with a substantial performance problem.
>> Potentially, this will affect not just "get_transient" calls but also
>> anything that results in wp_load_alloptions() being called.
>>
>> The reason I mention this, is I have tried putting a reasonable amount
>> of stuff (100's of records, although not individually large) into
>> transients. I also appear to be getting some memory issues, and I am a
>> bit suspicious that this is transients, but haven't had time to
>> investigate really heavily.
>>
>> I was thinking of rewriting the entire thing as a custom post type,
>> although this seems a pity as the transients API otherwise does (nearly)
>> what I need.
>>
>> Am I barking up the wrong tree here? Have I totally misunderstood the
>> implementation?
>>
>> Phil
>>
>>
>> Otto <otto at ottodestruct.com> writes:
>> > The option_value is longtext, which has a maximum size of 2^32-1
>> > (4,294,967,295) characters.
>> >
>> > In practical terms, the limit will be lower, but there's no particular
>> > issue with storing large data values in a transient. You may have
>> > speed issues in retrieving something that large from the database very
>> > often though. I'd suggest evaluating what parts of the data you
>> > actually need to use and store only those. If you're using the whole
>> > thing, then maybe another approach would work better, such as storing
>> > it in a custom post type.
>> >
>> > -Otto
>> >
>> >
>> >
>> > On Fri, Sep 30, 2011 at 5:41 AM, Konrad Karpieszuk
>> > <kkarpieszuk at gmail.com> wrote:
>> >> hello
>> >>
>> >> i cannnot find answer for this question. i have quite huge array which
>> >> i want to remember in transient. this array after serialization has
>> >> lenght over 300000 signs ( i check this using
>> >> strlen(serialize($my_array))
>> >>
>> >> will it be a problem for transient api?
>> >>
>> >> --
>> >> (en) regards / (pl) pozdrawiam
>> >> Konrad Karpieszuk
>> >> _______________________________________________
>> >> wp-hackers mailing list
>> >> wp-hackers at lists.automattic.com
>> >> http://lists.automattic.com/mailman/listinfo/wp-hackers
>> >>
>> > _______________________________________________
>> > wp-hackers mailing list
>> > wp-hackers at lists.automattic.com
>> > http://lists.automattic.com/mailman/listinfo/wp-hackers
>> >
>> >
>>
>> --
>> Phillip Lord,                           Phone: +44 (0) 191 222 7827
>> Lecturer in Bioinformatics,             Email:
>> phillip.lord at newcastle.ac.uk
>> School of Computing Science,
>> http://homepages.cs.ncl.ac.uk/phillip.lord
>> Room 914 Claremont Tower,               skype: russet_apples
>> Newcastle University,                   msn: msn at russet.org.uk
>> NE1 7RU                                 twitter: phillord
>> _______________________________________________
>> wp-hackers mailing list
>> wp-hackers at lists.automattic.com
>> http://lists.automattic.com/mailman/listinfo/wp-hackers
>>
> _______________________________________________
> wp-hackers mailing list
> wp-hackers at lists.automattic.com
> http://lists.automattic.com/mailman/listinfo/wp-hackers
>
>

-- 
Phillip Lord,                           Phone: +44 (0) 191 222 7827
Lecturer in Bioinformatics,             Email: phillip.lord at newcastle.ac.uk
School of Computing Science,            http://homepages.cs.ncl.ac.uk/phillip.lord
Room 914 Claremont Tower,               skype: russet_apples
Newcastle University,                   msn: msn at russet.org.uk
NE1 7RU                                 twitter: phillord


More information about the wp-hackers mailing list