RE: speeding up planning with partitions
| От | Imai, Yoshikazu |
|---|---|
| Тема | RE: speeding up planning with partitions |
| Дата | |
| Msg-id | 0F97FA9ABBDBE54F91744A9B37151A5129CC1D@g01jpexmbkw24 обсуждение исходный текст |
| Ответ на | Re: speeding up planning with partitions (Amit Langote <Langote_Amit_f8@lab.ntt.co.jp>) |
| Ответы |
Re: speeding up planning with partitions
|
| Список | pgsql-hackers |
Amit-san,
On Wed, Mar 6, 2019 at 5:38 AM, Amit Langote wrote:
...
> > I didn't investigate that problem, but there is another memory
> > increase
> issue, which is because of 0003 patch I think. I'll try to solve the latter
> issue.
>
> Interested in details as it seems to be a separate problem.
I solved this problem.
I think we don't need to do list_copy in the below code.
+ /*
+ * No need to copy of the RTEs themselves, but do copy the List
+ * structure.
+ */
+ subroot->parse->rtable = list_copy(rtable_with_target);
Because subroot->parse->rtable will be copied again by:
subroot->parse = (Query *)
adjust_appendrel_attrs(parent_root,
- (Node *) parent_parse,
+ (Node *) subroot->parse,
1, &appinfo);
So I modified the code and did test to confirm memory increasement don't happen. The test and results are below.
[test]
* Create partitioned table with 1536 partitions.
* Execute "update rt set a = random();"
[results]
A backend uses below amount of memory in update transaction:
HEAD: 807MB
With v26-0001, 0002: 790MB
With v26-0001, 0002, 0003: 860MB
With v26-0003 modified: 790MB
I attached the diff of modification for v26-0003 patch which also contains some refactoring.
Please see if it is ok.
(Sorry it is modification for v26 patch though latest ones are v28.)
--
Yoshikazu Imai
Вложения
В списке pgsql-hackers по дате отправления: