临时表概述

临时表用于存放只存在于事务或会话期间的数据。临时表中的数据对会话是私有的,每个会话只能看到和修改自己会话的数据。

您可以创建全局(global)临时表或本地(locall)临时表。 下表列举了它们之间的区别:

全局 本地
定义 CREATE GLOBAL TEMPORARY TABLE CREATE LOCAL TEMPORARY TABLE
存储 表定义是持久的,表数据是临时的 表定义和表数据都是临时的,在会话退出后被删除
所属模式 创建在用户指定模式下 在临时模式下,用户不可以指定
约束限制 不支持外键引约用束 支持外键引用约束
ON COMMIT类型 事务级(DELETE ROWS)和会话级(PRESERVE ROWS) 事务级(DELETE ROWS)会话级(PRESERVE ROWS)和事务结束后删除(DROP)

临时表的用途

临时表对于必须临时缓存结果集的应用程序很有用。例如,每个员工创建本地临时表,插入本季度的所有订单销售记录,进行统计分析,计算分析后再数据填入普通表中。在会话操作期间,临时表的数据是私有的,各个会话之间数据彼此不影响。表中的数据都可以在事务结束之后删除,或者连接退出之后删除。数据都存在在临时表空间中,临时表都不记录日志。

临时表的创建

创建临时表使用CREATE TEMPORARY/TEMP TABLE语句。将 GLOBAL 或 LOCAL 写在 TEMPORARY 或 TEMP 的前面,指定全局临时表或本地临时表。创建临时表时若不指定GLOBAL 或LOCAL,则默认值为LOCAL。

临时表在一个事务块结束时的行为由 ON COMMIT 控制。三种选项是:

  • PRESERVE ROWS

    在事务结束时不采取特殊的动作,是本地临时表采用的默认行为。

  • DELETE ROWS

    在每一个事务块结束时将删除临时表中的所有行。实质上,在每一次提交时会完成一次自动的清理。在分区表上使用时,不会将其级联到其分区。这是全局临时表的默认行为。

  • DROP

    在当前事务块结束时将删除临时表。在分区表上使用时,此操作将删除其分区,在具有继承子级的表上使用时,将删除依赖子级。仅本地临时表支持在当前事务块结束时将删除临时表。全局临时表不支持ON COMMIT DROP 选项。

临时表可以创建索引,这些索引也是临时的。临时表上的索引使用temp_tablespaces参数指定位置。

最后需要说明,临时表上也存在age年龄的,而且这个年龄会正常增长,有一次,监控数据库查看临时表年龄超过了20亿,然而这并没有给数据库带来事务回卷风险。因为vacuum进程不会对临时表进行freeze操作,vacuum是消耗I\O资源的动作,而临时表数据都是临时的,也就没必要对其进行vacuum,浪费系统资源。

KingbaseESV8R6临时表和全局临时表的更多相关文章

  1. sql server中的用户临时表和全局临时表的区别

    临时表分为: 本地临时表,仅限于当前访问者访问,创建方法去如下:create table #TableName(表结构)储存于数据库tempdb内(硬盘),当前用户断开连接(把当前的),自动删除如果使 ...

  2. Sql server 本地临时表、全局临时表的区别

    创建了本地临时表#Tmp.全局临时表##Tmp: 本地临时表: 取名以#开头.如:#Tmp(会自动加上一串后缀) 只有当前的连接可以访问 连接关闭后,本地临时表自动释放 全局临时表: 取名以##开头. ...

  3. Oracle 临时事务表 全局临时表_global temporary table

    所有的操作都在一个事务里,事务提交后,此表清空,特别适合做插入删除频率特别高的临时表操作,比如插入完数据就开始查询,查询完就删掉等,用完就扔! 临时表分事务级临时表和会话级临时表. 事务级临时表只对当 ...

  4. KingbaseES 全局临时表

    Postgresql 支持会话级别的临时表,表的存续期只在创建临时表的会话存活期间,会话退出后,临时表自动删除,表结构及数据也无法跨会话共享.KingbaseES 除了支持PG原生的临时表机制外,还支 ...

  5. MSSQLSERVER数据库- 判断全局临时表是否存在

    写一下今天遇到的一个问题. 今天因为一些作用域的问题,我使用了全局临时表,然后我在存储过程里使用了这么一段语句,想判断全局临时表是否存在,如果不存在,则将他DROP掉. 可是这段语句没用. if ex ...

  6. MS SQL 全局临时表的删除

    本来已经搜索到怎么删除了 如下: IF OBJECT_ID( 'tempdb..##TEMP_COPTD') IS NOT NULL Begin DROP TABLE ##TEMP_COPTD End ...

  7. MySQL系统临时表、用户临时表

    MySQL临时表分为系统使用的临时表和用户使用的临时表. 系统使用的临时表是指MySQL在执行某些SQL语句时需要依赖临时表来完成整个过程.系统使用的临时表的情况可以分为以下几种: *  group ...

  8. SQL server 临时表

    创建临时表,#代表局部临时表,##代表全局临时表.局部临时表和全局临时表的具体含义是什么呢? 举例说明一下比较清晰些,先来看下局部临时表,[新建查询],在里面输入如下文本: 运行后,我们在此文件执行输 ...

  9. 临时表VS表变量--因地制宜,合理使用

    一直以来大家对临时表与表变量的孰优孰劣争论颇多,一些技术群里的朋友甚至认为表变量几乎一无是处,比如无统计信息,不支持事务等等.但事实并非如此.这里我就临时表与表变量做个对比,对于大多数人不理解或是有歧 ...

随机推荐

  1. 关于vue打包上线遇到的坑

    打包上线经常会经常遇到路径找不到,页面空白,那么下面我们就解决一下. 第一步.先找到config目录的index.js 改成如上图红框标注所示 第二步.找到build下的utils.js文件 加上如上 ...

  2. SAP Smart Form 无法通过程序自定义默认打印机问题解决

    *&---------------------------------------------------------------------* *& Form FRM_SET_PRI ...

  3. js 循环生成元素,并为元素添加click事件,结果只执行最后一个点击事件

    问题描述:有一个参数集合data,for循环为每一个参数生成一个dom元素,并附加onclick事件.生成之后发现点击事件里的参数全是data集合里的最后一个. 代码如下: var dom=$('#d ...

  4. Git代码提交报错 (Your branch is up to date with 'origin/master)

    一.前言 今天码云上提交自己本地的一个SpringBoot+Vue的小项目,由于前端代码提交第一次时候提交码云上文件夹下为空,于是自己将本地代码复制到码云拉取下来代码文件夹下,然而git add . ...

  5. Nginx+Keepalived+VIP漂移实现HA高可用技术之详细教程

    https://www.cnblogs.com/zcc666/p/13141626.html  这个是nginx安装教程地址 https://www.cnblogs.com/zcc666/p/1313 ...

  6. CF141E Clearing Up 题解

    思路分析 自认为是一道很好的思维题. 直接看上去的想法是: 跑一个生成树,每一次加的边颜色交替进行,直到拉出生成树. 仔细想想,发现可能无法保证最后是一棵树而不是森林,也是说输出都是 \(-1\) . ...

  7. Three.js系列: 在元宇宙看电影,享受 VR 视觉盛宴

    本文 gihtub 地址: https://github.com/hua1995116/Fly-Three.js 最近元宇宙的概念很火,并且受到疫情的影响,我们的出行总是受限,电影院也总是关门,但是在 ...

  8. 用户数据交互 Scanner

    # 用户交互 Scanner ``` java package study5ran2yl.study; import java.util.Scanner; public class demo09 { ...

  9. JetBrains系列IDE创建文件模板

    #coding:utf-8 ''' @version: python3.6 @author: '$USER' @license: Apache Licence @contact: steinven@q ...

  10. XML入门介绍

    目录 XML 简介 xml 语法 文档声明 (1)创建一个 xml 文件 (2)图书有 id 性 属性 一 表示唯一 标识,书名,有作者,价格的信息 xml 注释 元素(标签) 1)什么是 xml 元 ...