KingbaseES V8R6 中syssql_tmp目录说明
前言
不久前有前端人员咨询过一个问题,为什么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目录说明的更多相关文章
- KingbaseES V8R6备份恢复案例之---自定义表空间指定恢复目录数据恢复
案例说明: KingbaseES V8R6在通过sys_rman执行物理备份恢复时,可以通过参数'--kb1-path',指定恢复的数据(data)目录,但如果原备份中包含自定义表空间时,需要建立表空 ...
- KingbaseES V8R6集群维护案例之--单实例数据迁移到集群案例
案例说明: 生产环境是单实例,测试环境是集群,现需要将生产环境的数据迁移到集群中运行,本文档详细介绍了从单实例环境恢复数据到集群环境的操作步骤,可以作为生产环境迁移数据的参考. 适用版本: Kingb ...
- KingbaseES V8R6集群维护之--修改数据库服务端口案例
案例说明: 对于KingbaseES数据库单实例环境,只需要修改kingbase.conf文件的'port'参数即可,但是对于KingbaseES V8R6集群中涉及到多个配置文件的修改,并且在应 ...
- KingbaseES V8R6单实例外部备份案例
案例说明: 本案例采用sys_backup.sh执行物理备份,备份使用如下逻辑架构:数据库主机采用CentOS 7系统,repo采用kylin V10 Server. 单实例+外部备份服务器 备份逻辑 ...
- KingbaseES V8R6集群维护案例之---停用集群node_export进程
案例说明: 在KingbaseES V8R6集群启动时,会启动node_exporter进程,此进程主要用于向kmonitor监控服务输出节点状态信息.在系统安全漏洞扫描中,提示出现以下安全漏洞: 对 ...
- KingbaseES V8R6集群维护案例之---将securecmdd通讯改为ssh案例
案例说明: 在KingbaseES V8R6的后期版本中,为了解决有的主机之间不允许root用户ssh登录的问题,使用了securecmdd作为集群部署分发和通讯的服务,有生产环境通过漏洞扫描,在88 ...
- KingbaseES V8R6集群部署案例之---Windows环境配置主备流复制(异机复制)
案例说明: 目前KingbaseES V8R6的Windows版本不支持数据库sys_rman的物理备份,可以考虑通过建立主备流复制实现数据库的异机物理备份.本案例详细介绍了,在Windows环境下建 ...
- KingbaseES V8R6集群部署案例之---Windows环境配置主备流复制(同一主机)
案例说明: 目前KingbaseES V8R6的Windows版本不支持数据库sys_rman的物理备份,可以考虑通过建立主备流复制实现数据库的异机物理备份.本案例详细介绍了,在Windows环境下建 ...
- KingbaseES V8R6兼容Oracle的exp-imp导出导入工具使用
说明: KingbaseES V8R6版本中的兼容Oracle的exp-imp导入导出工具,支持完全模式.用户模式和表模式的导出功能. 本次案例数据库版本: test=# select version ...
- KingbaseES V8R6集群管理运维案例之---repmgr standby switchover故障
案例说明: 在KingbaseES V8R6集群备库执行"repmgr standby switchover"时,切换失败,并且在执行过程中,伴随着"repmr stan ...
随机推荐
- 使用BP神经网络实现函数逼近
1 一元函数逼近 1.1 待逼近函数 1.2 代码 clear,clc p=[-4:0.1:4]; %神经网络输入值 t=sin(0.5*pi*p)+sin(pi*p); %神经网络目标值 n=15; ...
- 【OpenGL ES】立方体手动旋转
1 前言 本文主要介绍使用 OpenGL ES 绘制立方体,并实现手动触摸事件控制立方体旋转. 为方便控制触摸旋转,假设旋转轴始终在 xoy 平面上,设 z 轴的方向向量 u = (0, 0, ...
- HTML+CSS设计一个朴实无华的登录页
说明 之前一直偏重于后端技术研究,最近设计网站感觉前端太菜,遂集中看了下CSS的内容.后续我会发表一些前端实战的一些例子,给自己记录的同时希望也能分享给大家. 实现效果 主要知识点 DIV屏幕垂直居中 ...
- 【Android逆向】破解看雪9月算法破解第二题
1. apk安装到手机,一样的界面,随便输入一样的报错 2. apk拖入到jadx重看看 public native String sha1(String str); static { System. ...
- 常用JDBC连接池
如下整理常用JDBC连接池组件. HikariCP 针对不同的JDK需要引入对应的HikariCP,详见:Github项目地址 . 以JDK8为例子,在项目中引入如下依赖: <dependenc ...
- 在Hexo中引入本地图片的实现
实现步骤 第一步:修改项目根目录下的_config.yml文件参数post_asset_folder值为true. # 开始使用本地静态资源 post_asset_folder: true 第二步:安 ...
- Docker进阶之02-Swarm集群入门实践
Docker集群概述 Docker集群有2种方案: 1.在Docker Engine 1.12之前的集群模式被称为经典集群,这是通过API代理系统实现的集群,目前已经不再维护. 2.自Docker E ...
- 统信UOS系统开发笔记(四):从Qt源码编译安装之编译安装QtCreator4.11.2,并配置编译测试Demo
前言 上一篇已经从Qt源码编译了Qt,那么Qt开发的IDE为QtCreator,本篇从源码编译安装QtCreator,并配置好构建套件,运行Demo并测试. 统信UOS系统版本 系统版本: ...
- django中如果不是第一次迁移的时候就配置AUTH_USER_MODEL(用来告知django认证系统识别我们自定义的模型类),那么该如何解决才能让django的认证系统识别且不会报未知错误?
Django认证系统中提供的用户模型类及方法很方便,我们可以使用这个模型类,但是字段有些无法满足项目需求,如还需要保存用户的手机号,需要给模型类添加额外的字段. Django提供了django.con ...
- ubuntu18.04下nginx配合fastdfs使用的安装和配置
前期准备 1.安装依赖包 # 新装的ubuntu缺少gcc编译,需要先安装这个 sudo apt-get install build-essential 1.解压缩 libfastcommon-mas ...