暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

oracle 分区策略

原创 水煮鱼 2022-07-08
700

rang 分区 --> 范围分区

list 分区 --> 列表分区

hash分区 --> 哈希分区

组合分区策略

rang-rang

rang-list

rang-hash

list-rang

list-list

list-hash


rang 分区 --> 范围分区 --> order_date 订单日期

连续值存放在各个区

list 分区 --> 列表分区 --> country 国家

离散值存放在各个区

hash分区 --> 哈希分区 --> customer_id 客户编号

打散数据存放在各个区


order数据表 --> 分区表

分区前需要选定分区字段

order_date --> 范围分区

早于2015年 2016年 2017年 2018年

country --> 列表分区

中国 美国 英国

customer_id --> 哈希分区

8个分区


创建分区表注意:

1、需要选择分区字段

2、需要选择分区策略


select * from order(分区表) where customer_id=100

--> customer_id --> hash分区

select * from order(分区表) where customer_id between 1000 and 2000;

--> customer_id --> rang分区

select * from order(分区表) where countroy='中国'

--> countroy --> list分区

select * from order(分区表) where order_date less than 日期;

--> order_date --> rang分区

select * from order(分区表) where order_date =‘日期’

--> order_date --> hash分区

将普通数据表转换成分区表,需要选择分区字段,需要选择分区策略,而这些操作都是业务相关的

只有清楚了业务SQL的执行比例,才能进行分区策略的指定,这种分区策略都是SQL开发指定的



分区表实验中经常使用已有的数据表创建分区表,体会分区表的变化

从Oracle提供的示例数据块中可以拿到很多数据

sample schema --> 示例对象

--> 包含很多用户和用户的数据表

--> scott / sh 用户

--> scott用户及数据表

--> sh用户及数据表(数据表多,数据量大)

新安装数据库

export ORACLE_HOME=/u01/app/oracle/product/11.2/db_2


下述分区表实验,涉及到的数据来自于sh用户下的sales表

sh用户/scott用户均来自于Oracle的示例数据库

SQL> select username,account_status from dba_users where username='HR';

USERNAME ACCOUNT_STATUS

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

HR EXPIRED & LOCKED

alter user sh identified by 123123 account unlock;

grant dba to sh;


实验前查看下磁盘空间大小

[oracle@oracle /]$ df -h /oradataorcl/orcl

Filesystem Size Used Avail Use% Mounted on

/dev/sdc1 5.0G 2.0G 2.8G 41% /oradataorcl


创建表空间

CREATE TABLESPACE TBS1 DATAFILE '/oradataorcl/orcl/TBS1.DBF' SIZE 100M;

CREATE TABLESPACE TBS2 DATAFILE '/oradataorcl/orcl/TBS2.DBF' SIZE 100M;

CREATE TABLESPACE TBS3 DATAFILE '/oradataorcl/orcl/TBS3.DBF' SIZE 100M;

CREATE TABLESPACE TBS4 DATAFILE '/oradataorcl/orcl/TBS4.DBF' SIZE 100M;

CREATE TABLESPACE TBS5 DATAFILE '/oradataorcl/orcl/TBS5.DBF' SIZE 100M;

生产中为提高性能,应该是不同的dg

--> 此处创建多个表空间

--> 分区表对应的段可以属于不同的表空间,提高读写性能

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论