Re: [Proposal] Global temporary tables

Поиск
Список
Период
Сортировка
От 曾文旌
Тема Re: [Proposal] Global temporary tables
Дата
Msg-id 350F7BE8-369F-45C3-AC4D-0C9313E35FA2@alibaba-inc.com
обсуждение исходный текст
Ответ на Re: [Proposal] Global temporary tables  ("movead.li@highgo.ca" <movead.li@highgo.ca>)
Список pgsql-hackers
Thank you very much for reviewing this patch.
This is very important to improve the GTT.

2020年8月3日 下午3:09,movead.li@highgo.ca 写道:


>Fixed in global_temporary_table_v29-pg13.patch
>Please check.

I find this is the most latest mail with an attachment, so I test and reply on
this thread, several points as below:

1. I notice it produces new relfilenode when new session login and some
data insert. But the relfilenode column in pg_class still the one when create
the global temp table. I think you can try to show 0 in this area as what nail
relation does. 
I think getting the GTT to have a default relfilenode looks closer to the existing implementation, and setting it to 0 requires extra work and has no clear benefit.
What do you think?
I'd like to know the reasons for your suggestion.


2. The nail relations handle their relfilenodes by RelMapFile struct, and this
patch use hash entry and relfilenode_list, maybe RelMapFile approach more
understandable in my opinion. Sorry if I miss the real design for that.
We can see the STORAGE and statistics info for the GTT, including relfilenode, through view pg_gtt_relstats

postgres=# \d gtt
                Table "public.gtt"
 Column |  Type   | Collation | Nullable | Default 
--------+---------+-----------+----------+---------
 a      | integer |           |          | 
 b      | integer |           |          | 

postgres=# insert into gtt values(1,1);
INSERT 0 1
postgres=# select * from pg_gtt_relstats ;
 schemaname | tablename | relfilenode | relpages | reltuples | relallvisible | relfrozenxid | relminmxid 
------------+-----------+-------------+----------+-----------+---------------+--------------+------------
 public     | gtt       |       16384 |        0 |         0 |             0 |          532 |          1
(1 row)

postgres=# truncate gtt;
TRUNCATE TABLE
postgres=# select * from pg_gtt_relstats ;
 schemaname | tablename | relfilenode | relpages | reltuples | relallvisible | relfrozenxid | relminmxid 
------------+-----------+-------------+----------+-----------+---------------+--------------+------------
 public     | gtt       |       16387 |        0 |         0 |             0 |          533 |          1
(1 row)


3. I get a wrong result of pg_relation_filepath() function for global temp table,
I think it's necessaryto keep this an correct output.

postgres=# select pg_relation_filepath(oid) from pg_class where relname = 'gtt';
 pg_relation_filepath 
----------------------
 base/13835/t3_16384
(1 row)

I didn't find anything wrong. Could you please give me a demo.


4. In gtt_search_by_relid() function, it has not handle the missing_ok argument
if gtt_storage_local_hash is null. There should be some comments if it's the right
code.
This is a problem that has been fixed in global_temporary_table_v34-pg13.patch.


5. It's a long patch and hard to review, I think it will pretty good if it can be
divided into several subpatches with relatively independent subfunctions.
Thank you for your suggestion, and I am considering doing so, including adding comments.


Wenjing



Regards,
Highgo Software (Canada/China/Pakistan)
URL : www.highgo.ca
EMAIL: mailto:movead(dot)li(at)highgo(dot)ca

Вложения

В списке pgsql-hackers по дате отправления:

Предыдущее
От: Kasahara Tatsuhito
Дата:
Сообщение: Re: Creating a function for exposing memory usage of backend process
Следующее
От: 曾文旌
Дата:
Сообщение: Re: [Proposal] Global temporary tables