Search Postgresql Archives

Re: named cache

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Matthew Peter wrote:
--- Willy-Bas Loos <willybas@xxxxxxxxx> wrote:

maybe you would find "materialized views" interesting.
http://www.google.com/search?q=materialized+view+postgresql


On 12/1/06, Matthew Peter <survivedsushi@xxxxxxxxx> wrote:
Is it possible to put an query result into memory? Like SELECT * from
table WHERE
[...] CACHE cache_name TIMEOUT '1 hour'::interval; So if "cache_name"
exists with
the same SQL statement, the result would be fetched from the cache,
refreshing and
updating the cache with fresh results when it expires? Reducing disk
reads, query
times, etc.




That is basically the idea but talk about a headache. Too many functions and
triggers to handle a single view none the less.

Rather, why not write an function to use SELECT INTO and put the new tables in a
schema named "cache." Drop and recreate the schema cached tables of the views and
wallah. Making this process cleanly abstracted into the background with 4 additional
words would be a beautiful thing. eg,

SELECT * from table WHERE [...] CACHE cache_name TIMEOUT interval;

Since it's a cache, it doesn't need to be updated until the TIMEOUT expires and
permissions can be inherited by the VIEW that creates it, etc. Or if that is that an SQL-spec no-no? Maybe...
CREATE CACHED VIEW on view_name as view_name_cache TIMEOUT interval;

Oh ya. Like CREATE UNIQUE INDEX. Now querying from view_name_cache will not effect
querying from the original view view_name for fresh data!

Internally implemented the cached views could be put in a schema like pg_cache, in
RAM, etc. Doesn't really matter. Would just be nice to have something seamless,
clean, upgrade agnostic, and easy! Thoughts?


There was a discussion on pgsql-hackers about a month and a half ago that went along these lines. The talk started with the idea of integrating pgmemcached into Postgres.

The main result was that the current postgres cache and system cache would give the same results as using forced caching configuration.

The overhead of the client connection and sql parsing/planning would negate the benefits of specifying what is cached.

One option that was brought up was to create a ram disk and then create a tablespace on that disk with tables to hold what you want to cache. Of course maintaining that between restarts becomes a hassle as well. And if you have enough ram to do that then you have enough for PostgreSQL to cache the data that is used in ram anyway.

Using pgmemcached outside of the pg client connection allows you to bypass the sql parsing and planning and get the speed improvements you are looking for but that is handled by the client not the server.


--

Shane Ambler
pgSQL@xxxxxxxxxxxxxxxx

Get Sheeky @ http://Sheeky.Biz


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux