第一段:什么场景、时间适合用分区表?
就我实际工作中了解到的几种情况:
北京统计宏观数据库,在村一级采用一维表存储,随着指标增多,记录可达千万至亿条级.
第二段:分区表有什么优势?
①.、增强可用性:如果表的某个分区出现故障,表在其他分区的数据仍然可用;
一.表分区策略
①识别大表
采用ANALYZE TABLE语句进行分析,然后查询数据字典获得相应的数据量.
可根据月份,季度以及年份等进行分区;
要对每个表空间的大小进行估计
二.创建表分区
a.创建范围分区的关键字是'RANGE'
①范围分区
create table ware_retail_part --创建一个描述商品零售的数据表
(
id integer primary key,--销售编号
retail_date date,--销售日期
)
partition by range(retail_date)
);
三.创建索引分区
索引分区分为本地索引分区和全局索引分区,全局索引不反应基础表的结构,要分区只能进行范围分区.
创建索引分区要参照表分区
四.分区技术简介
优点:
①减少维护工作量
五,管理表分区
①添加表分区
ALTER TABLE...ALTER PARATITION
ALTER TABLE...DROP PARTITION
删除分区时,里面的数据也会被删除.
-创建表和分区
create table sales--创建一个销售记录表
id number primary key,--记录编号
saledate date--销售日期
partition by range(saledate)--按照日期分区
--第一季度数据
--第二季度数据
--第三季度数据
--第四季度数据
--创建局部索引
local(
partition part_seal tablespace tbsp_1,
--并入分区
--重建局部索引
六.管理索引分区
删除索引:DROP PARTITION
重建分区:REBUILT PARTITION
更名索引分区:RENAME PARTITION
分割索引分区:SPLIT PARTITION
①.、一般分区表都会很大,所以可以先创建表空间,为了让分区表存放到单独的表空间,否则默认会存放到USERS表空间
ID NUMBER(10) NOT NULL,
CREATE_TIME DATE,
TABLESPACE TS1
PARTITION BY LIST (ID)
(PARTITION PT_1001 VALUES (1001) TABLESPACE TS1);
select TABLE_NAME,PARTITION_COUNT,DEF_TABLESPACE_NAME from USER_PART_TABLES order by DEF_TABLESPACE_NAME;
根据数据表字段值的范围进行分区.
最近有业务场景需要用多个字段做分区表,数据量比较大,保存时间也较长,经过学习与实践,算是基本完成,以下内容为实践样例:
---建表语句
create table t_table
appdate date,
text varchar(10)
partition by range(appdate)--根据字段 appdate 创建主分区
interval(numtoyminterval(1,'MONTH')) --主分区按 月 自动创建分区
subpartition by list(areacode) --再按 地区 创建子分区
subpartition template( --指定明确的子分区信息
subpartition sub1 values('101'),
---模拟写入测试数据
--查询数据
select * from t_table;
--查询主分区数据
select *from t_table partition (mainpartition1);
--查询子分区数据
select *from t_table subpartition (mainpartition1_sub1);
--查看自动创建的主分区
select * from user_tab_partitions where table_name='T_TABLE'
一般语法:
create?table?t_test?(
add_date_time?DATE,
constraintPK_T_TEST?primary?key?(pk_id)
PARTITION?BY?RANGE?(add_date_time)
以上就是土嘎嘎小编为大家整理的oracle表分区怎么建相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!