背景

我们经常遇到两种情况下会重建索引,reindex

1、索引崩溃,由于软件或硬件问题导致索引内数据失效而不可用。

2、索引膨胀,当索引膨胀会占用过多磁盘空间,reindex可以解决此问题。

对于临时表和全局临时表而言,临时表可以进行reindex操作,而全局临时表不能进行此操作,原因是全局临时表的表定义是全局的,也就是其他会话也可以用到全局临时表定义。

而临时表是仅针对当前session而言进行的,在会话级别有隔离属性。然而进行reindex操作时,对应索引的relfilenode值会发生改变,不能对全局临时表进行reindex,因为这会影响其他正在使用全局临时表的会话。

测试

[](javascript:void(0)

创建全局临时表:
create global temporary table g_temp_t1(id integer);
创建索引:
create index g_temp_t1_temp on g_temp_t1 (id);
插入数据
insert into g_temp_t1 values (1),(2); reindex全局临时表时报错 原因是relfilenode值不允许改变,是固定的。
TEST=# reindex index g_temp_t1_temp;
警告: skipping reindex index "g_temp_t1_temp" on a global temporary table TEST=# select relname ,relfilenode from sys_class where relname='g_temp_t1_temp';
relname | relfilenode
----------------+-------------
g_temp_t1_temp | 109477
(1 row) 创建临时表:
create temporary table l_temp_t1(id integer) ; 创建索引:
create index l_temp_t1_temp on l_temp_t1 (id); 插入数据:
insert into l_temp_t1 values (1),(2); 临时表索引的relfilenode此时的109481,reindex后relfilenode改变为109482,由于临时表在会话退出后不会保存表,所以会话级别隔离的属性看,这个操作不会影响到其他会话。
TEST=# select relname ,relfilenode from sys_class where relname='l_temp_t1_temp';
relname | relfilenode
----------------+-------------
l_temp_t1_temp | 109481 reindex index l_temp_t1_temp; TEST=# select relname ,relfilenode from sys_class where relname='l_temp_t1_temp';
relname | relfilenode
----------------+-------------
l_temp_t1_temp | 109482
(1 row)

[](javascript:void(0)

总结

在此案例中,我们看到临时表和全局临时表在reindex操作时还是有差别的。更多关于临时表和全局临时表差别请查看文档《KingbaseESV8R6临时表和全局临时表》https://www.cnblogs.com/kingbase/p/16629827.html

KingbaseESV8R6全局临时表不能进行reindex操作的更多相关文章

  1. KingbaseESV8R6临时表和全局临时表

    临时表概述 临时表用于存放只存在于事务或会话期间的数据.临时表中的数据对会话是私有的,每个会话只能看到和修改自己会话的数据. 您可以创建全局(global)临时表或本地(locall)临时表. 下表列 ...

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

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

  3. KingbaseES 全局临时表

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

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

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

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

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

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

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

  7. .net全局定时定期执行某些操作在Global.asax中具体实现

    全局定时定期执行某些操作看起来是多么自动化的一个问题不过在.net的Global.asax文件中稍微配置即可实现,详细配置如下,感兴趣的朋友可以参考下哈 <%@ Application Lang ...

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

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

  9. oracle相关操作,存储、临时表空间、用户操作、启动过程

    表空间:此空间是用来进行数据存储的(表.function.存储过程等),所以是实际物理存储区域.临时表空间:主要用途是在数据库进行排序运算[如创建索引.order by及group by.distin ...

  10. KingbaseES 全局索引是否因为DDL操作而变为Unusable ?

    前言 Oracle 在对分区做DDL操作时,会使分区全局索引失效,需要加上关键字update global indexes.KingbaseES 同样支持全局索引.那么,如果对分区表进行DDL操作,那 ...

随机推荐

  1. 【OpenGL ES】绘制彩色三角形

    1 前言 ​ [OpenGL ES]绘制三角形 中介绍了绘制普通三角形的方法,本文将介绍绘制彩色三角形的方法. ​ 本文完整代码资源见→[OpenGL ES]绘制彩色三角形 ​ 项目目录如下: 2 案 ...

  2. 初探富文本之文档diff算法

    初探富文本之文档diff算法 当我们实现在线文档的系统时,通常需要考虑到文档的版本控制与审核能力,并且这是这是整个文档管理流程中的重要环节,那么在这个环节中通常就需要文档的diff能力,这样我们就可以 ...

  3. 如何处理Long类型精度丢失问题?

    一.现象与分析: 1.1. 现象 前后端交互,当后端传一些值给前端的时候,如果是long类型,有可能会出现数字太大而前端接收不了(java中的long大于js的number)而导致数据不一致,精度会丢 ...

  4. day04---虚拟主机网络配置的三种模式介绍

    课程大纲 补充:安装系统过程中 分区的知识 1.虚拟软件使用方法 2.操作系统网络配置 3.虚拟主机网络设置 4.操作系统远程连接 5.远程连接排错思路 补充:安装系统过程中 分区的知识 1.企业常见 ...

  5. Navicat安装包和激活工具

    链接:https://pan.baidu.com/s/11YuOKdgGakt3E8CL80aA2g 提取码:h4f3

  6. C#程序全局异常处理—WPF和Web API两种模式

    C#程序的全局异常处理,网上搜下资料都是一大堆,我这里最近也是独立做一个B/S结构的小项目, 后面又增加了需求用WPF实现相同的功能,这里将我所使用的全局异常处理方式做一个简短的总结分享. Web A ...

  7. 【LeetCode二叉树#02】二叉树层序遍历(广度优先搜索),十合一专题

    二叉树层序遍历(广度优先搜索) 102 二叉树的层序遍历 力扣题目链接(opens new window) 给你一个二叉树,请你返回其按 层序遍历 得到的节点值. (即逐层地,从左到右访问所有节点). ...

  8. proc_sys_reset 复位时序

    proc_sys_reset 模块时序 下面为仿真时序,这里做一个record , 后面有使用问题可以参考该时序: 点击查看代码 module test( ); bit slowest_sync_cl ...

  9. 带你领略下iOS中OC的“alloc”源代码,让你在工作中不在迷惑

    前言 前面我们使用官方开源的objc源码进行了编译调试 objc4-818.2源码编译调试笔记 前言为什么会想要调试源码? 苹果开源了部分源码, 但相似内容太多, 基本找不到代码见的对应关系, 如果能 ...

  10. Golang 常用工具记录

    Golang 常用工具记录 1 golang 类 1.1 日常使用的 copier 复制结构体到另外一个结构体 等等类似的功能 asynq Go中简单.可靠.高效的分布式任务队列,使用 redis 做 ...