From: | Andres Freund <andres(at)anarazel(dot)de> |
---|---|
To: | pgsql-hackers(at)postgresql(dot)org |
Subject: | More efficient truncation of pg_stat_activity query strings |
Date: | 2017-09-12 07:19:48 |
Message-ID: | 20170912071948.pa7igbpkkkviecpz@alap3.anarazel.de |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Hi,
I've recently seen a benchmark in which pg_mbcliplen() showed up
prominently. Which it will basically in any benchmark with longer query
strings, but fast queries. That's not that uncommon.
I wonder if we could avoid the cost of pg_mbcliplen() from within
pgstat_report_activity(), by moving some of the cost to the read
side. pgstat values are obviously read far less frequently in nearly all
cases that are performance relevant.
Therefore I wonder if we couldn't just store a querystring that's
essentially just a memcpy()ed prefix, and do a pg_mbcliplen() on the
read side. I think that should work because all *server side* encodings
store character lengths in the *first* byte of a multibyte character
(at least one clientside encoding, gb18030, doesn't behave that way).
That'd necessitate an added memory copy in pg_stat_get_activity(), but
that seems fairly harmless.
Faults in my thinking?
Greetings,
Andres Freund
From | Date | Subject | |
---|---|---|---|
Next Message | Ashutosh Bapat | 2017-09-12 07:39:02 | Re: Partition-wise join for join between (declaratively) partitioned tables |
Previous Message | Amit Khandekar | 2017-09-12 07:09:06 | Re: UPDATE of partition key |