介绍分区-概念

以前一直做OLTP系统,接触分区比较少,现在开始仔细研究一下分区表和分区索引

首先为什么要使用分区技术呢?
因为分区技术提高了对大数据量表和索引的管理性、可用性和性能
对于分区表和分区索引,它们的逻辑结构是相同的,有相同的字段和字段类型,但物理结构是不同的,像pctfree、pctused、tablespace可以不同。但hash分区的物理结构除了tablespace外其他都继承table的物理结构

要注意的是分区表和分区索引中所有分区表空间的blocksize必须是相同的,下面使用实验方式来验证

SQL> alter system set db_2k_cache_size = 10m;

System altered.

SQL> create tablespace my2k datafile '/d01/app/oracle/oradata/myora10/my2k01.dbf' size 10m
  2  blocksize 2048;

Tablespace created.

SQL> create table tt ( a int ,b int)
  2  partition by range(a)
  3  (
  4  partition ps1 values less than (10) tablespace jason,
  5  partition ps2 values less than (20) tablespace my2k);
partition ps2 values less than (20) tablespace my2k)
                                               *
ERROR at line 5:
ORA-14519: Conflicting tablespace blocksizes for table : Tablespace MY2K block size 2048 [partition
specification] conflicts with previously specified/implied tablespace JASON block size 8192
[partition specification]

SQL>  alter system set db_2k_cache_size = 0;

很明显,分区表创建在不同block_size的tablespace时报错


我以前认为分区索引必须创建在分区表上,其实不是这样的。全局分区索引不仅可以创建分区表上,而且也可以创建在普通表上

SQL> create table t(a int ,b char);

Table created.

SQL> create index t_i1 on t(a)
  2  global partition by range(a)
  3  (
  4  partition ps1 values less than (10),
  5  partition ps2 values less than (20),
  6  partition ps3 values less than (maxvalue));

Index created.

 

对于range partition和hash partition,可以使用多达16个column key

SQL> create table t(a1 int,a2 int,a3 int,a4 int,a5 int,a6 int,a7 int,a8 int,a9 int,
  2                 a10 int,a11 int,a12 int,a13 int,a14 int,a15 int,a16 int,a17 int)
  3  partition by range(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17)
  4  (
  5  partition ps1 values less than (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17),
  6  partition ps2 values less than (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,18,19));
partition by range(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17)
                                                                          *
ERROR at line 3:
ORA-14014: maximum number of partitioning columns is 16

以上结果显示,partition columns最大数为16

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

转载于:http://blog.itpub.net/8745319/viewspace-588626/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Hive中,分区(Partition)是一种将表数据按照指定的列进行逻辑划分和存储的方式。通过将数据按照某个列的值进行分区,可以提高查询效率和数据管理的灵活性。 具体来说,以下是关于Hive表分区的一些概念和特点: 1. 分区列(Partition Column):分区列是表中用于进行分区的列。通常选择具有高基数(Distinct Value)的列作为分区列,以便更好地划分数据并提高查询性能。 2. 分区目录(Partition Directory):每个分区都会对应一个独立的目录,用于存储该分区的数据文件。分区目录的命名通常基于分区列的值,以便更好地组织和管理数据。 3. 动态分区(Dynamic Partition):Hive支持动态分区,在插入数据时根据数据中的列值动态创建和管理分区。这允许在插入数据时自动创建新的分区目录。 4. 静态分区(Static Partition):与动态分区相反,静态分区需要在创建表时明确地定义所有分区,并提前创建对应的分区目录。 5. 多级分区(Multi-level Partitioning):Hive还支持多级分区,即在一个表中使用多个列进行分区。这样可以更细粒度地划分数据,提供更灵活的查询和管理能力。 通过使用表分区,可以使Hive在处理大规模数据时更高效地执行查询操作。例如,当查询仅涉及特定分区时,Hive可以仅加载相关分区的数据,而不必加载整个表的数据。此外,分区还可以帮助优化数据存储和管理,以及提供更灵活的数据查询和过滤功能。 需要注意的是,在设计和使用表分区时,需要考虑数据分布的均匀性、查询模式、分区列的选择等因素,以确保最佳的性能和使用效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值