设为首页 收藏本站
查看: 1072|回复: 0

[经验分享] oracle中表分区的学习

[复制链接]

尚未签到

发表于 2016-7-17 13:27:05 | 显示全部楼层 |阅读模式
1.表分区的概念
表分区允许用户把一个表中的所有行在物理上分为几个部分,但逻辑上这些所有的行都还在同一张表中,并将这些部分存储在不同的位置,被分区的表称为分区表,分成的每一个部分称为一个分区.

2.表分区的优点
允许用户将一个表分成多个分区
用户可以执行查询,只访问表中的特定分区
将不同的分区存储在不同的磁盘,提高访问性能和安全性
可以独立地备份和恢复每个分区

3.表分区的方法
a)范围分区
根据表的某一列或一组列的值范围,决定将该数据存储在哪个分区上.如可以根据序号分区,根据业务数据的生产日期分区等.
语法:
PARTITION BY  RANGE (column_name)
(
PARTITION part1 VALUE LESS THAN (range1) [TABLESPACE tbs1],
PARTITION part2 VALUE LESS THAN (range2) [TABLESPACE tbs2],
……
PARTITION partN VALUE LESS THAN (MAXVALUE) [TABLESPACE tbsN]
)
Column_name 是以此列名为基础创建范围分区,特定行的该列值称为分区健
Part….partN 是分区的名称
Range1….MAXVALUE 是分区的边界值,range1只表示小于range1之内,不包括range1
Tbs1….tbsN  是分区所在的表空间
b)散列分区
通过在分区键值上执行一个散列函数来决定数据的物理位置,和范围分区不同的是范围分区的连续值通常存储在相同的分区中,而散列分区中,连续的分区键不必存储在相同的分区中.它是将记录平均分布到不同的分区.
语法:
PARTITION BY  HASH (column_name)
(
PARTITION part1 [TABLESPACE tbs1],
PARTITION part2 [TABLESPACE tbs2],
……
PARTITION partN [TABLESPACE tbsN]
)

PARTITION BY  HASH  (column_name)
PARTITIONS number_of_partitions [STORE IN (tablespace_list)]
Column_name 是以此列名为基础创建散列分区
number_of_partitions 是散列分区的数目
tablespace_list 是指定分区的表空间
Tbs1….tbsN  是分区所在的表空间
c)复合分区
复合分区是范围分区和散列分区的结合.在创建复合分区时,先根据范围对数据进行分区,然后再在这些分区内创建散列子分区,它便于管理.
语法:
PARTITION BY RANGE (column_name1)
SUBPARTITION BY  HASH (column_name2)
SUBPARTITIONS number_of_partitions [STORE IN (tablespace_list)]
(
PARTITION part1 VALUE LESS THAN (range1),
PARTITION part2 VALUE LESS THAN (range2),
……
PARTITION partN VALUE LESS THAN (MAXVALUE)
)
column_name1 是以此列为基础创建范围分区
column_name2 是以此列为基础创建散列分区
number_of_partitions 是散列分区的数目
Part….partN 是分区的名称
Range1….MAXVALUE 是分区的边界值,range1只表示小于range1之内,不包括range1
d)列表分区
允许用户明确地控制行到分区的映射,允许按自然方式对无序和不相关的数据集进行分组和组织.
语法:
PARTITION BY  LIST (column_name)
(
PARTITION part1 VALUE (values_list1),
PARTITION part2 VALUE (values_list2),
……
PARTITION partN VALUE (DEFAULT)
)
column_name 是以此列为基础创建列表分区
Part….partN 是分区的名称
Values_list 是对应分区的分区键值的列表
DEFAULT 关键字允许存储前面的分区不能存储的记录.

4.表分区的操作
a)添加分区:在最后一个分区后添加新的分区
语法:
ALTER TABLE 表名 ADD PARTITION 新分区名 VALUES LESS THAN (分区范围);
b)删除分区:删除一个指定的分区,分区里的数据也随之删除
语法:
ALTER TABLE 分区所在的表名 DROP PARTITION 被删除的分区名;
c)截断分区:删除指定分区里的所有记录
语法:
ALTER TABLE分区所在的表名TRUNCATE PARTITION 被截断的分区名;
d)合并分区:将范围分区和复合分区的两个相邻的分区连接起来
语法:
ALTER TABLE 表名 MERGE PARTITIONS 被合并的分区1, 被合并的分区2 …INTO PARTITION 合并后的分区名;
e)拆分分区:将一个大的分区中的记录分到两个分区中
语法:
ALTER TABLE 表名 SPLIT PARTITION 被拆分的分区名 AT (拆分后分区范围) INTO (拆分后的分区1(存放原来分区范围内记录), 拆分后的分区2(存入指定范围的记录));

5.在分区表中查看记录
语法:
Select * from 表名 partition分区名

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-245402-1-1.html 上篇帖子: oracle 解锁 unlock 下篇帖子: oracle中视图的学习
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表