gbase8s的临时文件和临时表的存放和参数

1. 临时文件的使用场景

  • 临时文件:
    • 假设select语句中具有order by或group by子句,且不能通过索引去排序的sql会使用临时文件
    • select语句通过unique和distinct排除重复的记录
    • select语句通过使用sort merge连接,使用不到索引的会使用临时文件
    • hash join 需要创建hash
    • 创建索引时需要对键值排序
    • 热恢复时,需要存放路基日志文件的临时文件

2. 临时表的使用场景

  • select语句使用into temp子句
  • 程序使用create temp table
  • 应用程序向存储过程传递blob数据,或给全局的blob变量赋值

3. 关于临时文件存放的sql

以下的基础上都是在不记日志的基础上,假如数据库记录日志,只有sql明确写明不记录日志才会在临时的数据空间,否则将会写在rootdbs

#记录日志的数据库,且已经配置了dbspacetemp的参数
#存放在rootdbs
select number from tablename into temp tp;
#存放在临时数据空间
select number from tablename inot temp tp with no log;
#create temp table 也是如此,需要明确说明不记录日志

4. 关于临时文件存放位置的参数

  • 临时文件可以存放在操作系统的文件夹下和dbspace上两种位置,各位置的存放规则如下:
    • PS0RT_DBTEMP:这个参数是控制存放在操作系统文件夹路径的,同时需要在操作系统的环境变量中设置,如果设置了环境变量这个参数,临时文件将会根据这个环境变量指定位置进行存放
      • 而且这个环境变量可以配置多个文件夹值,如果多个文件夹,将会使用轮询的规则进行存放,第一个文件放在第一个文件夹下,第二个文件存放在第二个文件夹下
    • 存放在dbspace上的参数配置:分为环境变量设置、DBSPACETEMP参数设置和默认三种
      • 环境变量的方式:参数DBSPACETEMP,如果没有PSORT_DBTEMP环境变量,将会检索此环境变量,存放在数据空间上
      • DBSPACETEMP参数设置:如果环境变量没有设置将会根据此参数设置的数据空间进行存放
      • 默认值:如果环境变量和参数中都没有进行设置,临时文件的存放位置,将会放下/tmp下

5. 临时表的位置存放

临时表的位置存放将会有三种配置,环境变量配置、参数配置和其他默认值

  • 环境变量配置:临时表会自动创建在一个dbspace上,DBSPACETEMP环境变量可以设置一个或多个dbspace,且环境变量是第一优先级
  • 参数:如果环境变量没有设置,则会检索参数配置,DBSPACETEMP参数指定的dbspace是创建数据表时的dbspace
  • 默认值:如果上述两个位置都没有指定,则根据语句进行划分
    • create temp table:创建在数据库所在的dbspace
    • select* from tab into temp:创建在rootdbs数据空间
  • 29
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值