pgsql: hio: Take number of prior relation extensions into account

Поиск
Список
Период
Сортировка
От Andres Freund
Тема pgsql: hio: Take number of prior relation extensions into account
Дата
Msg-id E1qVclu-0007yC-LQ@gemulon.postgresql.org
обсуждение исходный текст
Список pgsql-committers
hio: Take number of prior relation extensions into account

The new relation extension logic, introduced in 00d1e02be24, could lead to
slowdowns in some scenarios. E.g., when loading narrow rows into a table using
COPY, the caller of RelationGetBufferForTuple() will only request a small
number of pages. Without concurrency, we just extended using pwritev() in that
case. However, if there is *some* concurrency, we switched between extending
by a small number of pages and a larger number of pages, depending on the
number of waiters for the relation extension logic.  However, some
filesystems, XFS in particular, do not perform well when switching between
extending files using fallocate() and pwritev().

To avoid that issue, remember the number of prior relation extensions in
BulkInsertState and extend more aggressively if there were prior relation
extensions. That not just avoids the aforementioned slowdown, but also leads
to noticeable performance gains in other situations, primarily due to
extending more aggressively when there is no concurrency. I should have done
it this way from the get go.

Reported-by: Masahiko Sawada <sawada.mshk@gmail.com>
Author: Andres Freund <andres@anarazel.de>
Discussion: https://postgr.es/m/CAD21AoDvDmUQeJtZrau1ovnT_smN940=Kp6mszNGK3bq9yRN6g@mail.gmail.com
Backpatch: 16-, where the new relation extension code was added

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/82a4edabd272f70d044faec8cf7fd1eab92d9991

Modified Files
--------------
src/backend/access/heap/heapam.c |  1 +
src/backend/access/heap/hio.c    | 19 +++++++++++++++++++
src/include/access/hio.h         | 13 ++++++++++---
3 files changed, 30 insertions(+), 3 deletions(-)


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

Предыдущее
От: Bruce Momjian
Дата:
Сообщение: pgsql: pgtest: fix spacing
Следующее
От: Bruce Momjian
Дата:
Сообщение: pgsql: doc: PG 16 relnotes: udpate for commits since branching