On Mon, 3 Sep 2018 at 10:48, Mate Varga <m...@matevarga.net> wrote: > That's 1690 msec (1.69 seconds, and that is how long it takes to fetch 20k > (small-ish) rows without LOBs (LOBs are a few lines below on the screenshot) >
that sound high as well! Something isn't adding up.. Dave Cramer da...@postgresintl.com www.postgresintl.com > > On Mon, Sep 3, 2018 at 4:40 PM Dave Cramer <p...@fastcrypt.com> wrote: > >> the one you have highlighted ~1.69ms >> >> Dave Cramer >> >> da...@postgresintl.com >> www.postgresintl.com >> >> >> On Mon, 3 Sep 2018 at 10:38, Mate Varga <m...@matevarga.net> wrote: >> >>> Which frame do you refer to? >>> >>> On Mon, Sep 3, 2018 at 3:57 PM Dave Cramer <p...@fastcrypt.com> wrote: >>> >>>> Not sure why reading from a socket is taking 1ms ? >>>> >>>> Dave Cramer >>>> >>>> da...@postgresintl.com >>>> www.postgresintl.com >>>> >>>> >>>> On Mon, 3 Sep 2018 at 09:39, Mate Varga <m...@matevarga.net> wrote: >>>> >>>>> Hi, >>>>> >>>>> https://imgur.com/a/ovsJPRv -- I've uploaded the profiling info (as >>>>> an image, sorry). It seems this is a JDBC-level problem. I understand that >>>>> the absolute timing is not meaningful at all because you don't know how >>>>> large the resultset is, but I can tell that this is only a few thousands >>>>> rows + few thousand largeobjects, each largeobject is around 1 kByte. (Yes >>>>> I know this is not a proper use of LOBs -- it's a legacy db structure >>>>> that's hard to change.) >>>>> >>>>> Thanks. >>>>> Mate >>>>> >>>>> On Mon, Sep 3, 2018 at 11:52 AM Mate Varga <m...@matevarga.net> wrote: >>>>> >>>>>> Hey, >>>>>> >>>>>> we'll try to test this with pure JDBC versus hibernate. Thanks! >>>>>> >>>>>> >>>>>> On Mon, Sep 3, 2018 at 11:48 AM Dave Cramer <p...@fastcrypt.com> wrote: >>>>>> >>>>>>> >>>>>>> >>>>>>> On Mon, 3 Sep 2018 at 03:55, Mate Varga <m...@matevarga.net> wrote: >>>>>>> >>>>>>>> Basically there's a class with a byte[] field, the class is mapped >>>>>>>> to table T and the byte field is annotated with @Lob so it goes to the >>>>>>>> pg_largeobject table. >>>>>>>> >>>>>>> >>>>>>> Ah, so hibernate is in the mix. I wonder if that is causing some >>>>>>> challenges ? >>>>>>> >>>>>>> >>>>>>>> The DB is on separate host but relatively close to the app, and I >>>>>>>> can reproduce the problem locally as well. One interesting bit is that >>>>>>>> turning of SSL between the app and PSQL speeds up things by at least >>>>>>>> 50%. >>>>>>>> >>>>>>>> Ah, one addition -- the binary objects are encrypted, so their >>>>>>>> entropy is very high. >>>>>>>> >>>>>>>> Any chance you could write a simple non-hibernate test code to time >>>>>>> the code ? >>>>>>> >>>>>>> Dave Cramer >>>>>>> >>>>>>> dave.cra...@crunchydata.ca >>>>>>> www.crunchydata.ca >>>>>>> >>>>>>> >>>>>>> >>>>>>>> Mate >>>>>>>> >>>>>>>> On Sun, Sep 2, 2018 at 12:55 AM Dave Cramer <p...@fastcrypt.com> >>>>>>>> wrote: >>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> On Fri, 31 Aug 2018 at 10:15, Mate Varga <m...@matevarga.net> wrote: >>>>>>>>> >>>>>>>>>> I see -- we could try that, though we're mostly using an ORM >>>>>>>>>> (Hibernate) to do this. Thanks! >>>>>>>>>> >>>>>>>>>> On Fri, Aug 31, 2018 at 3:57 PM Dmitry Igrishin < >>>>>>>>>> dmit...@gmail.com> wrote: >>>>>>>>>> >>>>>>>>>>> пт, 31 авг. 2018 г. в 16:35, Mate Varga <m...@matevarga.net>: >>>>>>>>>>> > >>>>>>>>>>> > Hi, >>>>>>>>>>> > >>>>>>>>>>> > we're fetching binary data from pg_largeobject table. The data >>>>>>>>>>> is not very large, but we ended up storing it there. If I'm copying >>>>>>>>>>> the >>>>>>>>>>> data to a file from the psql console, then it takes X time (e.g. a >>>>>>>>>>> second), >>>>>>>>>>> fetching it through the JDBC driver takes at least 10x more. We >>>>>>>>>>> don't see >>>>>>>>>>> this difference between JDBC and 'native' performance for anything >>>>>>>>>>> except >>>>>>>>>>> largeobjects (and bytea columns, for the record). >>>>>>>>>>> > >>>>>>>>>>> > Does anyone have any advice about whether this can be tuned or >>>>>>>>>>> what the cause is? >>>>>>>>>>> I don't know what a reason of that, but I think it's reasonable >>>>>>>>>>> and >>>>>>>>>>> quite simple to call lo_import()/lo_export() via JNI. >>>>>>>>>>> >>>>>>>>>> >>>>>>>>> Can't imagine that's any faster. The driver simply implements the >>>>>>>>> protocol >>>>>>>>> >>>>>>>>> Do you have any code to share ? Any other information ? >>>>>>>>> >>>>>>>>> Is the JDBC connection significantly further away network wise ? >>>>>>>>> >>>>>>>>> >>>>>>>>> Dave Cramer >>>>>>>>> >>>>>>>>> da...@postgresintl.com >>>>>>>>> www.postgresintl.com >>>>>>>>> >>>>>>>>