[pgpool-general: 6040] Question about extra queries created by pgpool master_slave_mode
Raymundo
gypark at gmail.com
Thu Apr 12 14:16:25 JST 2018
Hello,
At first, I'm sorry I'm not good at English.
I'd installed Pgpool 3.7.2 and two Postgres 10.3 instances, and configure a
master-slave mode cluster. I turned on also load_balancing_mode.
When I was testing and looking into logs, I found that pgpool sent backend0
several extray queries "SELECT count(*) ..." for every simple select query:
# what I did: (23140 is pgpool port)
$ psql -h 127.0.0.1 -p 23140 -U postgres test -c "select * from mytable;"
# what the pgpool log showed (timestamp omitted)
pid 1583: LOG: DB node id: 0 backend pid: 469 statement: SELECT count(*)
from (SELECT has_function_privilege('postgres', 'to_regclass(cstring)',
'execute') WHERE EXISTS(SELECT * FROM pg_catalog.pg_proc AS p WHERE
p.proname = 'to_regclass')) AS s
pid 1583: LOG: DB node id: 0 backend pid: 469 statement: SELECT count(*)
FROM pg_catalog.pg_class AS c WHERE c.relname = 'pg_namespace'
pid 1583: LOG: DB node id: 0 backend pid: 469 statement: SELECT count(*)
FROM pg_class AS c, pg_namespace AS n WHERE c.oid =
to_regclass('"mytable"') AND c.relnamespace = n.oid AND n.nspname =
'pg_catalog'
pid 1583: LOG: DB node id: 0 backend pid: 469 statement: SELECT count(*)
FROM pg_catalog.pg_class AS c, pg_attribute AS a WHERE c.relname =
'pg_class' AND a.attrelid = c.oid AND a.attname = 'relistemp'
pid 1583: LOG: DB node id: 0 backend pid: 469 statement: SELECT count(*)
FROM pg_class AS c, pg_namespace AS n WHERE c.relname = 'mytable' AND
c.relnamespace = n.oid AND n.nspname ~ '^pg_temp_'
pid 1583: LOG: DB node id: 0 backend pid: 469 statement: SELECT count(*)
FROM pg_catalog.pg_class AS c, pg_catalog.pg_attribute AS a WHERE c.relname
= 'pg_class' AND a.attrelid = c.oid AND a.attname = 'relpersistence'
pid 1583: LOG: DB node id: 0 backend pid: 469 statement: SELECT count(*)
FROM pg_catalog.pg_class AS c WHERE c.oid = to_regclass('"mytable"') AND
c.relpersistence = 'u'
pid 1583: LOG: DB node id: 1 backend pid: 2312 statement: select * from
mytable;
I tried more cases and observed:
1) INSERT and UPDATE queries do not make these extra queries. Only SELECT
query does.
2) The extra queries were always sent to backend#0, regardless of whether
it was primary or standby.
I'd like to ask:
1) Is this a normal operation or some signal that something is wrong?
2) If it is a ordinary operation, is it ok? I mean, couldn't it be too much
overhead, if 7 more queries are sent for every 1 "SELECT" query?
Thank you.
gypark from South Korea.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.pgpool.net/pipermail/pgpool-general/attachments/20180412/148a8f38/attachment.htm>
More information about the pgpool-general
mailing list