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实例运行并扮演该节点上数据库的存储容器的角色,对这种安装配置,存在单点失败的 ...
随机推荐
- bzoj1633 / P2875 [USACO07FEB]牛的词汇The Cow Lexicon
P2875 [USACO07FEB]牛的词汇The Cow Lexicon 三维dp 它慢,但它好写. 直接根据题意设三个状态: $f[i][j][k]$表示主串扫到第$i$个字母,匹配到第$j$个单 ...
- tomcat 7下spring 4.x mvc集成websocket以及sockjs完全参考指南(含nginx/https支持)
之所以sockjs会存在,说得不好听点,就是因为微软是个流氓,现在使用windows 7的系统仍然有近半,而windows 7默认自带的是ie 8,有些会自动更新到ie 9,但是大部分非IT用户其实都 ...
- elasticsearch分词器ik
1. 下载和es配套的版本 git clone https://github.com/medcl/elasticsearch-analysis-ik 2. 编译 cd elasticsearch-an ...
- Educational Codeforces Round 21 Problem E(Codeforces 808E) - 动态规划 - 贪心
After several latest reforms many tourists are planning to visit Berland, and Berland people underst ...
- 逃离迷宫(BFS)题解
Problem Description 给定一个m × n (m行, n列)的迷宫,迷宫中有两个位置,gloria想从迷宫的一个位置走到另外一个位置,当然迷宫中有些地方是空地,gloria可以穿越,有 ...
- Windows 上安装 pip
1 从 https://pypi.python.org/pypi/pip#downloads 下载安装包 pip-9.0.1.tar.gz 2 解压 pip-9.0.1.tar.gz 3 用CMD ...
- Weex 简介
weex简介 Weex 是一套简单易用的跨平台开发方案,能以 web 的开发体验构建高性能.可扩展的 native 应用,为了做到这些,Weex 与 Vue 合作,使用 Vue 作为上层框架,并遵循 ...
- left join联查提高执行性能
本文为博主原创,未经允许不得转载: 在项目应用中,很多功能需要多张数据库表联查,甚至跨数据库查询获取数据.sql的执行性能很能影响 服务的体验感,今天就遇到了这样问题,原来的sql是这样的: sele ...
- 【TCP/IP详解 卷一:协议】第十七章 TCP:传输控制协议
本章作为TCP的入门章节,简单的概述了一些TCP的知识,和TCP数据报的首部格式. TCP 最重要的特性:reliable. 17.1 引言 本章介绍的是 TCP为应用层提供的服务. 17.2 TCP ...
- 【Coursera】Third Week(1)
The Early World-Wide-Web 关于CERN 欧洲核子研究组织,除了它为世界物理学所作出的卓越贡献,它还是世界上第一个网站,第一个网络服务器,第一个浏览器的诞生地. Robert C ...