当我在postgres上用:select current_query from pg_stat_activity where current_query not like '%IDLE%';  查看当前查询的时候发现多出了,下面的这个SQL语句,但这个SQL语句并不是我的应用程序发出的。很奇怪不知道是怎么出来的这个sql。
SELECT NULL AS TABLE_CAT, n.nspname AS TABLE_SCHEM, c.relname AS TABLE_NAME,  CASE n.nspname ~ '^pg_' OR n.nspname = 'information_schema'  WHEN true THEN CA
SE  WHEN n.nspname = 'pg_catalog' OR n.nspname = 'information_schema' THEN CASE c.relkind   WHEN 'r' THEN 'SYSTEM TABLE'   WHEN 'v' THEN 'SYSTEM VIEW'   WHEN
 'i' THEN 'SYSTEM INDEX'   ELSE NULL   END  WHEN n.nspname = 'pg_toast' THEN CASE c.relkind   WHEN 'r' THEN 'SYSTEM TOAST TABLE'   WHEN 'i' THEN 'SYSTEM TOAS
T INDEX'   ELSE NULL   END  ELSE CASE c.relkind   WHEN 'r' THEN 'TEMPORARY TABLE'   WHEN 'i' THEN 'TEMPORARY INDEX'   ELSE NULL   END  END  WHEN false THEN C
ASE c.relkind  WHEN 'r' THEN 'TABLE'  WHEN 'i' THEN 'INDEX'  WHEN 'S' THEN 'SEQUENCE'  WHEN 'v' THEN 'VIEW'  ELSE NULL  END  ELSE NULL  END  AS TABLE_TYPE, d
.description AS REMARKS  FROM pg_catalog.pg_namespace n, pg_catalog.pg_class c  LEFT JOIN pg_catalog.pg_description d ON (c.oid = d.objoid AND d.objsubid = 0
)  LEFT JOIN pg_catalog.pg_class dc ON (d.classoid=dc.oid AND dc.relname='pg_class这个SQL的主要目的是查询数据库里面所有的index,SEQUENCE,等,但不知道为什么会产生这个SQL

解决方案 »

  1.   

    pg_stat_activity 这是个视图。
      

  2.   


    就是一个完整的系统视图啊。每个视图的定义不就是一个独立的SQL语句吗?
      

  3.   

    也就是说“SELECT NULL AS TABLE_CAT, n.nspname AS TABLE_SCHEM,。。”这个是系统视图?
    但这个SQL 怎么出现那么多呀,最多的时候我发现,同时出现15个,但他们执行的时间最长是一分钟。意味着,他们要占据15了连接了,平时测试的时候发现我只要进行频繁的,更新表内容,就会出现这个SQL。换句话说,出现这样的SQL是正常的吗? 我通过top -c 发现,这些SQL长时间处于BIND状态。