精华内容
下载资源
问答
  • 列表分区

    2013-12-19 23:06:21
    根据一个分区键值,将根据键值进行分类,分别放在不同区间里 create table list_example ( list_key number, data varchar2(20) ) partition by list(list_key) ( partition list_part1 values(0,1) tablespace ...

    根据一个分区键值,将根据键值进行分类,分别放在不同区间里

    create table list_example

    (
    list_key number,
    data varchar2(20)
    )
    partition by list(list_key)
    (
    partition list_part1 values(0,1) tablespace example,
    partition list_part2 values(2),
    partition list_part3 values(3) tablespace learn

    )

    插入记录

    insert into list_example(list_key,data) select mod(level,4),level from dual connect by level<=100;

    SQL> insert into list_example values(4,null);
    insert into list_example values(4,null)
                *
    第 1 行出现错误:
    ORA-14400: 插入的分区关键字未映射到任何分区

    添加其他值的分区

    alter table list_example add partition list_defaultpart values(default);

    SQL> insert into list_example values(4,null);
    已创建 1 行。
    SQL> commit;
    提交完成。
    SQL> select * from list_example partition(list_defaultpart);
     LIST_KEY DATA
    ---------- --------------------
             4



    SQL> select distinct list_key from list_example partition(list_part1);
      LIST_KEY
    ----------
             1
             0

    SQL> select distinct list_key from list_example partition(list_part2);
      LIST_KEY
    ----------
             2

    SQL> select distinct list_key from list_example partition(list_part3);
      LIST_KEY
    ----------
             3






    展开全文
  • oracle 11g 增加了新的分区类型,总结一下目前之前的分区表 区间分区 散列分区 列表分区 区间分区: create table gh_range_example(...


    oracle 11g 增加了新的分区类型,总结一下目前之前的分区表


    区间分区


    散列分区


    列表分区


    区间分区:


    create table gh_range_example(
    id varchar2(100),
    range_date date not null)
    partition by range(range_date)
    (
    partition range_15 values less than (to_date('2016-01-01','yyyy-mm-dd')),
    partition range_16 values less than (to_date('2017-01-01','yyyy-mm-dd'))
    );




    SQL> select * from user_tab_partitions t where t.table_name='GH_RANGE_EXAMPLE';
    TABLE_NAME                     COMPOSITE PARTITION_NAME                 SUBPARTITION_COUNT HIGH_VALUE                                                                       HIGH_VALUE_LENGTH PARTITION_POSITION TABLESPACE_NAME                  PCT_FREE   PCT_USED  INI_TRANS  MAX_TRANS INITIAL_EXTENT NEXT_EXTENT MIN_EXTENT MAX_EXTENT   MAX_SIZE PCT_INCREASE  FREELISTS FREELIST_GROUPS LOGGING COMPRESSION COMPRESS_FOR   NUM_ROWS     BLOCKS EMPTY_BLOCKS  AVG_SPACE  CHAIN_CNT AVG_ROW_LEN SAMPLE_SIZE LAST_ANALYZED BUFFER_POOL FLASH_CACHE CELL_FLASH_CACHE GLOBAL_STATS USER_STATS IS_NESTED PARENT_TABLE_PARTITION         INTERVAL SEGMENT_CREATED
    ------------------------------ --------- ------------------------------ ------------------ -------------------------------------------------------------------------------- ----------------- ------------------ ------------------------------ ---------- ---------- ---------- ---------- -------------- ----------- ---------- ---------- ---------- ------------ ---------- --------------- ------- ----------- ------------ ---------- ---------- ------------ ---------- ---------- ----------- ----------- ------------- ----------- ----------- ---------------- ------------ ---------- --------- ------------------------------ -------- ---------------
    GH_RANGE_EXAMPLE               NO        RANGE_15                                        0 TO_DATE(' 2016-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA                83                  1 TS_ZYK_DATA                            10                     1        255                                                                                                     YES     DISABLED                                                                                                                DEFAULT     DEFAULT     DEFAULT          NO           NO         NO                                       NO       NO
    GH_RANGE_EXAMPLE               NO        RANGE_16                                        0 TO_DATE(' 2017-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA                83                  2 TS_ZYK_DATA                            10                     1        255                                                                                                     YES     DISABLED                                                                                                                DEFAULT     DEFAULT     DEFAULT          NO           NO         NO                                       NO       NO






    SQL> 
    SQL> insert into gh_range_example(id,range_date) values(100,sysdate-365);
    1 row inserted
    SQL> insert into gh_range_example(id,range_date) values(100,sysdate);
    1 row inserted
    SQL> commit;
    Commit complete


    SQL> select * from gh_range_example partition(range_15);
    ID                                                                               RANGE_DATE
    -------------------------------------------------------------------------------- -----------
    100                                                                              2015/6/16 1


    SQL> insert into gh_range_example(id,range_date) values(100,sysdate+365);
    insert into gh_range_example(id,range_date) values(100,sysdate+365)
    ORA-14400: inserted partition key does not map to any partition


    将其他日期都归属与第三个分区MAXVALUE


    SQL> alter table gh_range_example add partition RANGE_MAX VALUES LESS THAN (MAXVALUE);
    Table altered


    MAXVALUE对于DATE,NUMBER,VARCHAR都是可以的


    散列分区


    hash partitioning


    oracle建议分区个数为2的N次方




    SQL> 
    SQL> create table gh_hash_example(
        id varchar2(100),
        hash_date date)
       partition by hash(hash_date)
        (partition hash_1 tablespace ts_zyk_data,
         partition hash_2 tablespace ts_zyk_data);
    Table created


    SQL> select * from user_tab_partitions t where t.table_name='GH_HASH_EXAMPLE';
    TABLE_NAME                     COMPOSITE PARTITION_NAME                 SUBPARTITION_COUNT HIGH_VALUE                                                                       HIGH_VALUE_LENGTH PARTITION_POSITION TABLESPACE_NAME                  PCT_FREE   PCT_USED  INI_TRANS  MAX_TRANS INITIAL_EXTENT NEXT_EXTENT MIN_EXTENT MAX_EXTENT   MAX_SIZE PCT_INCREASE  FREELISTS FREELIST_GROUPS LOGGING COMPRESSION COMPRESS_FOR   NUM_ROWS     BLOCKS EMPTY_BLOCKS  AVG_SPACE  CHAIN_CNT AVG_ROW_LEN SAMPLE_SIZE LAST_ANALYZED BUFFER_POOL FLASH_CACHE CELL_FLASH_CACHE GLOBAL_STATS USER_STATS IS_NESTED PARENT_TABLE_PARTITION         INTERVAL SEGMENT_CREATED
    ------------------------------ --------- ------------------------------ ------------------ -------------------------------------------------------------------------------- ----------------- ------------------ ------------------------------ ---------- ---------- ---------- ---------- -------------- ----------- ---------- ---------- ---------- ------------ ---------- --------------- ------- ----------- ------------ ---------- ---------- ------------ ---------- ---------- ----------- ----------- ------------- ----------- ----------- ---------------- ------------ ---------- --------- ------------------------------ -------- ---------------
    GH_HASH_EXAMPLE                NO        HASH_1                                          0                                                                                                  0                  1 TS_ZYK_DATA                            10                     1        255                                                                                                     YES     DISABLED                                                                                                                DEFAULT     DEFAULT     DEFAULT          NO           NO         NO                                       NO       NO
    GH_HASH_EXAMPLE                NO        HASH_2                                          0                                                                                                  0                  2 TS_ZYK_DATA                            10                     1        255                                                                                                     YES     DISABLED                                                                                                                DEFAULT     DEFAULT     DEFAULT          NO           NO         NO                                       NO       NO






    DECLARE


    BEGIN


    FOR L IN 1..365 LOOP


    INSERT INTO GH_HASH_EXAMPLE(ID,HASH_DATE)
    VALUES(100,SYSDATE-L);


    END LOOP;
    COMMIT;
    END;




    SQL> SELECT COUNT(1) FROM gh_hash_example partition(hash_1);
      COUNT(1)
    ----------
           184


    SQL> SELECT COUNT(1) FROM gh_hash_example partition(hash_2);
      COUNT(1)
    ----------
           181


    hash_date有足够多的相异值,数据更容易在多个分区上均匀的分布


    样本值差异性越多,越有利于散列分区的使用


    散列分区不能明确某一行具体存在那个分区中


    SQL> truncate table GH_HASH_EXAMPLE;
    Table truncated


    DECLARE


    BEGIN


    FOR L IN 1..365 LOOP


    INSERT INTO GH_HASH_EXAMPLE(ID,HASH_DATE)
    VALUES(100,SYSDATE-L);


    END LOOP;
    COMMIT;
    END;








    SQL>  SELECT COUNT(1) FROM gh_hash_example partition(hash_1);
      COUNT(1)
    ----------
           175


    SQL>  SELECT COUNT(1) FROM gh_hash_example partition(hash_2);
      COUNT(1)
    ----------
           190




    增加新的分区导致所有数据重写


    SQL> ALTER TABLE gh_hash_example ADD PARTITION HASH_3 tablespace ts_zyk_data;
    Table altered
    SQL> ALTER TABLE gh_hash_example ADD PARTITION HASH_4 tablespace ts_zyk_data;
    Table altered


    SQL>  SELECT COUNT(1) FROM gh_hash_example partition(hash_1);
      COUNT(1)
    ----------
            94


    SQL>  SELECT COUNT(1) FROM gh_hash_example partition(hash_2);
      COUNT(1)
    ----------
            97


    SQL> SELECT COUNT(1) FROM gh_hash_example partition(hash_3);
      COUNT(1)
    ----------
            81


    SQL> SELECT COUNT(1) FROM gh_hash_example partition(hash_4);
      COUNT(1)
    ----------
            93




    列表分区


    create table gh_list_example(
    id varchar2(100),
    created_d date)
    partition by list(id)
    (
    partition list_01 values('A','B','C','E'),
    partition list_02 values('D','F','G','I')
    );


    insert into gh_list_example(id,created_d) values('A',sysdate);
    insert into gh_list_example(id,created_d) values('D',sysdate);
    COMMIT;






    SQL> INSERT INTO GH_LIST_EXAMPLE(ID,CREATED_D) VALUES('W',SYSDATE);
    INSERT INTO GH_LIST_EXAMPLE(ID,CREATED_D) VALUES('W',SYSDATE)
    ORA-14400: inserted partition key does not map to any partition






    SQL> ALTER TABLE GH_LIST_EXAMPLE ADD PARTITION LIST_03 VALUES( DEFAULT);
    Table altered


    SQL> INSERT INTO GH_LIST_EXAMPLE(ID,CREATED_D) VALUES('W',SYSDATE);
    1 row inserted


    SQL> COMMIT;
    Commit complete




    ALTER TABLE GH_LIST_EXAMPLE ADD PARTITION LIST_04 VALUES('H')
    ORA-14323: cannot add partition when DEFAULT partition exists
    fj.pngFQB.sql

    来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29162273/viewspace-2120240/,如需转载,请注明出处,否则将追究法律责任。

    转载于:http://blog.itpub.net/29162273/viewspace-2120240/

    展开全文
  • 1、分区表,1.1、分散IO,1.2、方便管理,可单独恢复和管理,1.3。减少数据损坏的可能性,1.4提高性能 2、范围分区 3、列分区 4、rang分区,比较常用根据时间进行分区,...范围分区和列表分区,时间(范围分区...

    1、分区表,1.1、分散IO,1.2、方便管理,可单独恢复和管理,1.3。减少数据损坏的可能性,1.4提高性能

    2、范围分区

    3、列分区

    4、rang分区,比较常用根据时间进行分区,如果无法检测可以建立maxValue分区中

    5、hashMap分区,将数据平均分配到各个分区里

    6、list分区,值必须指定,每个分区必须明确值,所以建立默认的值

     

    范围分区和列表分区,时间(范围分区)、区域值比如北美包含美国,墨西哥(列表分区)

     

    展开全文
  • 创建分区表 分区表的分类 范围分区:对数据表的某个值的范围进行分区,需要使用partition by range字句。...列表分区: 1适用于分区列的值为非数字或者日期数据类型,并且分区列的取值范围较少时

    创建分区表
    分区表的分类
    范围分区:对数据表的某个值的范围进行分区,需要使用partition by range字句。

    散列分区:
    1通过hash算法均匀分布数据的一种分区类型。
    2通过在I/O设备上进行散列分区,可以使得分区的大小一致。
    3创建散列分区需要使用partition by hash字句。

    列表分区:
    1适用于分区列的值为非数字或者日期数据类型,并且分区列的取值范围较少时使用。
    举例:成绩表的科目列取值较少,就可以使用列表分区。
    2需要使用partition by list字句。
    3分区时,需要为每个分区指定取值列表,分区列的取值处于同一个列表中的行将被存储到同一个分区中。

    组合范围散列分区:

    组合范围列表分区:

    举例
    创建散列分区表
    create table student_hash(
    sno varchar2(10) ,
    sname varchar2(20),
    sage number(2),
    score number(2)
    )partition by hash(sno)–散列分区表
    (
    partition part1 tablespace myspace,
    partition part2 tablespace users
    );

    insert into student_hash values(‘1’,’我叫分区1’,12,55);
    insert into student_hash values(‘2’,’我叫分区1’,12,56);
    insert into student_hash values(‘3’,’我叫分区2’,12,76);
    insert into student_hash values(‘4’,’我叫分区3’,12,86);

    这里写图片描述
    查看散列分区表分区中的数据
    select * from student_hash partition(part1);
    select * from student_hash partition(part2);
    这里写图片描述

    创建列表分区表

    create table student_list(
    sno varchar2(10) ,
    ssex varchar2(2),
    sage number(2),
    score number(2)
    )partition by list(ssex)–列表分区表
    (
    partition part1 values(‘男’) tablespace myspace,
    partition part2 values(‘女’) tablespace users
    );

    insert into student_list values(‘1’,’男’,12,55);
    insert into student_list values(‘2’,’男’,12,56);
    insert into student_list values(‘3’,’女’,12,76);
    insert into student_list values(‘4’,’女’,12,86);
    这里写图片描述

    查看列表分区表分区中的数据
    select * from student_list partition(part1);
    select * from student_list partition(part2);
    这里写图片描述

    展开全文
  • --列表分区 create table student(  sid number,  sname varchar2(20),  province varchar2(20) ) partition by list(province)(  partition north values('河南','安徽','河北','山东'),  
  • 存储分区主流的三个分法 : 范围分区,哈希分区,列表分区 每个分区都有属于自己的特点和适合的应用场景 如果不对数据库进行存储分区,当数据量大的时候,比方我想去在数据库的十万/百万条甚至更大的数据里查询一条...
  • 先声明一下:列表分区不支持多列,但是范围分区和哈希分区支持多列。 代码如下: Sql代码 表分区 - 复合分区" style="margin:0px; padding:0px; border:0px; list-style:none"> create table ...
  • Oracle.表分区:列表分区

    千次阅读 2012-05-15 22:23:32
    表分区:列表分区  Oracle.表分区:复合分区 Oracle表分区:操纵已分区的表  允许用户将不相关的数据组织在一起 语法: PARTITION BY LIST (column_name) ( PARTITION part1 VALUES (values_...
  • list列表分区和range分区应该说都是一样的,不同的是range分区在分区时的依据是一段连续的区间,而list分区时依据是一组分布的散列值。 创建表分区 create table student  (id varchar(20) not null ,  studentno ...
  • django-pg-partitioning:支持PostgreSQL 11时间范围和列表分区的Django扩展
  • 自动的列表分区创建 在线的普通表转换分区表 支持只读分区和读写分区混合 以下介绍的三个特性同样是12.2新增的: 多列列表分区、外部表分区、维护过滤 而对于多列列表分区的支持,也是大家关注已久的特性,先看一下...
  • Oracle列表分区

    千次阅读 2008-01-24 20:18:00
    当一张表的列表分区建错时,千万不要直接drop PARTITION ,否则将导致该分区的数据丢失,而且不可恢复,深刻教训啊,现在还不知道怎么渡过这个难关啊,害怕ing.可以采取的方法:(以范围分区举例,此处以城市区号为...
  • 如果你想把散列值对应的行对应到特定的分区,则可以使用列表分区。不像范围分区和哈希分区,多列组合分区对于列表分区是不适用的。如果一张表是使用列表分区,那么分区键只能是一列。 ...
  • 三:列表分区 列表分区明确指定了根据某字段的某个具体值进行分区,而不是像范围分区那样根据字段的值范围来划分的。 Sql代码: create table graderecord03 ( sno varchar2(10), sname varchar2(20), ...
  • 一:范围分区就是根据数据库表中某一字段的值的范围来划分分区,例如:Sql代码 createtablegraderecord(snovarchar2(10),snamevarchar2(20),dormitoryvarchar2(3),gradeint)partitionbyrange(grade)(parti...
  • 概述当生产环境中表的数据量不断增大,查询数据的速度就会变慢,应用程序的性能就会下降,这时我们就应该考虑对表进行分区。表进行分区后,逻辑上表仍然是一张完整的表,只是将表中的数据在物理上存放到多个表空间...
  • 一:范围分区 就是根据数据库表中某一字段的值的范围来划分分区,例如: Sql代码 createtablegraderecord ( snovarchar2(10), snamevarchar2(20), dormitoryvarchar2(3), gradeint ) ...
  • 接下来,小编就带大家看看,在IOS版本的线上教育系统开发中,tableview列表分区的实现方式。 效果图: 具体实现步骤: - (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell ...
  • 第七章第三十二题(列表分区)(List partition) **7.32(列表分区)编写以下方法,使用第一个元素对列表进行分区,该元素称为中心点。 public static int partition(int[] list) 分区后,列表中的元素被重新安排...
  • LIST分区和RANGE分区非常的相似,主要区别在于LIST是枚举值列表的集合,RANGE是连续的区间值的集合。二者在语法方面非常的相似。同样建议LIST分区列是非null列,否则插入null值如果枚举列表里面不存在null值会插入...
  • 概述当生产环境中表的数据量不断增大,查询数据的速度就会变慢,应用程序的性能就会下降,这时我们就应该考虑对表进行分区。表进行分区后,逻辑上表仍然是一张完整的表,只是将表中的数据在物理上存放到多个表空间...
  • 分区字段筛选查询 SQL > select * 2 from list_partition_test 3 where dt = ' 20180515 ' ; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO DT -- --- ---------- --------- ----- ---------...
  • 在Oracle Database 12c第2版(12.2)中引入了自动列表分区,以解决如何处理列表分区键的新的不同值的问题。下面做个实验来说明:1.创建测试分区表SQL&gt; create table orders ( id number, country_code ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,115
精华内容 1,246
关键字:

列表分区