ITPub博客

首页 > Linux操作系统 > Linux操作系统 > HASH表分区实验

HASH表分区实验

原创 Linux操作系统 作者:dnd_lishangyun 时间:2010-12-08 18:43:26 0 删除 编辑

HASH表分区实验

首先是导入数据,我首先从同学那里找了大约两万条左右的数据来做表分区实验,他的数据是在mysql上的

1.         select UDID, AREA_ID ,URL ,PRICE, STATUE from urlword into outfile /var/tmp/ urlword_text.txt首先选出数据,放入到urlword_text.txt文本文件中

2.         将数据考入到我数据库所在的机器上的/home/oracle/date目录下

3.         在该目录下编辑一个t.ctl的文件

       load data

       infile '/home/oracle/date/urlword_test.txt'

       into table urlword_test

       replace

       fields terminated by x'09'

       (UDID,AREA_ID,URL,PRICE,STATUE)

       ~

4.         以lsy用户登陆到数据库创建表urlword_text

       create table urlword_test

       (

       UDID number(12,0) primary key,

       AREA_ID  number(10,0),

       URL  varchar2(200),

       PRICE number(10,0),

       STATUE  varchar2(10)

       );

5.         执行[oracle@field date]$ sqlldr lsy/lsy /home/oracle/date/t.ctl

6.         检查是否创建成功

       SQL> select count(*) from urlword_test;

 

       COUNT(*)

       ----------

    21062

       在这可以发现一个问题,我的这个表的数据应该是两百多万条,实际只导入了

       万多条,究其原因fields terminated by x'09',表明在ASCII十六进制  09(水平制表符)结束。

 

       另外在/home/oracle/date下(同你创建t.ctl文件),还有日志t.log可以查看

创建表分区

create table urlword_partition_hash(

  UDID number(12,0) ,

       AREA_ID  number(10,0),

       URL  varchar2(200),

       PRICE number(10,0),

       STATUE  varchar2(10)

)partition  by hash(UDID)(

partition urlword_partition_p1 tablespace text01,

partition urlword_partition_p2 tablespace text02,

partition urlword_partition_p3 tablespace text03

);

Table created

插入数据

SQL> insert into urlword_partition_hash(UDID,AREA_ID,URL,PRICE,STATUE )  select * from  urlword_test;

 

53702 rows inserted

查询表的分区信息

SQL> select TABLE_NAME, PARTITIONING_TYPE, PARTITION_COUNT from user_part_tables;

 

TABLE_NAME                     PARTITIONING_TYPE PARTITION_COUNT

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

URLWORD_PARTITION_HASH         HASH    

 

建立全局索引和分区索引

对于分区表来说,每个表分区对应一个分区段。当在分区表上建立索引时,既可以建立全局索引,也可以建立分区索引。如果建立全局索引,则索引数据会存放到一个索引段中;如果建立分区索引,则索引数据会被存放到几个索引分区段中。

建立全局索引

当建立全局索引时,索引数据会存放到一个索引段中。默认情况下在分区表上建立的所以属于全局索引。

create index gbl_urlwork_hash on urlword_partition_hash(UDID) global;

这里有点不明白,我看三思的文档在建立global分区时是这样的:

create index gbl_urlwork_hash on urlword_partition_hash(UDID)

global partition  by hash(UDID);(

partition urlword_partition_p1 tablespace text01,

partition urlword_partition_p2 tablespace text02,

partition urlword_partition_p3 tablespace text03

);

按照我看的书的说法,这样建立全局索引岂不是本地索引是一个性质了?

建立分区索引

先drop掉,再建立

create index lcl_urlwork_hash on urlword_partition_hash(UDID) local;

查看索引信息

和上面查看表分区和相像的两个表user_ind_partitions和user_part_indexes,只不过把table换成来index

 2010-12-8 by 饼干

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

请登录后发表评论 登录
全部评论

注册时间:2010-03-11

  • 博文量
    13
  • 访问量
    21036