Thread
Commits
-
Fill in extraUpdatedCols in logical replication
- 4a97f647ddbc 12.3 landed
- ad3ae64770e5 13.0 landed
-
Optimize update of tables with generated columns
- c6679e4fca21 13.0 landed
-
Optimize update of tables with generated columns
Peter Eisentraut <peter.eisentraut@2ndquadrant.com> — 2019-12-21T06:47:29Z
When updating a table row with generated columns, we only need to recompute those generated columns whose base columns have changed in this update and keep the rest unchanged. This can result in a significant performance benefit (easy to reproduce for example with a tsvector column). The required information was already kept in RangeTblEntry.extraUpdatedCols; we just have to make use of it. A small problem is that right now ExecSimpleRelationUpdate() does not populate extraUpdatedCols. That needs fixing first. This is also related to the issue discussed in "logical replication does not fire per-column triggers"[0]. I'll leave my patch here while that issue is being resolved. [0]: https://www.postgresql.org/message-id/flat/21673e2d-597c-6afe-637e-e8b10425b240%402ndquadrant.com -- Peter Eisentraut http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
-
Re: Optimize update of tables with generated columns
Peter Eisentraut <peter.eisentraut@2ndquadrant.com> — 2020-02-13T13:39:41Z
On 2019-12-21 07:47, Peter Eisentraut wrote: > When updating a table row with generated columns, we only need to > recompute those generated columns whose base columns have changed in > this update and keep the rest unchanged. This can result in a > significant performance benefit (easy to reproduce for example with a > tsvector column). The required information was already kept in > RangeTblEntry.extraUpdatedCols; we just have to make use of it. > > A small problem is that right now ExecSimpleRelationUpdate() does not > populate extraUpdatedCols. That needs fixing first. Here is an updated patch set that contains a fix for the issue above (should be backpatched IMO) and the actual performance patch as before. -- Peter Eisentraut http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
-
Re: Optimize update of tables with generated columns
Pavel Stehule <pavel.stehule@gmail.com> — 2020-02-13T15:16:46Z
čt 13. 2. 2020 v 14:40 odesílatel Peter Eisentraut < peter.eisentraut@2ndquadrant.com> napsal: > On 2019-12-21 07:47, Peter Eisentraut wrote: > > When updating a table row with generated columns, we only need to > > recompute those generated columns whose base columns have changed in > > this update and keep the rest unchanged. This can result in a > > significant performance benefit (easy to reproduce for example with a > > tsvector column). The required information was already kept in > > RangeTblEntry.extraUpdatedCols; we just have to make use of it. > > > > A small problem is that right now ExecSimpleRelationUpdate() does not > > populate extraUpdatedCols. That needs fixing first. > > Here is an updated patch set that contains a fix for the issue above > (should be backpatched IMO) and the actual performance patch as before. > + 1 I tested check-world without problems, and changes of patch has sense for me. Regards Pavel > -- > Peter Eisentraut http://www.2ndQuadrant.com/ > PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services >
-
Re: Optimize update of tables with generated columns
Peter Eisentraut <peter.eisentraut@2ndquadrant.com> — 2020-02-17T15:16:40Z
On 2020-02-13 16:16, Pavel Stehule wrote: > čt 13. 2. 2020 v 14:40 odesílatel Peter Eisentraut > <peter.eisentraut@2ndquadrant.com > <mailto:peter.eisentraut@2ndquadrant.com>> napsal: > > On 2019-12-21 07:47, Peter Eisentraut wrote: > > When updating a table row with generated columns, we only need to > > recompute those generated columns whose base columns have changed in > > this update and keep the rest unchanged. This can result in a > > significant performance benefit (easy to reproduce for example with a > > tsvector column). The required information was already kept in > > RangeTblEntry.extraUpdatedCols; we just have to make use of it. > > > > A small problem is that right now ExecSimpleRelationUpdate() does not > > populate extraUpdatedCols. That needs fixing first. > > Here is an updated patch set that contains a fix for the issue above > (should be backpatched IMO) and the actual performance patch as before. > > > + 1 > > I tested check-world without problems, and changes of patch has sense > for me. committed, thanks -- Peter Eisentraut http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services