前言

不久前有前端人员咨询过一个问题,为什么syssql_tmp目录下会产生如此多的大文件。

针对这个目录的解释是:临时文件(用于排序超出内存容量的数据等操作)是在$KINGBASE_DATA/base/syssql_tmp中创建的,临时文件的名称形式为syssql_tmpPPP.NNN,其中PPP是拥有后端的PID,NNN区分该后端的不同临时文件。

测试产生临时文件

1、把work_mem调整成64KB
test=# set work_mem =64;
SET test=# show work_mem;
work_mem
----------
64kB
(1 row) 2、对大表进行order by,发现在syssql_tmp目录下生成临时文件 test=# \d index_test
Table "public.index_test"
Column | Type | Collation | Nullable | Default
--------+---------------------------+-----------+----------+---------
id | integer | | |
t_name | character varying(6 char) | | |
Indexes:
"idx_id" btree (id) test=# select count(*) from index_test;
count
---------
2000000
(1 row) test=# insert into index_test select generate_series(2000001,6000000),'fq'||generate_series(2000001,6000000); test=# select pg_backend_pid();
pg_backend_pid
----------------
19654
(1 row) test=# explain analyze select id,t_name from index_test order by t_name ;
QUERY PLAN
--------------------------------------------------------------------------------------------------------------------------------------------
Gather Merge (cost=476193.23..978300.49 rows=4303476 width=13) (actual time=18967.598..27675.141 rows=7999000 loops=1)
Workers Planned: 2
Workers Launched: 2
-> Sort (cost=475193.21..480572.55 rows=2151738 width=13) (actual time=16125.384..17488.483 rows=2666333 loops=3)
Sort Key: t_name
Sort Method: external merge Disk: 89032kB
Worker 0: Sort Method: external merge Disk: 48208kB
Worker 1: Sort Method: external merge Disk: 48544kB
-> Parallel Seq Scan on index_test (cost=0.00..64989.38 rows=2151738 width=13) (actual time=0.268..846.996 rows=2666333 loops=3)
Planning Time: 0.072 ms
Execution Time: 28138.216 ms
(11 rows) 3、查看base目录生成了syssql_tmp目录,因为设置的work_mem太小了,需要磁盘排序,所以产生了临时文件。 [[kingbase7@localhost base]$ ll
total 76
drwx------ 2 kingbase7 kingbase7 8192 Mar 27 15:00 1
drwx------ 2 kingbase7 kingbase7 8192 Feb 1 11:22 12144
drwx------ 2 kingbase7 kingbase7 12288 Mar 29 15:44 12145
drwx------ 2 kingbase7 kingbase7 8192 Feb 1 11:28 12146
drwx------ 2 kingbase7 kingbase7 8192 Mar 27 15:00 41213
drwx------ 2 kingbase7 kingbase7 8192 Mar 27 15:00 41247
drwx------ 2 kingbase7 kingbase7 6 Mar 30 14:34 syssql_tmp 在sql执行过程中生成了临时文件,19654为后端pid。在sql执行完成,再查看此目录下,临时文件已经被清空
[kingbase2@localhost syssql_tmp]$ ll
total 261952
-rw------- 1 kingbase2 kingbase2 91168768 Mar 30 15:12 syssql_tmp19654.4
-rw------- 1 kingbase2 kingbase2 49709056 Mar 30 15:12 syssql_tmp19864.0
-rw------- 1 kingbase2 kingbase2 49364992 Mar 30 15:12 syssql_tmp19865.0 [kingbase2@localhost syssql_tmp]$ ll
total 0

总结

对于现场遇到的问题是产生了几十GB的临时文件,如果服务器内存剩余很多考虑增加work_mem,或者通过temp_file_limit控制临时文件总上限。当然根本原因还是需要优化sql。

我们可以通过参数temp_file_limit控制临时文件产生量,在控制临时文件使用量,使用个数的参数上,控制的也是Query执行过程中产生的临时文件。

可以设置参数log_temp_files=0,就会针对需要临时空间的sql记录进数据库日志。

案例中设置work_mem=64kb,所以产生大量磁盘排序,可以加大work_mem,尤其应对hash_join等需要大量排序的操作,需要说明,虽然增大work_mem可以避免过多临时文件,但是如果查询并发过大有可能造成内存溢出的严重后果。

因为work_mem参数是针对每一个服务器进程而言的。

对应临时文件限制文档请参考:https://www.cnblogs.com/kingbase/p/16404461.html

KingbaseES V8R6 中syssql_tmp目录说明的更多相关文章

  1. KingbaseES V8R6备份恢复案例之---自定义表空间指定恢复目录数据恢复

    案例说明: KingbaseES V8R6在通过sys_rman执行物理备份恢复时,可以通过参数'--kb1-path',指定恢复的数据(data)目录,但如果原备份中包含自定义表空间时,需要建立表空 ...

  2. KingbaseES V8R6集群维护案例之--单实例数据迁移到集群案例

    案例说明: 生产环境是单实例,测试环境是集群,现需要将生产环境的数据迁移到集群中运行,本文档详细介绍了从单实例环境恢复数据到集群环境的操作步骤,可以作为生产环境迁移数据的参考. 适用版本: Kingb ...

  3. KingbaseES V8R6集群维护之--修改数据库服务端口案例

    ​ 案例说明: 对于KingbaseES数据库单实例环境,只需要修改kingbase.conf文件的'port'参数即可,但是对于KingbaseES V8R6集群中涉及到多个配置文件的修改,并且在应 ...

  4. KingbaseES V8R6单实例外部备份案例

    案例说明: 本案例采用sys_backup.sh执行物理备份,备份使用如下逻辑架构:数据库主机采用CentOS 7系统,repo采用kylin V10 Server. 单实例+外部备份服务器 备份逻辑 ...

  5. KingbaseES V8R6集群维护案例之---停用集群node_export进程

    案例说明: 在KingbaseES V8R6集群启动时,会启动node_exporter进程,此进程主要用于向kmonitor监控服务输出节点状态信息.在系统安全漏洞扫描中,提示出现以下安全漏洞: 对 ...

  6. KingbaseES V8R6集群维护案例之---将securecmdd通讯改为ssh案例

    案例说明: 在KingbaseES V8R6的后期版本中,为了解决有的主机之间不允许root用户ssh登录的问题,使用了securecmdd作为集群部署分发和通讯的服务,有生产环境通过漏洞扫描,在88 ...

  7. KingbaseES V8R6集群部署案例之---Windows环境配置主备流复制(异机复制)

    案例说明: 目前KingbaseES V8R6的Windows版本不支持数据库sys_rman的物理备份,可以考虑通过建立主备流复制实现数据库的异机物理备份.本案例详细介绍了,在Windows环境下建 ...

  8. KingbaseES V8R6集群部署案例之---Windows环境配置主备流复制(同一主机)

    案例说明: 目前KingbaseES V8R6的Windows版本不支持数据库sys_rman的物理备份,可以考虑通过建立主备流复制实现数据库的异机物理备份.本案例详细介绍了,在Windows环境下建 ...

  9. KingbaseES V8R6兼容Oracle的exp-imp导出导入工具使用

    说明: KingbaseES V8R6版本中的兼容Oracle的exp-imp导入导出工具,支持完全模式.用户模式和表模式的导出功能. 本次案例数据库版本: test=# select version ...

  10. KingbaseES V8R6集群管理运维案例之---repmgr standby switchover故障

    案例说明: 在KingbaseES V8R6集群备库执行"repmgr standby switchover"时,切换失败,并且在执行过程中,伴随着"repmr stan ...

随机推荐

  1. IDEA从o开始的一系列操作及修改配置-快捷键汇总

    IDEA从o开始的一系列操作及修改配置-快捷键汇总 下载IDEA 启动idea 安装svn插件 功能快捷键 先设置提示快捷键(纯属个人喜好) 入门快捷键 查找 编辑 小功能 自动代码提示 自动导包 T ...

  2. sklearn学习笔记之线性回归

    AI时代扑面而来,在大众面对ChatGPT和Sora发出无数惊叹号的时候,我决定不再只当一个AI时代的API调用者,而是去学习机器学习技术本身. 刚好公司也要往人工智能方向发展的计划,于是我开始从基础 ...

  3. 看看 ChatGPT 给的前端面试题

    以下是一些可能出现在中国互联网公司前端开发工程师面试中的题目: 解释一下 CSS 盒模型,并说明其中的各个部分. 请解释一下响应式设计是什么,以及你是如何实现响应式设计的. 什么是跨域资源共享(COR ...

  4. ProtoBuf 基本使用

    一.是什么 Protocol Buffers,是Google公司开发的一种数据描述语言,是一种平台无关.语言无关.可扩展且类似于XML能够将结构化数据序列化,可用于数据存储.通信协议等方面. 二.为什 ...

  5. 【LeetCode二叉树#11】最大二叉树(构造二叉树)

    最大二叉树 力扣题目地址(opens new window) 给定一个不含重复元素的整数数组.一个以此数组构建的最大二叉树定义如下: 二叉树的根是数组中的最大元素. 左子树是通过数组中最大值左边部分构 ...

  6. 【Azure App Service】Local Git App Service的仓库代码遇见卡住不Clone代码的问题

    问题描述 启用App Service Local Git 部署,在Clone 代码库到本地时候,卡在Clone 'xxxxxx' ... ... 一动不动的问题? 问题解答 因为Git Clone没有 ...

  7. 【Azure API 管理】 为APIM创建一个审批订阅申请的RBAC角色,最少的Action内容是什么呢?

    问题描述 在使用APIM服务中,需要为专门的一组用户赋予特殊的权限:审批APIM用户的对产品的订阅.需要自定义一个RBAC角色,那么如何来设置最少的Action满足需求呢? 问题解答 要对APIM订阅 ...

  8. 【Azure 环境】IntelliJ IDEA Community Edition 2021.2.3登陆Azure账号时,无法切换到中国区

    问题描述 在IntelliJ IDEA Community Edition 2021.2.3中开发Azure Function程序,最后准备部署到中国区 Azure Function中.如下,在Int ...

  9. C# 多线程(17):小总结

    前言 本篇内容是小总结和过渡,看完这篇后,就要开始继续学习 C# 多线程中的知识点啦~. 前面,经过 16 篇的学习,我们学习了多线程.锁.线程池.任务.同步.异步等知识,还没有使用到 async.a ...

  10. Jmeter 之正则表达式的使用

    1 背景及用途: html.json数据都可以转化为文本,提供给正则去提取,使用正则可以提取全部数据,这就是正则表达式非常强大的一点. html格式响应更适合用xpath提取,性能比正则好一点 jso ...