oracle表分区

采用“分而治之”的方法,可以将一个表或索引物理地分解为多个更小、更易管理的部分,适用于非常大的表和索引。
分区的好处:
1、提高数据的可用性;可用性的提高来源于每个分区的独立性,表中的一个分区的可用性不会影响表本身的可用性。如果表是分区的,那么查询优化器就会意识到这点,并且在执行计划中去除不需要的分区。
分区从两个方面提高了可用性:
① 优化器可以跳过对某些分区的访问;
② 出现错误时的停机时间会减少,因为恢复所需的工作量会大幅减少。
2、将大段数分解为小段,从而减轻管理的负担;
与在一个大对象上执行操作相比,在小对象上执行同样的操作更为容易、速度更快,而且占用的资源更少。
3、改善查询性能:可以跳过某些分区的数据,从而将需要访问、处理的数据精简到一个很小的范围;
这些SQL分为两类:一类是修改信息的语句,另一类是只读取信息的语句;
处理查询时不考虑某些分区内的数据

分区机制
1、区间分区:指定某个区间的数据应该放在一起
2、散列分区:数据库会在某一列上应用一个散列函数,每行数据都会按照其散列值放到相应的分区中
3、列表分区:指定一个离散值集,来确定应当存储在一起的数据。

当对分区字段进行update操作时,如果数据修改之后,它仍属于原来的分区,那没问题;当数据修改之后,更新后的分区键值属于另外一个分区,这样的数据就需要跨分区移动。只有当表启用了行移动时,这样的数据修改才能成功,否则oracle会报错。但这时行的rowid会由于更新而改变。

Oracle表分区数据库中的一种技术,用于将一张大表的数据按一定的规则拆分成多个较小的物理存储单元,这些物理存储单元被称为分区(Partition)。尽管数据被分布到不同的分区中,但从逻辑上,分区表仍然作为一个整体表进行访问[^2]。 Oracle表分区功能通过改善可管理性、性能和可用性,为各式应用程序带来了极大的好处。通常,分区可以使某些查询以及维护操作的性能大大提高。此外,分区还可以极大简化常见的管理任务,是构建千兆字节数据系统或超高可用性系统的关键工具[^1]。 分区表是将大表的数据分成称为分区的许多小的子集,分区表的种类划分主要有range、list和hash分区,划分依据主要是根据其表内部属性。同时,分区表可以创建其独特的分区索引。倘若硬盘丢失了分区表,数据就无法按顺序读取和写入,导致无法操作[^4]。 操作的具体语法与DDL语言类似,都以`alter table`开始,以下是一些常见操作: ```sql -- 添加分区 alter table 表 add partition 分区名 values less than(分界值); -- 添加的分区界限须高于最后一个分区界限 -- 删除分区 alter table 表 drop partition 分区名; -- 如果删除的分区是表中的唯一分区,那么分区不能删除,要想删除,必须先删除表 -- 截断分区 alter table 表名 truncate partition 分区名; -- 截断某个分区是指删除某个分区中的数据,并不会删除分区,也不会删除其它分区中的数据。 -- 但当表中即使只有一个分区时,也可以截断该分区 -- 合并分区 alter table 表名 merge partition 分区名1, 分区名2 into partition 分区名2; -- 合并相邻分区成一个,结果分区将采用较高的分区界限,且不能合并到界限低的分区 -- 拆分分区 alter table 表名 split partition 分区名 at(值) into (partition 分区1, partition 分区2); -- 将一个分区拆为两个,拆分后原分区不再存在,不能对hash类型的分区进行拆分 -- 重命名表分区 alter table 表名 rename partition 原分区名 to 新分区名; -- 查询分区 select * from 表名; -- 全表查询(包括所有分区) select * from 表名 partition(分区名1); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值