度量快速开发平台-专业、快速的软件定制快开平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 部件 流程 SQL
查看: 1330|回复: 3
打印 上一主题 下一主题

[分享] oracle数据库表分区

[复制链接]

542

主题

5916

帖子

1万

积分

作者

Rank: 7Rank: 7Rank: 7

积分
13589
跳转到指定楼层
楼主
发表于 2020-6-11 17:57:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
oracle数据库表分区
    分区功能的优势:可以使查询及维护操作的性能大大提高;可以极大简化常见的管理任务;是构建千兆字节数据系统或超高可用性系统的关键工具。
    分区功能的基本知识:分区功能能够将表、索引或索引组织表进一步细分为段。这些数据库对象的段叫做分区。每个分区都有自己的名称,还可以选择自己的存储特性。从管理员角度来说:一个分区后的对象具有多个段,这些段可以进行集体管理,也可单独管理,在管理分区后的对象时有相当大的灵活性。从应用程序角度来说:分区后的表与非分区表完全相同,使用sql dml命令访问分区后的表时,无需任何修改。表的分区是通过“分区键”来实现的,分区键指的是一些列,这些列决定了某一行数据所在的分区。
    表空间:是一个或多个数据文件的集合,所有的数据对象都存放在指定的表空间中,主要存放的是表。
    分区表:当表中的数据量不断增大,查询数据的速度就会变慢,这时就应该考虑对表进行分区。表进行分区后,逻辑上表仍然是一张完整的表,只是将表中的数据在物理上存放到多个表空间,查询数据时,不至于每次都扫描整张表。


表分区的类型及操作方法
    范围分区:将数据基于范围映射到每一个分区,这个范围是在创建分区时指定的分区键决定的;分区键通常采用日期。当使用范围分区时,需要参考以下规则:
    1、每个分区都必须有一个VALUES LESS THEN子句,它指定了一个不包括在该分区中的上限值。分区键的任何值等于或者大于这个上限值的记录都会被加入到下一个分区中。
    2、除第一个外的所有分区,都会有一个隐式的下限值,该值为此分区的前一个分区的上限值。
    3、在最高的分区中,MAXVALUE被定义,MAXVALUE代表了一个不确定的值,这个值高于其它分区中的任何分区键的值
    示例:假设有一个CUSTOMER表,表中有数据200000行,我们将此表通过CUSTOMER_ID进行分区,每个分区存储100000行,我们将每个分区保存到单独的表空间中,这样数据文件就可以跨越多个物理磁盘。下面是创建表和分区的代码:
  1. CREATE TABLE CUSTOMER
  2. (
  3.     CUSTOMER_ID NUMBER NOT NULL PRIMARY KEY,
  4.     FIRST_NAME VARCHAR2(30) NOT NULL,
  5.     LAST_NAME   VARCHAR2(30) NOT NULL,
  6.     PHONE        VARCHAR2(15) NOT NULL,
  7.     EMAIL        VARCHAR2(80),
  8.     STATUS       CHAR(1)
  9. )
  10. PARTITION BY RANGE (CUSTOMER_ID)
  11. (
  12.     PARTITION CUS_PART1 VALUES LESS THAN (100000) TABLESPACE CUS_TS01,
  13.     PARTITION CUS_PART2 VALUES LESS THAN (200000) TABLESPACE CUS_TS02
  14. )
复制代码
  1. CREATE TABLE ORDER_ACTIVITIES
  2. (
  3.     ORDER_ID      NUMBER(7) NOT NULL,
  4.     ORDER_DATE    DATE,
  5.     TOTAL_AMOUNT NUMBER,
  6.     CUSTOTMER_ID NUMBER(7),
  7.     PAID           CHAR(1)
  8. )
  9. PARTITION BY RANGE (ORDER_DATE)
  10. (
  11. PARTITION ORD_ACT_PART01 VALUES LESS THAN (TO_DATE('2015-01-01','YYYY-MM-DD')) TABLESPACE ORD_TS01,
  12. PARTITION ORD_ACT_PART02 VALUES LESS THAN (TO_DATE('2015-02-01','YYYY-MM-DD')) TABLESPACE ORD_TS02,
  13. PARTITION ORD_ACT_PART02 VALUES LESS THAN (TO_DATE('2015-03-01','YYYY-MM-DD')) TABLESPACE ORD_TS03
  14. )
复制代码


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

348

主题

3572

帖子

9328

积分

论坛元老

Rank: 8Rank: 8

积分
9328
沙发
发表于 2020-6-13 00:20:30 | 只看该作者
暂时还没用到这么深啊,这个好像适合数据库管理员

点评

早晚会用到的  详情 回复 发表于 2020-6-13 13:52
若現在就覺得失望無力,未來那麽遠妳該怎麽扛...
————————————————————————致自己
回复 支持 反对

使用道具 举报

542

主题

5916

帖子

1万

积分

作者

Rank: 7Rank: 7Rank: 7

积分
13589
板凳
 楼主| 发表于 2020-6-13 13:52:51 | 只看该作者
万望 发表于 2016-1-13 00:20
暂时还没用到这么深啊,这个好像适合数据库管理员

早晚会用到的
回复 支持 反对

使用道具 举报

198

主题

1313

帖子

3784

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3784
地板
发表于 2020-6-14 14:51:19 | 只看该作者
这个不只是数据库管理员用到。开发业务系统的时候,大量数据中也需要考虑
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|重庆度量科技  本站关键词:快速开发平台

GMT+8, 2024-11-24 15:56 , Processed in 0.164675 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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