[postgis-users] How/where does postgis hook a callback to free cached geos structures?
Paragon Corporation
lr at pcorp.us
Sun Apr 21 21:04:45 PDT 2013
Sorry guys combining snippets from two separate emails here
> From memory, the PROJ.4 MemoryContext lives for the lifetime of a backend
so you shouldn't see the destructor being called that often. If you want to
use a similar trick for your standardizer, then take a look at the
(disabled) GetPROJ4SRSCache code in the same file.
> HTH,
> Mark.
Steve,
I was thinking that it's not a bad idea for the LGR cache to live for the
lifetime of the backend similar to what is done with Proj.
Take the case of a web service where you'll be getting millions of one off
requests for standardizing. You'd want all these queries to share the same
LGR if they request for the same LGR.
> So the way this works is we create a STD object and load that with a
lexicon, gazeteer and rules (LGR) tables. If we standardize a table with
multiple country addresses
> , then each country might have its own set of LGR tables so I would need
to create hash with the LGR as the key to fetch the correct STD object. This
seems to mirror the behavior of lwgeom_geos_prepared.c
> Thanks,
> - Steve
I personally would start off with worrying about one set (and destroy and
replace as needed). Chances are most people will just be using one set so
that will handle 90%.
It will also make it a bit easier to debug I think. Then when we have that
working fairly well and stress tested, then add support for multiple LGR
caches.
Mark,
Is it legal to kill a cache in a query call that did not create it (assuming
they are running on same backend process). Haven't looked at proj code and
probably wouldn't understand it if I did, but assume that is what you are
doing.
Example like I described above:
You have one query that uses us_LGR tables
Then another query comes along (or even the same query), wanting gb_LGR
And you are only maintaining one set of LGR in cache
Is it possible for the second query -- to say "cache doesn't have what I
need - wipe it out and replace with this new set?"
Or can you only get away with that if both are in the same query call?
I think performance wise we'd want multiple queries on same backend to share
that. I assume that there will be no contention since only one query can
run at a time per backend.
Thanks,
Regina
http://www.postgis.us
http://postgis.net
More information about the postgis-users
mailing list