临时表概述

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

您可以创建全局(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. JavaScript 语言入门

    目录 JavaScript 介绍 JavaScript 和 和 html 代码的结合方式 第一种方式 第二种方式 4.变量 关系(比较)运算 逻辑运算 数组(重点) 函数(重点) 函数的二种定义方式 ...

  2. RPA微信机器人汇总

    一.微信广告PDF对账单数据提取机器人 [机器人详情] 微信广告对账结算单为PDF文件,从每一期对账单文件中提取结算数据,统计成excel表格,便于与腾讯广告业务结算审核 [机器人步骤] 1.启动机器 ...

  3. Python使用腾讯云-短信服务发送手机短信

    目前[腾讯云短信]为客户提供[国内短信].[国内语音]和[海外短信]三大服务,腾讯云短信SDK支持以下操作: 国内短信 国内短信支持操作: • 指定模板单发短信 • 指定模板群发短信 • 拉取短信回执 ...

  4. 【数据库Mysql 查询当前时间,年月日】

    1.本年份 SELECT YEAR(now()) SELECT DATE_FORMAT(NOW(), '%Y') 2.本月份(例如:1.01.January) SELECT MONTH(now()) ...

  5. 业务可视化-让你的流程图"Run"起来

    前言 最近在研究业务可视化的问题,在日常的工作中,流程图和代码往往是分开管理的. 一个被维护多次的系统,到最后流程图和代码是否匹配这个都很难说. 于是一直有一个想法,让程序直接读流程图,根据流程图的配 ...

  6. Codeforces Round #792 (Div. 1 + Div. 2) A-E

    Codeforces Round #792 (Div. 1 + Div. 2) A-E A 题目 https://codeforces.com/contest/1684/problem/A 题解 思路 ...

  7. SpringBoot启动代码和自动装配源码分析

    ​ 随着互联网的快速发展,各种组件层出不穷,需要框架集成的组件越来越多.每一种组件与Spring容器整合需要实现相关代码.SpringMVC框架配置由于太过于繁琐和依赖XML文件:为了方便快速集成第三 ...

  8. 一文讲明白K8S各核心架构组件

    目录 一.写在前面 二.K8S为我们提供了怎样的能力 三.架构 3.1.MasterNode 3.2.WorkerNode 四.核心组件 4.1.ApiServer 4.1.1.概述 4.1.2.是集 ...

  9. 利用MATLAB仿真最小发射功率下WSN的连通性和覆盖率

    一.目的 (1)在固定节点个数的前提下,仿真求得使网络保持连通的最小通信半径(最低能级). (2)在上述节点个数和通信半径的前提下,计算随机布撒的节点的覆盖率. 二.方法描述 (1)首先假设通信半径都 ...

  10. Active Backup for Business激活

    依次执行 https://IP地址:5001/webapi/auth.cgi?api=SYNO.API.Auth&method=Login&version=1&account= ...