zoukankan      html  css  js  c++  java
  • Oracle实践--PL/SQL表分区的基础

    PL/SQL基础入门之表分区

             PL/SQL:过程语言(Procedure  Language)和结构化语言(Structured Query Language)结合而成的编程语言。是对SQL的扩展。支持多种数据类型,如大对象和集合类型,可使用条件和循环等控制语句,可创建存储过程,程序包和触发器等,给sql语句的运行加入程序逻辑,与Oracleserver和Oracle工具紧密集成,具有可移植性。灵活性和安全性。

    ------------------------------------------------------------------------------------------------------------

    表分区

    /*

        分区:Oracle同意用户将一个表分成多个分区,与表的创建一起

        长处:1.用户能够运行查询,仅仅訪问当中特定的分区。

              2.将不同的分区存储在不同的磁盘。提高訪问性能和安全性

              3.能够独立备份和恢复分区。

    */

    1.范围分区:以表中一个列或一组列的值得范围分区

    --keyword:partition by range values less than

    create table person1(
          pid number primary key,
          birthday date
    )
    partition by range (birthday)(
         partition p1 values less than (to_date('1980-01-01','yyyy-mm-dd')),
         partition p2 values less than (to_date('1990-01-01','yyyy-mm-dd')),
         --partition p1 values less than (maxvalue)
    )
    insert into person1 values(1,'ysjian',to_date('1965-02-03','yyyy-mm-dd'));
    insert into person1 values(2,'ysjian',to_date('1985-02-03','yyyy-mm-dd'));
    insert into person1 values(3,'ysjian',to_date('1995-02-03','yyyy-mm-dd'));
    select * from person1 partition(p2);

    2.散列分区:同意用户对不具有逻辑范围的数据进行分区,keyword:hash

    --通过在分区键上运行hash函数决定存储的分区,将数据平均分配到不同的分区

    create table person2(
          pid number primary key,
          pname varchar2(20),
          birthday date
    )
    partition by hash(birthday)(
             partition p1 [TABLESPACE tbs1],
             partition p2 [TABLESPACE tbs2],
             partition p3 [TABLESPACE tbs3]
    )

    3.列表分区:同意用户将不相关的数据组织在一起,keyword:list,values

    create table person3(
          pid number primary key,
          birthday date。
          address varchar2(50)
    )
    partition by list(address)(
          partition hubei values('武汉','黄石','黄冈'),
          partition shanxi values('西安','渭南','宝鸡')
    )

    4.复合分区:keyword:subpartition

    create table person4(
          pid number primary key,
          birthday date,
          address varchar2(50)
    )
    partition by range(birthday)
    subpartition by hash(birthday)
    subpartitions4(
         partition p1 values less than (to_date('1980-01-01','yyyy-mm-dd')),
         partition p2 values less than (to_date('1990-01-01','yyyy-mm-dd')),
         partition p3 values less than (to_date('2000-01-01','yyyy-mm-dd'))
    )

    --分区的维护:
    1.新增分区:在最后一个分区之后加入新分区

    alter table person1 add partition P4 values less than (4000);

    2.删除分区:删除一个指定的分区,分区的数据也随之删除

    alter table person1 truncate partition P3;

    3.截断分区:删除指定分区中的全部记录,不记录日志,不可恢复

    alter table person1 truncate partition P3;

    4.合并分区 -将范围分区或复合分区的两个相邻分区连接起来

    alter table person1 merge partitions p1, p2 into partition p2;

    5.拆分分区 -将一个大分区中的记录拆分到两个分区中

    alter table person1split partition p2 AT (1500) into (partition P21,partition P22);

    /*

               表分区同意将一个表划分成几部分,以改善大型应用系统的性能

               分区方法包含范围分区、散列分区、复合分区和列表分区

               分区维护操作包含加入、删除、截断、合并和拆分分区

    */

    文章来源:http://blog.csdn.net/ysjian_pingcx/article/details/25646805

    版权声明:本文博客原创文章,博客,未经同意,不得转载。

  • 相关阅读:
    观察者模式
    如何通过反射创建对象?
    java8新特性
    idea 常用快捷键--标蓝
    java多线程基础篇-01
    zookeeper单机版及操作
    redis和jedis常用api
    Mac连接服务器
    redis基本介绍及安装01
    docker 安装mobsf及部分命令01
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/4652569.html
Copyright © 2011-2022 走看看