十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
说的是表或索引的分区么?
我们提供的服务有:网站建设、成都做网站、微信公众号开发、网站优化、网站认证、王益ssl等。为近1000家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的王益网站制作公司
基本的原则是解决磁盘传输率的
一块磁盘的传输率有限制,分区后,可以把数据分散到多个磁盘上去;相当于提升了磁盘的传输率。
随着存储技术的发展,磁盘传输率不再是IO瓶颈的时候,分区的目的和索引有些类似了;1亿条的记录存储在一起,查找其中的一条与1亿条的记录存储在100个空间,从1个空间查找中查找1条(在不考虑索引的情况下)的效率肯定是有区别的。
在oracle中如果涉及到自动的任务一般采用job的方法。
1 自己写一个存储过程。这个存储过程的目的就是给分区表增加一个分区。
2 新建一个Job,设定每个月某个时刻调用你写的存储过程
这样就能达到你每月自动增加分区的需求。
一.表分区策略
1.识别大表
采用ANALYZE TABLE语句进行分析,然后查询数据字典获得相应的数据量。
2.大表如何分区
可根据月份,季度以及年份等进行分区;
3.分区的表空间规划
要对每个表空间的大小进行估计
二.创建表分区
a.创建范围分区的关键字是'RANGE'
1.范围分区
create table ware_retail_part --创建一个描述商品零售的数据表
(
id integer primary key,--销售编号
retail_date date,--销售日期
ware_name varchar2(50)--商品名称
)
partition by range(retail_date)
(
--2011年第一个季度为part_01分区
partition par_01 values less than(to_date('2011-04-01','yyyy-mm-dd')) tablespace TEMP01,
--2011年第二个季度为part_02分区
partition par_02 values less than(to_date('2011-07-01','yyyy-mm-dd')) tablespace TEMP01,
--2011年第三个季度为part_03分区
partition par_03 values less than(to_date('2011-10-01','yyyy-mm-dd')) tablespace TEMP01,
--2011年第四个季度为part_04分区
partition par_04 values less than(to_date('2012-01-01','yyyy-mm-dd')) tablespace TEMP01
);
2.创建散列分区
3.组合分区:
4.interval 分区
三.创建索引分区
索引分区分为本地索引分区和全局索引分区,全局索引不反应基础表的结构,要分区只能进行范围分区。
创建索引分区要参照表分区
四.分区技术简介
优点:
1.减少维护工作量
2.增强数据的可用性
3.均衡I/O,提升性能
4.提高查询速度
5.分区对用户保持透明,用户感觉不到分区的存在。
五,管理表分区
1.添加表分区
ALTER TABLE...ALTER PARATITION
2.合并表分区
3.删除分区
ALTER TABLE...DROP PARTITION
删除分区时,里面的数据也会被删除。
-创建表和分区
create table sales--创建一个销售记录表
(
id number primary key,--记录编号
goodsname varchar2(10),--商品名
saledate date--销售日期
)
partition by range(saledate)--按照日期分区
(
--第一季度数据
partition part_sea1 values less than(to_date('2011-04-01','yyyy-mm-dd')) tablespace tbsp_1,
--第二季度数据
partition part_sea2 values less than(to_date('2011-07-01','yyyy-mm-dd')) tablespace tbsp_2,
--第三季度数据
partition part_sea3 values less than(to_date('2011-10-01','yyyy-mm-dd')) tablespace tbsp_1,
--第四季度数据
partition part_sea4 values less than(to_date('2012-01-01','yyyy-mm-dd')) tablespace tbsp_2
);
--创建局部索引
create index index_3_4 on sales(saledate)
local(
partition part_seal tablespace tbsp_1,
partition part_sea2 tablespace tbsp_2,
partition part_sea3 tablespace tbsp_1,
partition part_sea4 tablespace tbsp_2
);
--并入分区
alter table sales merge partitions part_sea3,part_sea4 into partition part_sea4;
--重建局部索引
alter table sales modify partition part_sea4 rebuild unusable local indexes;
六.管理索引分区
删除索引:DROP PARTITION
重建分区:REBUILT PARTITION
更名索引分区:RENAME PARTITION
分割索引分区:SPLIT PARTITION
增加分区表的分区
ALTER TABLE AA ADD PARTITION SYS_P421 VALUES LESS THAN(TO_DATE('2017-05-21 00:00:00','YYYY-MM-DD HH24:MI:SS')) TABLESPACE USERS;
如果是分区表可以添加分区,如果不是分区表,可以把表转换成分区表,再增加分区。
Oracle的分区可以分为:列表分区、范围分区、散列分区、复合分区。
1、增强可用性:如果表的一个分区由于系统故障而不能使用,表的其余好的分区仍可以使用;
2、减少关闭时间:如果系统故障只影响表的一部分分区,那么只有这部分分区需要修复,可能比整个大表修复花的时间更少;
3、维护轻松:如果需要建表,独自管理每个公区比管理单个大表要轻松得多;
4、均衡I/O:可以把表的不同分区分配到不同的磁盘来平衡I/O改善性能;
5、改善性能:对大表的查询、增加、修改等操作可以分解到表的不同分区来并行执行,可使运行速度更快;
6、分区对用户透明:最终用户感觉不到分区的存在。