mysql global index_Oracle中addsplit partition对globallocal index的影响
生产库中某些大表的分区异常,需要对现有表进行在线操作,以添加丢失分区,因为是生产库,还是谨慎点好,今天有空,针对addspli
生产库中某些大表的分区异常,需要对现有表进行在线操作,以添加丢失分区,因为是生产库,还是谨慎点好,今天有空,针对add&split分区对global&local索引的影响进行了测试,测试版本为Oracle11.2.0.4,过程如下:
首先,创建分区表:
CREATE TABLE TP1
(
C1 INT PRIMARY KEY,
C2 VARCHAR2(10),
C3 CHAR(10)
)
partition by range (c1)
(
partition p1 values less than(6),
partition p2 values less than(11),
partition p3 values less than(16),
partition maxvalue values less than(maxvalue));
但在add partition时遇到了问题,报错如下:
ORA-14074: 分区界限必须调整为高于最后一个分区界限
根本原因是存在最后maxvalue分区,于是,再创建一个不带maxvalue的分区表:
CREATE TABLE TP2
(
C1 INT PRIMARY KEY,
C2 VARCHAR2(10),
C3 CHAR(10)
)
partition by range (c1)
(
partition p1 values less than(6),
partition p2 values less than(11),
partition p3 values less than(16));
然后,,创建local索引:
create index idx_tp2_c2 on tp2(c2) local;
因为主键就是个global索引,所以,不需要另外创建global index,我们insert数据:
insert into tp2 vlaues(1,'aaa','aaa');
insert into tp2 vlaues(2,'aaa','aaa');
insert into tp2 vlaues(3,'aaa','aaa');
insert into tp2 vlaues(4,'aaa','aaa');
insert into tp2 vlaues(5,'aaa','aaa');
insert into tp2 vlaues(6,'aaa','aaa');
insert into tp2 vlaues(7,'aaa','aaa');
insert into tp2 vlaues(8,'aaa','aaa');
insert into tp2 vlaues(9,'aaa','aaa');
insert into tp2 vlaues(10,'aaa','aaa');
commit;
我们add partition:
ALTER TABLE tp2 add PARTITION p10 values less than(51);
add partition成功,因为不存在maxvalue分区,而且,add partition对global和local索引均无影响;
那么,split partition:
ALTER TABLE tp2 SPLIT PARTITION p2 AT (8) INTO (PARTITION p2, PARTITION p22) ;
发现split分区会导致golbal索引失效,而local索引正常,为split分区命令添加update indexes选项后,再split分区对global&local索引均无影响:
ALTER TABLE tp2 SPLIT PARTITION p1 AT (3) INTO (PARTITION p1, PARTITION p11) update indexes;
以上为测试结果,记录于此,以便今后其他同学和自己参考。
本文永久更新链接地址:
本文原创发布php中文网,转载请注明出处,感谢您的尊重!
mysql global index_Oracle中addsplit partition对globallocal index的影响相关推荐
- mysql pushdown_MySQL 5.6 中一个重要的优化——Index Condition Pushdown,究竟push down了什么...
1 问题描述 一条SQL,在数据库中是如何执行的呢?相信很多人都会对这个问题比较感兴趣.当然,要完整描述一条SQL在数据库中的生命周期,这是一个非常巨大的问题,涵盖了SQL的词法解析.语 ...
- MySQL 5.7中的新功能
本节总结了MySQL 5.7中添加,弃用和删除的内容.随附部分列出了MySQL服务器选项以及在MySQL 5.7中添加,弃用或删除的变量.请参见第1.5节"在MySQL 5.7中添加,弃用或 ...
- MySQL将表中的yes改成no_mysql在不需要改程序的情况下通过操作数据库对单表数据量大的表进行分表...
1.为什么要分表? 数据库数据越来越大,随之而来的是单个表中数据太多.以至于查询速度变慢,而且由于表的锁机制导致应用操作也搜到严重影响,出现了数据库性能瓶颈. mysql中有一种机制是表锁定和行锁定, ...
- mysql未指定错误_使用mysql的系统中常见sql错误
使用mysql的系统中常见的sql错误: 1.事务中某些表是非innodb类型. SQLWarning ignored: SQL state 'HY000', error code '1592', m ...
- 编写Scala代码,使用Spark讲Mysql数据表中的数据抽取到Hive的ODS层
编写Scala代码,使用Spark讲Mysql数据表中的数据抽取到Hive的ODS层 抽取MySQL的metast库中Production表的全量数据进入Hive的ods库中表production,字 ...
- MySQL 5.6中如何定位DDL被阻塞的问题
在上一篇文章<MySQL 5.7中如何定位DDL被阻塞的问题>中,对于DDL被阻塞问题的定位,我们主要是基于MySQL 5.7新引入的performance_schema.metadata ...
- Global.asax中Application_Error无法执行
Global.asax中Application_Error无法执行 问题解决后才发现这句是错误的,之前用VS2005开发后发布到服务器上也出现这种情况,后来莫名 的好了(是解决了没发现原因). 之前的 ...
- mysql 执行cmd,mysql命令行中执行sql的几种方式总结
1.直接输入sql执行 MySQL> select now(); +---------------------+ | now() | +---------------------+ | 2013 ...
- mysql的调用有哪三种方式_MySQL数据库之mysql命令行中执行sql的几种方式总结
本文主要向大家介绍了MySQL数据库之mysql命令行中执行sql的几种方式总结 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. 1.直接输入sql执行 MySQL> se ...
最新文章
- Python机器学习:训练Tesseract
- Node_MongoDB
- 数据结构 - 队列(非环形队列,以及优化成环形队列)
- python中的类方法和静态方法
- python 类继承和组合_python类与对象的组合与继承
- Log Parser Studio 分析 IIS 日志
- webpack4升级指南
- 初见mybatis-plus(快速创建入门案例)
- vue使用下载插件来完成下载文件
- 《大数据技术原理与应用》—— 提纲
- 公差基本偏差代号_公差代号和公差带代号有什么区别?
- 怎么看rx580是不是470刷的_【BIOS】网上都没有的教程 RX470 RX480 RX570 RX580显卡BIOS刷黑了怎么办?自救方法...
- 自学c语言难,自学C语言/C++到底难在哪里?
- 腾讯云 接口验签 使用qcloud-java-sdk
- 【POI2004】【Bzoj2069】T2 洞穴 zaw
- 大数据学习01:大数据概述
- 1.5_18:鸡尾酒疗法(NOIP)
- JAVA写代码学费,java编程培训班学费是多少
- android实现大文件断点上传
- 电子海图改正信息的计算和输入