Re: [RFC] How about changing the default value of defaultRowFetchSize?

From: Vladimir Sitnikov <sitnikov(dot)vladimir(at)gmail(dot)com>
To: Jorge Solórzano <jorsol(at)gmail(dot)com>, Mark Rotteveel <mark(at)lawinegevaar(dot)nl>
Cc: List <pgsql-jdbc(at)postgresql(dot)org>
Subject: Re: [RFC] How about changing the default value of defaultRowFetchSize?
Date: 2016-10-20 16:33:16
Message-ID: CAB=Je-GS1xewXds4d4pj-OtfshrJdVpwbQE+vd9CMCB99s8iOQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-jdbc

Jorge>The value of 0 should be used to fetch all rows, if we ​leave the
default at 0 and handle internally that as 100 (and reporting it as 0) it
is a wrong behavior.

Note that "unset" and "set to 0" might have different meanings for a good
(or bad?) reason.

There's non-zero overhead when using low fetch sizes for narrow tables:
https://github.com/pgjdbc/pgjdbc/issues/292#issuecomment-107249028
E.g. 1.7 times difference for fetchsize 1000 and 100 for fetching 2000 rows
of 4 int4 over localhost connection.

Ideally, I would like the backend to support "fetch at most 10000 rows and
at most 1MiB" kind of requests.

Unfortunately, PG does not yet support "byte size limited" fetches, so we
might implement some "machine learning" trick: "fetch 100 rows, calculate
average row size, then adjust fetch size so subsequent fetch would be close
to the desired "fetch byte length"

Anyway, I think it makes sense to switch to some non-zero value for
defaultRowFetchSize, then implement "fetch size autoscaling".

Vladimir

In response to

Responses

Browse pgsql-jdbc by date

  From Date Subject
Next Message Jorge Solórzano 2016-10-20 17:30:07 Re: [RFC] How about changing the default value of defaultRowFetchSize?
Previous Message Jorge Solórzano 2016-10-20 15:59:30 Re: [RFC] How about changing the default value of defaultRowFetchSize?