From: | Xuneng Zhou <xunengzhou(at)gmail(dot)com> |
---|---|
To: | Nazir Bilal Yavuz <byavuz81(at)gmail(dot)com> |
Cc: | pgsql-hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>, Thomas Munro <thomas(dot)munro(at)gmail(dot)com>, wenhui qiu <qiuwenhuifx(at)gmail(dot)com> |
Subject: | Re: pgstattuple: Use streaming read API in pgstatindex functions |
Date: | 2025-10-13 11:41:06 |
Message-ID: | CABPTF7WU7ibRkVh2a1uh3dwjmSs_-HxtyAHcu6S_r5ZLT9Hh1Q@mail.gmail.com |
Views: | Whole Thread | Raw Message | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Hi,
On Mon, Oct 13, 2025 at 5:42 PM Nazir Bilal Yavuz <byavuz81(at)gmail(dot)com> wrote:
>
> Hi,
>
> On Mon, 13 Oct 2025 at 11:42, Xuneng Zhou <xunengzhou(at)gmail(dot)com> wrote:
> >
> > Here is patch v3. The comments have been added, and the extra scope
> > ({}) has been removed as suggested.
>
> Thanks, the code looks good to me!
>
> The benchmark results are nice. I have a quick question about the
> setup, if you are benchmarking with the default io_method (worker),
> then the results might show the combined benefit of async I/O and
> streaming I/O, rather than just streaming I/O alone. If that is the
> case, I would suggest also running a benchmark with io_method=sync to
> isolate the performance impact of streaming I/O. You might get
> interesting results.
The previous benchmark was conducted using the default
io_method=worker. The following results are from a new benchmark run
with io_method=sync. The performance gains from streaming reads are
still present, though smaller than those observed when asynchronous
I/O and streaming I/O are combined — which is expected. Thanks for the
suggestion!
Fragmented Indexes (Cold Cache)
Index Type Size Baseline Patched Speedup
Primary Key Medium 43.80 ms 38.61 ms 1.13×
Primary Key Large 238.24 ms 202.47 ms 1.17×
Primary Key XLarge 962.90 ms 793.57 ms 1.21×
Timestamp Medium 33.34 ms 29.98 ms 1.11×
Timestamp Large 190.41 ms 161.34 ms 1.18×
Timestamp XLarge 794.52 ms 647.82 ms 1.22×
Float (score) Medium 14.46 ms 13.51 ms 1.06×
Float (score) Large 87.38 ms 77.22 ms 1.13×
Float (score) XLarge 278.47 ms 233.22 ms 1.19×
Composite (3 col) Medium 44.49 ms 40.10 ms 1.10×
Composite (3 col) Large 244.86 ms 211.01 ms 1.16×
Composite (3 col) XLarge 1073.32 ms 872.42 ms 1.23×
________________________________
Fragmented Indexes (Warm Cache)
Index Type Size Baseline Patched Speedup
Primary Key Medium 7.91 ms 7.88 ms 1.00×
Primary Key Large 35.58 ms 36.41 ms 0.97×
Primary Key XLarge 126.29 ms 126.95 ms 0.99×
Timestamp Medium 5.14 ms 6.82 ms 0.75×
Timestamp Large 22.96 ms 29.55 ms 0.77×
Timestamp XLarge 104.26 ms 106.01 ms 0.98×
Float (score) Medium 3.76 ms 4.18 ms 0.90×
Float (score) Large 13.65 ms 13.01 ms 1.04×
Float (score) XLarge 40.58 ms 41.28 ms 0.98×
Composite (3 col) Medium 8.23 ms 8.25 ms 0.99×
Composite (3 col) Large 37.10 ms 37.59 ms 0.98×
Composite (3 col) XLarge 139.89 ms 138.21 ms 1.01×
Best,
Xuneng
Attachment | Content-Type | Size |
---|---|---|
detailed benchmark results.rtf | text/rtf | 9.9 KB |
v4-0001-pgstattuple-Use-streaming-read-API-in-pgstatindex.patch | application/octet-stream | 4.2 KB |
From | Date | Subject | |
---|---|---|---|
Next Message | Amit Kapila | 2025-10-13 11:48:32 | Re: [PATCH TEST] Fix logical replication setup in subscription test `t/009_matviews.pl` |
Previous Message | Álvaro Herrera | 2025-10-13 11:39:09 | Re: Reorganize GUC structs |