`
wwwzhouhui
  • 浏览: 361409 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

oralce水平分表

 
阅读更多

     工作中遇到一张表每天都插入很多数据,随着时间的推移数据量会变的很大上百万条甚至上千万条记录。这样我们能不能把表进行拆分呢,答案是肯定的oracle 很早就考虑到这个问题提供了水平拆分

    oracle 10 g 中提供下面三中分区:

   1)范围分区(Range partition)

     2) 哈希分区(Hash  partition)

     3)列表分区(List partition)

    由于水平有限下面重点介绍范围分区

   范围分区,顾名思义,就是根据表的某个字段的值,以固定的一个范围作为一个分区来划分数据

   1.1可以根据序号分区建表

        create table test1

(
  ID         NUMBER not null,
  JQBH       VARCHAR2(20),
  FJH        VARCHAR2(20)
)
partition by range (ID)
(
 partition part_01 values less than(30000000) tablespace WLKP_FP_DATA_2011,
 partition part_02 values less than(60000000) tablespace WLKP_FP_DATA_2012,
 partition part_03 values less than(maxvalue) tablespace WLKP_FP_DATA_2013
 );

    从上面我们看出按照序号分区1-30000000数据存储在part_01分区表中,30000000-60000000数据存储在第part_02分区表中。这样就达到水平拆分表的目的

    1.2可以根据日期分区建表

     create table test2

(
  ID         NUMBER not null,
  JQBH       VARCHAR2(20),
  FJH        VARCHAR2(20),
   KPRQ       DATE
)
partition by range (KPRQ)
(
 partition part_01 values less than(TO_DATE('2012-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')) tablespace WLKP_FP_DATA_2011,
 partition part_02 values less than(TO_DATE('2013-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')) tablespace WLKP_FP_DATA_2012,
 partition part_03 values less than(MAXVALUE) tablespace WLKP_FP_DATA_2013
 );

    从上面建表语句我们可以看到通过时间按照年存储数据表。

    通过以上方式以上方式我们可以将数据比较大的表根据ID 时间自动拆分的其他分区表中。

    以上方式在系统设计表结构的时候就考虑到分表情况,实际工作中由于对系统数据量的遇见不足,没有在设计表的时候考虑的表水平切分情况。那么我们有没有办法对现有表进行拆分和改造呢。答案是肯定的。

    现在对表WLKP_FP_KJ进行扩展改造

    1.创建新表空间

      CREATE TABLESPACE "WLKP_FP_DATA_2010" 

    LOGGING 
    DATAFILE 'E:\oracle\product\10.2.0\oradata\wlkp\WLKP_FP_DATA_2010.ORA' 
    SIZE 5M REUSE AUTOEXTEND 
    ON NEXT  1024K MAXSIZE  32767M EXTENT MANAGEMENT LOCAL 
    SEGMENT SPACE MANAGEMENT  AUTO ;
    commit;
 

 

    这里我们新建WLKP_FP_DATA_2010表空间,按照年来存储扩展WLKP_FP_KJ表当然也可以建立2011、2012、2013...表空间存储未来的数据

   2创建新表WLKP_FP_KJ_TEST

    表结构按照1.2日期分区建表

   3.新表建立后,复制老表数据

    insert into wlkp_fp_kj_test select* from wlkp_fp_kj 

   4.将老表wlkp_fp_kj 删除

   5.重命名wlkp_fp_kj_test 为wlkp_fp_kj 

   这样通过以上方式我们可以讲原来wlkp_fp_kj 按照时间水平分割存储到不同的表空间了.

   通过分区表查询数据分别存储在哪个分区表中.

      select * from WLKP_FP_KJ partition(WLKP_FP_DATA_2011) ;

 

 

分享到:
评论

相关推荐

    Oracle分库分表分区学习日志.docx

    Oracle 分库分表分区学习日志 Oracle 分库分表分区是 Oracle 数据库中的一种优化技术,用于解决大型数据库中的性能瓶颈问题。通过将表分区、分库、分表,减少数据库的负担,缩短查询时间,提高系统的稳定性和负载...

    kettle对数据分表插入

    本篇文章将深入探讨如何利用Kettle进行数据分表插入,并结合Oracle数据库、Java脚本以及哈希算法来实现这一目标。 首先,让我们理解什么是数据分表。在大数据场景下,单一的大表可能会导致性能瓶颈,因此通常会采用...

    oracle大数据分析方案

    6. **Sharding技术**:Oracle的大数据分表技术是实现水平扩展的一种方法,通过将大表分成多个小表(片),每个片在不同的服务器上,从而分散负载,提高查询性能。这种技术在大数据环境中尤其重要,因为它允许数据按...

    Oracle编程艺术

    《Oracle编程艺术》一书是针对Oracle数据库系统编程的一份宝贵资源,主要涵盖了与Oracle相关的各种编程技术和实践经验。...无论是初学者还是经验丰富的开发者,都能从中获益,提升自己的Oracle技术水平。

    oracle存储过程学习经典入门

    Oracle存储过程的学习经典入门涉及多个核心概念和技术,包括性能调优、数据库分区、分表、读写分离以及主从模式等。以下是对这些知识点的详细说明: 1. **Oracle存储过程**: - 存储过程是一组预先编译的SQL语句和...

    分库分表总结

    1. 水平分表:根据数据的某个字段(如用户ID、时间戳等)进行切分,将同一份数据分散到多个表中。例如,用户表可以按照用户ID的范围进行分表,每个表存储一部分用户的数据。 2. 垂直分表:根据字段的业务相关性进行...

    Oracle与mysql比较.pdf

    MySQL则主要依靠读写分离和分库分表等手段来实现水平扩展,但是整体的可伸缩性相比于Oracle还是有一定的限制。 安全性是数据库选择中一个非常关键的考虑因素。Oracle数据库在安全方面提供了很多企业级的安全特性,...

    Oracle数据库在过程控制计算机系统中的应用研究.pdf

    【Oracle数据库在过程控制计算机系统中的应用研究】 Oracle数据库是一种广泛应用的关系型数据库管理系统,...通过深入研究和优化Oracle数据库的使用,可以进一步提升系统的性能和稳定性,推动企业生产管理水平的提升。

    在被甲骨文公司收购后,现在属于甲骨文公司(Oracle) 旗下产品 Oracle 大幅调涨MySQL商业版的售价,因此导致自由软

    水平分库根据字段进行哈希或范围划分,水平分表则是将一个大表的数据分散到多个小表。垂直分库基于业务归属,将不同表分配到不同库,垂直分表则是将高活跃字段和低活跃字段分离。分库分表可能会遇到的问题包括数据...

    springboot jpa分库分表项目实现过程详解

    在项目实践中,我们使用 Sharding-JDBC 实现数据库水平分片框架,实现透明化数据库分库分表访问。Sharding-JDBC 是继 dubbox 和 elastic-job 之后,ddframe 系列开源的第 3 个项目。它使用客户端直连数据库,以 jar ...

    MySQL分库分表.doc

    MySQL分库分表是一种应对大数据量和高并发场景下的数据库优化策略,旨在提高数据库系统的性能、可用性和可扩展性。MYCAT(曾用名:Maatkit)是一款开源的数据库中间件,它允许开发者将MySQL数据库集群化,实现分库...

    Oracle数据迁移技巧和优化思路.rar

    6. **数据库架构调整**:根据业务需求,调整表结构,如分表、分库,实现水平扩展。 7. **监控与调优**:迁移后持续监控数据库性能,及时发现并解决问题。 四、实际操作中的问题及解决策略 1. **数据类型兼容性**...

    支付宝核心账务去Oracle实践(2017)

    于是,账务系统引入了分库分表技术,并采用Oracle DataGuard进行数据备份和灾备,同时在应用层引入failover机制来提高系统可用性。 进一步地,为了应对业务量每年双11期间翻番的需求,支付宝技术团队将架构升级为...

    sharding + mybatis-plus 分库分表

    总的来说,“Sharding + Mybatis-Plus 分库分表”是一种有效的解决大数据量场景下的数据库扩展策略,它通过Java的中间件技术,实现了数据库层面的水平扩展,结合Mybatis-Plus的便利性,降低了开发复杂度,提升了系统...

    互联网金融如何去Oracle-蚂蚁实战剖析.pptx

    9. **数据库存储**:在物理层,除了Oracle,还引入了OceanBase和MySQL等其他数据库,通过数据复制中心实现核心交易数据的分表分库和Failover。 10. **技术架构**:使用如IBatis和SpringDataSource等工具,构建逻辑...

    对分库分表的一些想法

    5. **水平分表**:根据行数据进行切分,每张表包含的数据量相等或相近,适合处理大量数据。 在实施分库分表时,会遇到一些挑战,如事务一致性、分布式JOIN操作、跨库分页等。对于事务一致性,可以通过2PC(两阶段...

    Docker安装Mycat和Mysql进行水平分库分表实战【图文教学】.doc

    Docker 安装 Mycat 和 Mysql 进行水平分库分表实战 一、 Docker 安装 Mycat 和 Mysql 的概述 在本文中,我们将使用 Docker 安装 Mycat 和 Mysql,进行水平分库分表实战。Mycat 是一个开源的数据库中间件,支持 ...

    集成sharding-jdbc实现分库分表.zip

    它支持SQL标准,兼容各种主流数据库,如MySQL、Oracle等,使得数据库的水平扩展变得简单易行。 2. **分库分表原理** 分库分表是将一个大的数据库拆分成多个小的数据库,将一张大表拆分成多张小表,以减轻单个...

Global site tag (gtag.js) - Google Analytics