Oracle12c中性能优化&功能增强新特性之全局索引DROP和TRUNCATE 分区的异步维护
Oracle 12c中,通过延迟相关索引的维护可以优化某些DROP和TRUNCATE分区命令的性能,同时,保持全局索引为有效。
1. 设置
下面的例子演示带全局索引的表创建和加载数据的过程。
-- 建表
CREATE TABLE t1
(id NUMBER,
comment VARCHAR2(50),
crt_time DATE)
PARTITION BY RANGE (crt_time)
(PARTITION part_14 VALUES LESS THAN (TO_DATE('01/01/2015', 'DD/MM/YYYY'))TABLESPACE users,
PARTITION part_15 VALUES LESS THAN(TO_DATE('01/01/2016', 'DD/MM/YYYY')) TABLESPACE users);
ALTER TABLE t1 ADD CONSTRAINT t1_pk PRIMARY KEY (id);
CREATE INDEX t1_idx ON t1 (crt_time);
--加载数据
INSERT /*+ APPEND */ INTO t1
SELECT level,
'commit for ' || level,
CASE
WHEN MOD(level,2) = 0 THENTO_DATE('01/07/2014', 'DD/MM/YYYY')
ELSE TO_DATE('01/07/2015','DD/MM/YYYY')
END
FROM dual
CONNECT BY level <= 10000;
COMMIT;
EXEC DBMS_STATS.gather_table_stats(USER, 't1');
-- 检查索引
COLUMN table_name FORMAT A20
COLUMN index_name FORMAT A20
SElECT table_name,
index_name,
status
FROM user_indexes
ORDER BY 1,2;
TABLE_NAME INDEX_NAME STATUS
-------------------- -------------------- --------
T1 T1_IDX VALID
T1 T1_PK VALID
SQL>
2. 全局索引异步维护
现在,DROP和TRUNCATE PARTITION命令和UPDATE_INDEXES一起使用时,只会导致相关元数据的变化。该功能目前只能用于堆表,不支持对象表,域索引或SYS用户的对象。
实际的索引维护稍后被执行,当满足如下之一的条件时。
- SYS.PMO_DEFERRED_GIDX_MAINT_JOB作业每天2点被调度时。
- 通过 DBMS_SCHEDULER.RUN_JOB手工运行SYS.PMO_DEFERRED_GIDX_MAINT_JOB时。
- 运行DBMS_PART.CLEANUP_GIDX过程时。
- 运行ALTER INDEX REBUILD [PARTITION]命令时。
- 运行ALTER INDEX [PARTITION] COALESCE CLEANUP命令时。
Oracle12c前,如果我们DROP或TRUNCATE了一个分区,将会导致全局索引失效,UPDATE_INDEXES子句会导致操作期间索引重建,使得整个操作变慢。下例中,我们TRUNCATE一个分区,然后查看索引状态。
-- Truncate一个分区
ALTER TABLE t1 TRUNCATE PARTITIONpart_2014 DROP STORAGE UPDATE INDEXES;
或
ALTER TABLE t1 DROP PARTITION part_2014UPDATE INDEXES;
-- 查看索引状态
SElECT table_name,
index_name,
status
FROM user_indexes
ORDER BY 1,2;
TABLE_NAME INDEX_NAME STATUS
-------------------- ----------------------------
T1 T1_IDX VALID
T1 T1_PK VALID
SQL>
视图USER_INDEXE中ORPHANED_ENTRIES新列显示索引还没被维护。
-- 检查是否需要索引维护
SELECT index_name,
orphaned_entries
FROM user_indexes
ORDER BY 1;
INDEX_NAME ORP
-------------------- ---
T1_IDX YES
T1_PK YES
SQL>如果我们手工触发索引维护,我们将会看到ORPHANED_ENTRIES列的变化
-- 手工触发索引维护
EXECDBMS_PART.cleanup_gidx(USER, 't1');
-- 查看是否需要索引维护
SELECT index_name,
orphaned_entries
FROM user_indexes
ORDER BY 1;
INDEX_NAME ORP
-----------------------
T1_IDX NO
T1_PK NO
SQL>
Oracle12c中性能优化&功能增强新特性之全局索引DROP和TRUNCATE 分区的异步维护的更多相关文章
- Oracle12c中性能优化&功能增强新特性之临时undo
临时表最有意思的特点之一是undo段也存储在常规undo表空间中,而它们的undo反过来被redo保护,这会导致一些问题. 1) 写undo表空间需要数据库以读写模式打开,因此,只读数据库和物理备库 ...
- Oracle12c中性能优化&功能增强新特性之重大突破——内存列存储新特性
内存列存储(IM column store) 是Oracle12.1.0.2版本的主要特点.该特点允许列,表,分区和物化视图在内存中以列格式存储,而不是通常的行格式.数据存在内存中的好处显而易见,而列 ...
- Oracle12c(12.1)中性能优化&功能增强之通过参数THREADED_EXECTION使用多线程模型
1. 后台 UNIX/Linux系统上,oracle用多进程模型.例如:linux上一个常规安装的数据库会有如下进程列: $ ps -ef | grep [o]ra_ oracle 15356 ...
- Oracle12c中性能优化增强新特性之数据库智能闪存
智能闪存功能最初在XD中引入.从Oracle11.2.0.2开始,除了用于XD存储,还可用于任何闪盘.Oracle12c中,不需卷管理器就可以使用闪盘. 1. 简介 智能闪存在solaris和lin ...
- Oracle12c功能增强 新特性之管理功能的增强
1. 数据文件在线重命名和迁移 不想先前的版本号.在Oracle12cR1中,数据文件的迁移或重命名不再要求一系列的步骤,比如:将表空间至于仅仅读模式,然后数据文件逻辑等操作.在12cR1中.数 ...
- Oracle12c功能增强新特性之维护&升级&恢复&数据泵等
1. 内容提要 1) 表分区维护的增强. 2) 数据库升级改善. 3) 跨网络还原/恢复数据文件. 4) 数据泵的增强. 5) 实时ADDM. 6) 并发统计信息收集. 2 ...
- Oracle12c中数据删除(delete)新特性之数据库内归档功能
有些应用有“标记删除”的概念,即不是删除数据,而是数据依然保留在表中,只是对应用不可见而已.这种需求通常通过如下方法实现: 1) 给相关表增加一个另外的列,该列存储标志数据被删除的标记. 2) 给 ...
- Oracle12c中性能优化新特性之新增APPROX_COUNT_DISTINCT 快速唯一值计数函数
Oracle11g中,为了改善DBMS_STATS包收集统计信息时的唯一值计数功能,增加了 APPROX_COUNT_DISTINCT函数,但文档中未记载.Oracle12c文档中包括了该函数,因此, ...
- Oracle12c 中RAC功能增强新特性之ASM&Grid
1. 自动存储管理(ASM)方面的增强 1.1. Flex ASM 在典型的网格架构安装中,每个节点有自己的ASM实例运行并扮演该节点上数据库的存储容器的角色,对这种安装配置,存在单点失败的 ...
随机推荐
- PHP安装Xdebug扩展并配置PHPstorm调试(Centos、Windows)
一.给PHP安装Xdebug扩展 [windows] 废话不多说,直接上代码上方法安装扩展,我这里是在windows下. 首先需要确定的就是对应的PHP版本安装对应的Xdebug扩展文件,提供一个最快 ...
- JS中怎么调用<%%>的值
JS中怎么调用<%%>的值 示例代码一: <% String usercode = request.getParameter("usercode");//用req ...
- 文件IO和标准IO的区别【转】
一.先来了解下什么是文件I/O和标准I/O: 文件I/O:文件I/O称之为不带缓存的IO(unbuffered I/O).不带缓存指的是每个read,write都调用内核中的一个系统调用.也就是一般所 ...
- UVA 3942 Remember the Word (Trie+DP)题解
思路: 大白里Trie的例题,开篇就是一句很容易推出....orz 这里需要Trie+DP解决. 仔细想想我们可以得到dp[i]=sum(dp[i+len[x]]). 这里需要解释一下:dp是从最后一 ...
- C#中dll附加配置文件
DLL-with-configuration-file带配置文件的dll http://www.codeproject.com/Tips/199441/DLL-with-configuration-f ...
- BZOJ1297: [SCOI2009]迷路 矩阵快速幂
Description windy在有向图中迷路了. 该有向图有 N 个节点,windy从节点 0 出发,他必须恰好在 T 时刻到达节点 N-1. 现在给出该有向图,你能告诉windy总共有多少种不同 ...
- C#学习笔记(十):函数和参数
函数 using System; using System.Collections.Generic; using System.Linq; using System.Text; using Syste ...
- C#中的DllImport使用方法
DllImport是System.Runtime.InteropServices命名空间下的一个属性类,其功能是提供从非托管DLL导出的函数的必要调用信息 DllImport属性应用于方法,要求最少要 ...
- axis2框架用wsdl文件生成的服务端MessageReceiveInOut文件注意事项
在用axis2生成服务端文件和客户端文件,当客户端文件调用服务端文件时,都是通过wsdl文件生成的 配置文件进行相互的调用. 在一开始做开发测试的时候,通过soapUI进行调用接口的时候,可以调用成功 ...
- TCGA系列--fusion
http://www.tumorfusions.org/ 其他: COSMIC has a list of "curated fusion" http://cancer.sange ...