`
csbison
  • 浏览: 156069 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Oracle分区表的优势

阅读更多

分区表的优势

对于数据库的执行机制还是不大了解,希望专家能通过这些数据给予一些原理上的解释和说明,先谢谢了
分别在分区表和普通表上面 执行语句如下:
    SELECT COUNT(*) FROM table_name WHERE column_name='B';
        SELECT COUNT(*) FROM table_name WHERE XM LIKE '%亮%';
        select count(*) from table_name where column_name like '3702%';
        select count(*) from table_name where xm='胡延吉' and xb='1' and column_name='C4';
        select count(*) from table_name where xm='胡延吉' and column_name='C4';
        select count(*) from table_name where xm='胡延吉' and xb='1';
        select count(*) from table_name where xb='1' and column_name='C4';
        select count(*) from table_name where column_name='C4';
        insert into test select * from table_name where xm='胡延吉';
        commit;
        delete from table_name where xm='胡延吉' ;
        commit;
        insert into table_name select * from test;
        commit;
        truncate table test;
        insert into test select * from table_name where column_name='370122873293';
        commit;
        delete from table_name where column_name='370122873293';
        commit;
        insert into table_name select * from test;
        commit;
        truncate table test;
        insert into test  select * from table_name where column_name='B';
        delete from table_name where column_name='B';
        commit;
        insert into  table_name  select * from test ;
        commit;
        truncate table test;
        update table_name set csrq=csrq+1;
        commit;
        update table_name set csrq=csrq+1 where  column_name='370122873293';
        commit;
        select column_name,count(*) from table_name group by column_name;
        select column_name,count(*) from table_name group by column_name;


   (1)在分区表上面执行的时候,数据库自动的以分区为单位,逐个遍历分区,得到最后结果。遍历分区84回中,最短的为7秒,最长的为300秒,总共用时:49分钟。每次遍历平均时间大约为0.5分钟。
        table_name 共有21各分区,619928blocks,其中3个分区无数据,分区segment占用block中最大为75776,最小的为8,平均占用block 34444(没有计算无数据分区),一次遍历过程中读取block最少的是15000,最多的是74971,两次平均为45000。占用cpu大约在20%-70%之间。
   (2)在普通表上面执行的时候,数据库则根据执行计划对全表一次遍历,以表为基本单位,执行时间较短,但是占用资源较多,其中一个cpu使用率总在60%左右。执行完上面语句共耗时5小时24分钟。尤其是在批量update,delete的时候,耗时长(占用了测试时间的6个半小时),占用资源持久不能释放,在联机系统下,这个时候不可避免地会有其他用户对数据库进行增删查改操作的时候,很容易出现异常,导致无法程序正确执行。
  普通表共300000个block,每次进行遍历的时候都要读取所有的block,耗用资源多,
   (3)在执行group by分组查询的时候,分区表耗时12秒,普通表耗时3分50秒
        insert into test  select * from table_name where column_name='B';执行这个语句耗时6分钟,普通表则耗时19分钟。但是发生的物理读取block数量63236与普通表190175相比相差三倍,但是产生的redo相差不大都在47422.9万。
        delete from table_name where column_name='B';执行这个语句耗时9分钟,普通表则耗时110分钟。但是发生的物理读取block数量101549与普通表716569相比相差7倍, redo size:1049412336与普通表相比1545006788相差5亿多。
        consistent gets 74191与普通表5504652相比差近80倍。
        通过测试,发现分区表的在对批量数据进行操作时,在调节性能,减少资源竞争(从物理文件读取数据到内存、一致性读取数据、cpu使用率、分散i/o),具有明显的优势,数据库能够根据sql语句自动调节,判断是否使用分区索引的情况。但是在按照主键进行精确操作的时候,与普通表相比没有明显优势。
分享到:
评论

相关推荐

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

    Oracle分区表中的Hash分区是一种基于哈希算法的分区策略,适用于处理无法清晰定义分区范围的大型数据表。这种分区方式通过计算分区键的哈希值来决定数据存储在哪个分区,以此达到数据分散和负载均衡的目的。Hash分区...

    unix AIX 环境下 exp 备份 Oracle 分区表实例

    - **Oracle分区表优势**: 分区表可以将大数据集分解成较小的、更易于管理的部分,显著提升数据读写性能,特别是在数据量巨大的情况下。 - **定期备份的重要性**: 定期备份是数据安全的重要保障,尤其对于关键业务...

    oracle普通表转化为分区表的方法

    当表的大小超过2GB时,官方推荐使用分区表,因为它们在处理大量数据时具有显著优势。本文将详细介绍如何通过在线重定义(DBMS_REDEFINITION)将普通表转换为分区表,这是官方给出的四种方法之一,且对系统的影响最小...

    Oracle分区表和锁的应用

    下面我们将深入探讨Oracle分区表和锁的应用。 一、Oracle分区表 1. **分区概念**:Oracle分区表是将一个大表逻辑上划分为多个较小的部分,每个部分称为一个分区。每个分区都有自己的索引和维护操作,这使得对大...

    oracle表分区详解

    - 分区表的管理可能比非分区表复杂,尤其是当涉及到大量分区时。 - 对于频繁更改分区键的场景,分区表的维护成本较高。 #### 四、分区类型及示例 ##### 1. 范围分区 范围分区是根据一个列的值的范围来决定数据存储...

    深入学习分区表及分区索引(详解oracle分区).docx

    以下是对Oracle分区表和分区索引的深入解析: 1. **何时使用分区**: - 当表的数据量超过2GB时,分区有助于避免32位操作系统下的文件大小限制,同时减少大规模数据的备份时间。 - 对于包含历史数据的表,如按月份...

    深入学习oracle分区表

    ### 深入学习Oracle分区表 在Oracle数据库管理中,分区是一种重要的技术手段,能够显著提升大型数据集的查询性能...通过深入理解Oracle分区表的原理和实践技巧,可以更好地发挥其优势,为业务发展提供强大的技术支持。

    Oracle分区表详解

    ### Oracle 分区表详解 #### 一、Oracle 分区简介 Oracle 的分区技术是一种用于管理和优化超大型表和索引的有效手段。通过将一个大型表分解成多个较小且易于管理的部分,即分区,可以显著提升数据库性能、可用性和...

    ORACLE-分区表的用法

    ### ORACLE-分区表的用法 #### 1. 表空间及分区表的概念 - **表空间**:表空间是Oracle数据库中的基本存储单元,它由一个或多个数据文件组成,用于存储数据库中的所有数据对象(如表、索引等)。在Oracle中,所有...

    Oracle分区表.pdf

    总结来说,Oracle分区表是解决大数据处理问题的有效工具。通过合理地设计和使用分区,可以显著提升数据库性能,降低维护成本,提高数据处理效率。在实践中,根据业务需求选择合适的分区策略,是实现高效数据库管理的...

    oracle表分区实践

    **文档目的**:本文档旨在明确Oracle分区表的概念,并针对特定业务场景(例如“长安”场景)介绍如何构建分区表。 **阅读对象**:主要包括项目开发人员、项目实施人员及项目设计人员。 **参考文档**:未提供具体...

    oracle数据表分区知识

    **1.1 分区表的优势** - **数据保护与隔离**:由于数据被分散存储在不同的分区中,这降低了数据损坏的风险。 - **高效的备份与恢复**:可以单独备份或恢复某个分区,而不必处理整个表。 - **提高 I/O 性能**:通过...

    Oracle分区技术介绍

    在分区表上创建本地索引时,每个分区都有自己的索引,这在处理大量数据的滚动窗口操作(如添加新数据并移除旧数据)时非常高效,允许快速加载和删除而不影响其他分区。 6. **分区维护** 分区提供了灵活的数据管理...

    oracle分区表

    #### 二、Oracle分区表的优势 1. **增强可用性**:如果表的某个分区出现故障,表在其他分区的数据仍然可用。 2. **维护方便**:当表的某个分区出现故障时,只需要修复该分区即可,而不必影响整个表。 3. **均衡I/O*...

    ORACLE分区与索引

    针对分区表,Oracle 提供了分区索引,它允许索引与分区策略相结合。例如,可以创建局部索引,每个分区都有自己的索引,或者创建全局索引,覆盖所有分区。局部索引通常在查询性能上有优势,而全局索引则适用于跨分区...

    Oracle表分区详解

    在实际应用中,还需要关注分区表的索引、物化视图、分区维护操作(如添加、合并和拆分分区)等方面,以确保系统性能和可维护性。 总结来说,Oracle表分区是大型数据库系统中的重要优化手段,通过合理规划和应用,...

    Oracle数据库分区表操作方法

    通过以上内容,我们可以了解到Oracle数据库分区表的基本操作和优势,这为大数据量的管理和查询提供了有效的解决方案。在实际应用中,根据业务需求选择合适的分区策略,能够极大提升数据库的性能和管理效率。

    Oracle大表分区的技术

    6. **全局索引分区**:当对分区表创建索引时,可以选择创建全局索引,索引覆盖所有分区,或者创建局部索引,每个分区有自己的索引。 二、分区优势 1. **性能提升**:通过只扫描与查询条件相关的分区,显著减少I/O...

Global site tag (gtag.js) - Google Analytics