`

oracle优化之表分区

 
阅读更多

一、首先介绍下oracle表分区的优缺点:

优点:

1.改善查询性能:对分区对象的查询只搜索自己相关的分区

2.增强可用行:如果有其中一个分区出现故障,并不影响其它分区的使用

3.维护方便:如果有其中一个分区出现故障,需要修复,只修复故障区域就可

缺点:

1.如果已经存在的表不能进行直接转化为分区表

二、表分区的类型以及操作方法:

1.范围分区:

范围分区是将数据按照范围映射不同的分区,这个范围是在创建分区时指定的分区键决定的,并且这种分区方式也是最常用的,分区键常采用日期。

规则:

a.必须使用VALUES LESS THEN字句来指定一个上限值

b.除了第一个分区,其它都会隐身有一个下限值(上一个的上限值)

c.在最高的分区中。MAXVALUE被定义。它代表一个不确定的值,这个值高于其它分区中的任何分区键的值,即高于(VALUES LESS THEN 指定的值),同时包括空值

例子:

--以 CUSTOMER_ID 字段来进行分区
PARTITION BY RANGE (CUSTOMER_ID) 
( 
    PARTITION CUS_PART1 VALUES LESS THAN (100000) TABLESPACE CUS_TS01, 
    PARTITION CUS_PART2 VALUES LESS THAN (200000) TABLESPACE CUS_TS02 
)
--此处的200000可以用MAXVALUE,代表一个不确定的值

--下面是一个按照时间分区的例子:
PARTITION BY RANGE (ORDER_DATE) 
(
  PARTITION ORD_ACT_PART01 VALUES LESS THAN (TO_DATE('01- MAY -2003','DD-MON-YYYY'))        TABLESPACE ORD_TS01,
  PARTITION ORD_ACT_PART02 VALUES LESS THAN (TO_DATE('01-JUN-2003','DD-MON-YYYY'))  TABLESPACE ORD_TS02,
  PARTITION ORD_ACT_PART02 VALUES LESS THAN (TO_DATE('01-JUL-2003','DD-MON-YYYY'))  TABLESPACE ORD_TS03
)
 

 

2.列表分区:某列只用几种值(即:枚举值)

PARTITION  BY  LIST (area) 
( 
    PARTITION  part1 VALUES ('guangdong','beijing') TABLESPACE  Part1_tb, 
    PARTITION  part2 VALUES ('shanghai','nanjing')  TABLESPACE  Part2_tb 
);

 3.散列分区:

PARTITION BY HASH (COL) 
( 
  PARTITION PART01 TABLESPACE HASH_TS01, 
  PARTITION PART02 TABLESPACE HASH_TS02, 
  PARTITION PART03 TABLESPACE HASH_TS03 
)

 

4.组合分区:

 

 三、oracle分区表的查询:

 1.sql中不指定分区:

select*from 分区表 t where createdate > to_date('2009-07-12','yyyy-mm-dd') and createdate < to_date('2009-08-12','yyyy-mm-dd')

 

 如果查询字段是分区键,会自动在数据存在的区进行检索;如果不是没有使用分区键进行索引,则会查询所有的表分区,这样也就增大了数据库压力。

2.sql中指定分区:

 

select * from 分区表  PARTITION(P200907) t where sms_report_date > to_date('2009-07-12','yyyy-mm-dd') and sms_report_date < to_date('2009-08-12','yyyy-mm-dd')

 sql查询中指定在哪个分区上面,使用partition关键字指定表分区的名称

 

 3.使用truncate删除分区表

alter table range_part_tabl truncate partition p9;

 4.分区交换(将分区表中的数据和mid_table的数据进行交换)

alter table range_part_tab exchange partition p8 with table mid_table

 5.分区切割

alter table range_part_tab split partition p_max at(to_date('2013-02-01','yyyy-MM-dd')) 
into (partition p2013_01,partition p_max);

 6.分区的新增与删除

alter table range_part_tab add partition p2013_01 values less than (to_date('2013-02-01','yyyy-MM-dd'));
alter table range_part_tab drop partition p2013_01;

 

 

分享到:
评论

相关推荐

    oracle分区表之hash分区表的使用及扩展

    Hash分区具有常规分区表的优点,如提升数据可用性、减少管理成本以及优化查询性能。 在某些特定场景下,例如在证券行业中查询某只股票的历史交易数据(如K线图),Hash分区可能比范围分区更有优势。例如,如果表`...

    oracle自动建立表分区脚本

    在Oracle数据库管理中,表分区是一项重要的优化技术,它能够提高大数据量表的查询性能、管理和维护效率。Oracle DBA(数据库管理员)经常需要对大表进行分区操作,以优化数据库的性能。"Oracle自动建立表分区脚本...

    Oracle分区表详解

    Oracle 的分区技术是一种用于管理和优化超大型表和索引的有效手段。通过将一个大型的表或者索引分割成多个较小且可管理的部分,分区技术能够显著提升数据库的性能、可用性和可维护性。 ##### 分区的作用: 1. **...

    oracle表分区详解

    ### Oracle表分区详解 #### 一、概述 Oracle数据库中的表分区是一种高级组织技术,它通过将表的大数据集划分为较小的、更易于管理的部分(即分区),从而提高查询性能和可管理性。表分区可以按照不同的策略进行...

    Oracle表分区详解(优缺点)

    然而,表分区也有其不足之处。已存在的非分区表无法直接转化为分区表,需要通过特定的在线重定义操作来完成。此外,分区会增加数据库的复杂性,可能需要更多的存储空间,并且对数据库设计和维护提出了更高要求。 ...

    ORACLE表自动按月分区步骤

    ### Oracle表自动按月分区步骤详解 #### 一、背景介绍 在大数据处理与分析领域,数据库表的性能优化显得尤为重要。特别是在面对大量历史数据时,合理地利用表分区技术可以显著提高查询效率,减少资源消耗。Oracle...

    oracle数据库优化-分区共.pdf

    Oracle数据库的优化是一个重要的议题,尤其在处理大规模数据时,分区技术显得尤为关键。分区是Oracle数据库提供的一种高效管理超大型表和索引的方法。它将大表和索引分割成多个可管理的小块,以提高数据访问性能,...

    利用kettle自动创建oracle表分区

    Oracle表分区是一种非常重要的数据库优化技术,它可以将大型表分割成多个小的独立表,从而提高查询效率和数据管理效率。在本篇文章中,我们将使用Kettle来自动创建Oracle表分区。 Oracle表分区是指将一个大型表分割...

    oracle数据库表按年分区脚本实战例子

    在Oracle数据库中,分区是一种强大的数据管理技术,它允许我们将大型表分割成更小、更易管理和查询的部分,称为分区。这种技术对于处理大量数据的企业级应用尤其有用,因为它可以提高查询性能,优化存储,并简化数据...

    Oracle锁和表分区

    Oracle数据库系统中,锁和表分区是两个关键的管理数据并发和优化性能的机制。首先,我们来深入了解锁的概念。 1. **锁定机制**:锁定是数据库管理系统中用于控制并发访问的一种方法,确保多用户环境下的数据完整性...

    oracle自动一年建立表分区.zip

    在Oracle数据库系统中,表分区是一...总的来说,"Oracle自动一年建立表分区"的脚本是数据库性能优化的重要工具,尤其适用于需要处理大量时间序列数据的环境。通过合理地使用和维护,可以显著提升数据库系统的整体效能。

    Oracle表分区 建表空间 创建用户

    ### Oracle表分区、建表空间与用户管理 #### 一、表空间的创建与管理 在Oracle数据库中,**表空间**(Tablespace)是物理存储的逻辑容器,它由一个或多个数据文件组成。创建一个新的表空间对于数据库的管理非常重要...

    oracle数据库表分区实例

    ### Oracle数据库表分区实例 #### 一、Oracle表分区简介 在Oracle数据库中,表分区是一种将大型表物理地划分为多个较小部分的技术。通过合理地利用分区技术,可以显著提高查询性能,简化数据管理任务,并加快数据...

    ORACLE数据库优化-分区.pdf

    ORACLE数据库优化-分区.pdf

    Oracle表分区详解

    总结来说,Oracle表分区是大型数据库系统中的重要优化手段,通过合理规划和应用,可以显著提高数据处理效率,降低运维复杂性,为企业的大数据环境提供强大支撑。理解并熟练掌握表分区技术,对于任何Oracle数据库管理...

    Oracle 分区表 分区索引

    Oracle分区技术提供了强大的工具来管理和优化大型表和索引。通过合理选择分区策略和正确使用分区管理功能,可以显著提高数据库性能并降低管理复杂性。在实际应用中,应根据具体的业务需求和技术环境灵活运用这些分区...

    oracle 分区表管理

    分区表管理是Oracle数据库性能优化的关键手段之一,通过合理的分区设计,可以显著提升大型数据仓库的查询速度和维护效率。根据业务需求,可以选择不同的分区策略,如范围分区、列表分区、哈希分区、组合分区等。在...

    Oracle大表分区的技术

    Oracle大表分区是一种高效的数据管理策略,用于处理大型数据集,提高查询性能并简化数据库维护。在Oracle数据库系统中,分区技术允许将一个大表分解为较小、更易管理的部分,每个部分称为一个分区。这样做有多种好处...

    Oracle数据库表分区

    Oracle数据库表分区是一种高效的数据管理策略,特别是在处理大规模数据时,能够显著提升系统性能和数据管理的便捷性。分区技术允许我们将一个大表分成多个逻辑上相关联的、独立的部分,每个部分称为一个分区。这样做...

Global site tag (gtag.js) - Google Analytics