[Pgpool-hackers] patch "Caching query results in pgpool-II"
Tatsuo Ishii
ishii at sraoss.co.jp
Sun Jun 19 10:24:25 UTC 2011
Forgot to attach patches.
--
Tatsuo Ishii
SRA OSS, Inc. Japan
English: http://www.sraoss.co.jp/index_en.php
Japanese: http://www.sraoss.co.jp
>> 2011/6/14 Tatsuo Ishii <ishii at sraoss.co.jp>
>>
>>> Please explain what is implemented and what is not implemented in this
>>> patch.
>>>
>>
>> What is implemented in this patch are as below.
>> - connect to memcached.
>> - set RowDescription or DataRow on memcached.
>> - get RowDescription or DataRow on memcached by using key of md5(SELECT
>> convert).
>> - delete cache on memcached by using key of md5(SELECT convert). only
>> module.
>> - fetch and parse the fellowing data in pgpool.conf.
>>
>> memory_cache_enabled
>> memqcache_method
>> memqcache_memcached_host
>> memqcache_memcached_port
>> memqcache_total_size
>> memqcache_expire
>> memqcache_maxcache
>> memqcache_cache_block_size
>>
>> - add data to buffer before set data on memcached.
>> - get buffer in order to set it on memcached
>> - initialize buffer
>>
>> I am implemented only in Simple Query case.
>>
>>
>> What is not implemented in this patch are as below.
>> - shmem cache.
>> structure of managing table oids.
>> the space management map.
>> on memory query cache structure.
>>
>> - implementation in Extended Query case.
>>
>> - cache validation.
>> The result of SELECT using none IMMUTABLE functions is not cached.
>
> I have made a patch to implement a function which checks if a SELECT
> statement includes non IMMUTABLE function call.
>
> extern bool pool_has_non_immutable_function_call(Node *node);
>
> See attached patches.
>
> TODO:
>
> Some statements including:
>
> SELECT current_timestamp;
>
> is not detected by the function even if it uses IMMUTABLE function
> because it is translated to a non function form. Obviously we should
> not cache the result of current_timestamp. What should we do? Probably
> we have to have a heuristics to detect the particular form?
>
>> - remove cache
>> If cache is full, the least recently used cache is removed.
>> If a table is dropped or modified, related cache data is deleted.
>> If a table definition is modified(ALTER TABLE), related cache data is
>> deleted.
>> If a schema or database is dropped, related cache data is deleted.
>>
>>
>> This week I am mainly implementing the shmem cache.
>>
>> Regards
>> Masanori YAMAZAKI
>>
>>
>>
>>
>>> --
>>> Tatsuo Ishii
>>> SRA OSS, Inc. Japan
>>> English: http://www.sraoss.co.jp/index_en.php
>>> Japanese: http://www.sraoss.co.jp
>>>
>>> > Hello, hackers
>>> >
>>> > I have implemented a function caching query on memcached.
>>> > I am sending the patch file and it's so nice to give me some opinions.
>>> >
>>> > Main program which I implemented is as below.
>>> > - Search for cache data on memcached by using md5 which converted SELECT
>>> > into.
>>> > - Set data on memcached. The key is md5 which converted SELECT into.
>>> > The value is RowDescription, DataRow from Backend.
>>> >
>>> > [Modify files]
>>> > - pool.h
>>> > - child.c
>>> > - pool_config.l
>>> > - pool_config.h
>>> > - pool_config.c
>>> > - pool_system.c
>>> > - pool_proto_modules.c
>>> > - pool_process_query.c
>>> >
>>> > [New File]
>>> > - pool_memqcache.c
>>> >
>>> >
>>> > --
>>> > Regards
>>> > Masanori YAMAZAKI
>>>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: pool_select_walker.patch
Type: text/x-patch
Size: 4468 bytes
Desc: not available
URL: <http://pgfoundry.org/pipermail/pgpool-hackers/attachments/20110619/5929b6f2/attachment-0001.bin>
More information about the Pgpool-hackers
mailing list