首页 > 解决方案 > Google Cloud SQL - 解密 Postgres 日志并查看临时日志文件

问题描述

我有一个在 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

我创建了该用户和数据库,并且我知道我的应用程序为什么要做出该选择语句。

明白为什么在日志中打印此选择语句(但我的应用程序中没有其他 SQL 语句)。看起来不像是错误?

路径“base/pgsql_tmp/pgsql_tmp119401.0”的临时日志文件可能有答案,但我不知道如何访问它。我尝试打开“cloud shell”并导航文件系统,但找不到这个“base”或“pgsql_tmp”文件夹或任何日志文件。

关于为什么STATEMENT显示此消息或如何访问此临时日志文件的任何想法?

标签: postgresqlgoogle-cloud-platformgoogle-cloud-sql

解决方案


根据PostgreSQL 性能监控的以下链接:

此日志事件在写入临时文件时发出,用作正常操作的一部分,然后再次删除。

通常,当查询由于work_mem限制而无法分配足够的内存时,您会看到这种情况,并且必须使用磁盘上的文件来执行排序或散列操作。

您可以在提供的链接中找到更多详细信息以及建议采取的措施。

我不熟悉您的数据库约束,但我会考虑优化所述查询,因为不使用临时文件的查询通常执行得更好。

至于访问日志文件,很遗憾,您目前无法查看临时文件,因为 Cloud SQL 是一项完全托管的服务。可视化日志的唯一方法是通过 Stackdriver 日志记录,如此所述。

重要的是要了解Cloud Shell本身就是一个临时 VM 实例。其主要目的是让您无需安装 Google Cloud SDK 即可轻松管理您的项目和资源。它的内容与 Cloud SQL 的实例文件系统无关,因此您看不到您提到的目录。


推荐阅读