postgresql - 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
显示此消息或如何访问此临时日志文件的任何想法?
解决方案
根据PostgreSQL 性能监控的以下链接:
此日志事件在写入临时文件时发出,用作正常操作的一部分,然后再次删除。
通常,当查询由于work_mem限制而无法分配足够的内存时,您会看到这种情况,并且必须使用磁盘上的文件来执行排序或散列操作。
您可以在提供的链接中找到更多详细信息以及建议采取的措施。
我不熟悉您的数据库约束,但我会考虑优化所述查询,因为不使用临时文件的查询通常执行得更好。
至于访问日志文件,很遗憾,您目前无法查看临时文件,因为 Cloud SQL 是一项完全托管的服务。可视化日志的唯一方法是通过 Stackdriver 日志记录,如此处所述。
重要的是要了解Cloud Shell本身就是一个临时 VM 实例。其主要目的是让您无需安装 Google Cloud SDK 即可轻松管理您的项目和资源。它的内容与 Cloud SQL 的实例文件系统无关,因此您看不到您提到的目录。
推荐阅读
- opencv - 在对视频处理应用程序的 Mat 数组进行操作时,如何加速 opencv bitwise_or?
- python - 交替多处理和单处理时Python程序卡住
- javascript - Popoto.js 从 cypher-query 创建新图
- python-3.x - Pandas groupby 和 resample 给出了不寻常的结果
- android - 在 ViewPager 2 中动态删除 Fragment 时,它总是删除最后一个 Fragment
- c# - 在另一个服务中使用其托管标识对服务调用者进行身份验证
- python - Django REST:一个 PUT 请求来填充两个模型
- python - Python / Flask函数捕获Windows系统密码?
- python - Tensorflow 2.3 / 2.2 - 导入/导出问题
- c++ - 恒定时间,线性时间复杂度