我有一个在Google Cloud SQL上运行的Postgres实例。我在在线“日志查看器”中破译消息时遇到了一些麻烦。
我收到很多像这样的“信息”级消息,一遍又一遍地重复。
[i] 2019-06-12 16:19:05.376 MDT [119402]: [2-1] db=cleanchemidata,user=cleanchemiadmin STATEMENT: SELECT MAX("cc_systemdataview"."time_stamp") AS "time_stamp__max" FROM "cc_systemdataview" WHERE "cc_systemdataview"."job_id" = 72
[i] 2019-06-12 16:19:06.213 MDT [119401]: [1-1] db=cleanchemidata,user=cleanchemiadmin LOG: temporary file: path "base/pgsql_tmp/pgsql_tmp119401.0", size 38330368
我创建了该用户和数据库,并且知道为什么我的应用程序要执行该select语句。
我不不理解为什么在日志中打印此选择语句(但应用程序中没有其他SQL语句)。看起来好像不是错误?
临时日志文件位于路径“ base / pgsql_tmp / pgsql_tmp119401.0”,可能有答案,但我无法弄清楚如何访问它。我尝试打开“云外壳”并浏览文件系统,但找不到此“基本”或“ pgsql_tmp”文件夹或任何日志文件。
关于为什么显示此STATEMENT
消息或如何访问此临时日志文件的任何想法?
答案 0 :(得分:1)
按照以下link进行PostgreSQL性能监视:
写入一个临时文件时发出此日志事件,用作 正常操作的一部分,然后再次删除。
通常,当查询分配不足时,您会看到此消息 由于 work_mem 的限制而需要存储,并且不得不使用磁盘上的文件 执行排序或哈希操作。
您可以在提供的链接中找到更多详细信息以及建议采取的措施。
我不熟悉您的数据库约束,但我会考虑优化上述查询,因为不使用临时文件的查询通常效果更好。
不幸的是,关于访问日志文件,由于Cloud SQL is a fully-managed service,您当前无法查看临时文件。可视化日志的唯一方法是通过here中所述的Stackdriver日志。
了解Cloud Shell本身是一个临时VM实例很重要。其主要目的是使您无需安装Google Cloud SDK即可轻松管理项目和资源。它的内容与Cloud SQL的实例文件系统无关,因此您看不到提到的目录。