分区表的用意是使大型表 分而治之。但是分区表是否一定会加快访问呢。
可能更慢,可能更快,可能没变化。
好处就是
一: 提高可用性
因为分区后分区的损坏不影响其它分区的使用,除非你一定要查找损坏分区的内容
二: 加快索引及数据重建速度。
如果你有一个100G表,有部分数据行迁移,行连接。要重建会很麻烦,如果做为分区表,只重建其中一个分区会很方便
三:并行dml 也是分区表的重要好处
oracle 对分区表进行并行的 insert,update或delete 操作,会大大加快速度。
四:查询速度的提升
1.分区消除(partition elimination),即不考虑其它分区的内容,如果以前10G的数据分为10个分区,现在就只找1G的数据。肯定会提高速度
SELECT * FROM t_par PARTITION(p1);
2.并行操作(parallel operation),分区表是在物理上把大表分开,在多cpu并且io 充足的情况下,并行操作的好处不言而喻。
表分区机制
目前Oracle中有4种对表分区的方法:
1、区间分区:通过数据范围进行分区。例如,时间戳在Jan-2005内的所有记录都存储在分区1中,时间戳在Feb-2005内的所有记录都存储在分区2中,依此类推。这可能是Oracle中最常用的分区机制。
2、散列分区:这是指在一个列(或多个列)上应用一个散列函数,行会按这个散列值放在某个分区中。
3、列表分区:指定一个离散值集,来确定应当存储在一起的数据。例如,可以指定STATUS列值在(’A’,’M’,’Z’)中的行放在分区1中,STATUS值在(‘D’,’P’,’Q’)中的行放在分区2中,依此类推。
4、组合分区:这是区间分区和散列分区的一种组合,或者是区间分区与列表分区的组合。通过组合分区,你可以先对某些数据应用区间分区,再在区间中根据散列或列表来选择最后的分区。
创建语句其本都相同,以区间分区为例
/***********************************
desc: 创建一个按时间分区的分区表
time: 2010-1-6
created:benson
***********************************/
查看用户分区表状态
select * from user_tab_partitions;
创建分区表按照时间分区
create table t_par(s_time date,id number)
partition by range(s_time)
(
partition pmax values less than(maxvalue) tablespace users
);
插入100条记录,100天的数据
insert into t_par
select to_date('2010-12-31','yyyy-mm-dd')-mod(rownum,100),
rownum
from dba_objects
where rownum<101;
按时间分为两个区p1,pmax
alter table t_par
split partition pmax at(to_date('2010-10-1','yyyy-mm-dd'))
into
(
partition p1,
partition pmax
);
查看p1分区,可以看到p1分区为 2010-10-1以前的数据
SELECT * FROM t_par PARTITION(p1);
插入一条2010-10-1日以前的数据。验证是否插入到了 partition p1中
insert into t_par values(to_date('2010-9-1','yyyy-mm-dd'),222);
验证数据
SELECT * FROM t_par PARTITION(p1);
我们一般会这样查看分区表
SELECT table_name,partition_name,u.high_value from user_tab_partitions u WHERE table_name NOT LIKE 'BIN%';
删除分区表
ALTER TABLE t_par DROP PARTITION p20100106;
分享到:
相关推荐
#### 二、Oracle 分区的优缺点 ##### 优点: - **增强可用性**:即使某个分区出现故障,其他分区的数据仍然可用。 - **简化维护**:如果某个分区发生问题,只需对该分区进行修复即可。 - **均衡 I/O**:可以通过将...
Oracle分区表中的Hash分区是一种基于哈希算法的分区策略,适用于处理无法清晰定义分区范围的大型数据表。这种分区方式通过计算分区键的哈希值来决定数据存储在哪个分区,以此达到数据分散和负载均衡的目的。Hash分区...
【Oracle分区表用法】 Oracle分区表是一种高级的数据库管理技术,它将大型表的数据分散存储在不同的物理区域,以提升查询效率和系统的整体性能。本文将详细介绍分区表的概念、作用、优缺点,以及各种类型的分区表...
Oracle分区表是数据库管理系统Oracle中的一个高级特性,用于将大表分成较小、更易管理的部分,从而提高查询性能,优化存储管理和数据维护。在大型企业级应用中,尤其是在处理大量数据时,分区表是不可或缺的技术手段...
Oracle数据库中的分区表是一种高级的表组织形式,它将大表分成多个较小的部分,每个部分称为一个分区,以提高查询性能和管理效率。当表的大小超过2GB时,官方推荐使用分区表,因为它们在处理大量数据时具有显著优势...
#### 二、分区表的概念与特点 在深入了解导入导出之前,我们先简要回顾一下Oracle分区表的基本概念。分区是一种将大表分成多个小表的技术,这样可以提高查询性能并简化管理。分区表可以根据不同的键值进行划分,例如...
Oracle 分区表管理是数据库系统中的一个重要概念,它允许大表的数据被组织成更小、更易管理和查询的单元,从而提高数据处理的效率。在Oracle数据库中,分区表是通过将一个大表分解为多个逻辑上关联的分区来实现这一...
Oracle 分区表全揭秘 ,非常详细,oracle dba可以看看
Oracle 分区表是指将一个大表分割成多个小表,每个小表称为一个分区,分区表的优点是可以提高查询性能、改善管理型、增强容错性等。 分区表的分类: 1. 范围分区(Range Partitioning) 范围分区是将数据基于范围...
标题中提到的“Oracle 分区表自动维护脚本”是指一种在Oracle数据库系统中用于管理和维护分区表的自动化脚本。这种脚本可以执行多个维护任务,包括但不限于:增加新分区、删除历史分区、拆分分区和数据清除等操作。...
在Oracle数据库管理中,分区表是一种非常实用的功能,它能够帮助优化查询性能并简化大型表的管理。当涉及到批量删除或清除分区表中的数据时,就需要掌握一些特定的方法和技术。根据给定的信息“清除oracle分区表数据...
#### 二、Oracle分区类型 Oracle支持多种类型的分区,主要包括: 1. **范围分区** (Range Partitioning):基于列的取值范围来分配数据到不同的分区。 2. **列表分区** (List Partitioning):基于列的特定值或值...
在企业级应用中,为了提升数据管理效率和优化查询性能,Oracle提供了分区表这一特性。同时,为了保证数据的一致性和完整性,Oracle的锁机制也是其核心功能之一。下面我们将深入探讨Oracle分区表和锁的应用。 一、...
### ORACLE 分区表的创建详解 #### 一、概述 在Oracle数据库中,分区是一种高效的数据管理方式,尤其适用于大型表和索引组织表。通过将数据逻辑地分割成多个独立的部分(即分区),可以显著提高查询性能,并简化表...
Oracle 分区表是数据库管理中一种高级的数据组织技术,主要用于处理大规模数据的存储和查询效率。本文将深入探讨分区表的概念、作用、优缺点以及如何进行操作。 首先,我们来理解表空间和分区表的基本概念。表空间...
"Oracle分区表和分区索引在VLDB中的研究" 本文研究了Oracle分区表和分区索引在VLDB(Very Large Databases)中的应用。分区表和分区索引是数据库管理中的关键技术之一,是VLDB中一个重要的性能提升机制。通过分析一...
Oracle 普通表转分区表方式 Oracle 分区表(Partitioned Table)是一种特殊的表结构,可以根据不同的条件将数据分割成多个独立的分区,以提高查询效率和减少存储空间。本文将详细介绍将 Oracle 普通表转换为分区表...
Oracle 分区表分区索引详解 Oracle 分区表分区索引是 Oracle 数据库中的一种重要机制,它可以提高数据的存储和查询效率。下面将详细介绍 Oracle 分区表分区索引的类型、分类、创建方法和维护方式。 一、分区表和...
Oracle数据库分区表操作方法 Oracle数据库中的分区表是将大型数据表分割成多个小表,以提高应用系统的性能和方便数据管理。在本文中,我们将详细介绍分区表的使用方法和优点。 分区表的优点 使用分区表可以带来...