- 浏览: 425912 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
Glogo:
楼主您好,我在试验您的代码的时候发现新开的三个子线程并没有一直 ...
java 高并发 ReentrantLock -- 可重入的锁 -
univasity:
最近发觉也被限速了,投诉一下就好一会~~ 看来明天又要和电信M ...
ADSL上网速度慢 都是帐号限速惹的祸 -
liuyuanhui0301:
java 高并发 ReentrantLock -- 可重入的锁 -
dang_java:
呵.很好的说明文档.
JXTA技术与应用发展 -
helloqidi:
谢谢,学习了
SQL中exists和in的区别
分区概述
为了简化数据库大表的管理,例如在数据仓库中一般都是TB级的数量级.ORACLE8以后推出了分区选项.分区将表分离在若于不同的表空间上,用分而治之的方法来支撑元限膨胀的大表,组大表在物理一级的可管理性.将大表分割成较小的分区可以改善表的维护、备份、恢复、事务及查询性能。
分区的优点:
1、 增强可用性:如果表的一个分区由于系统故障而不能使用,表的其余好的分区仍可以使用;
2、 减少关闭时间:如果系统故障只影响表的一部份分区,那么只有这部份分区需要修复,矿能比整个大表修复花的时间更少;
3、 维护轻松:如果需要得建表,独产管理每个公区比管理单个大表要轻松得多;
4、 均衡I/O:可以把表的不同分区分配到不同的磁盘来平衡I/O改善性能;
5、 改善性能:对大表的查询、增加、修改等操作可以分解到表的不同分区来并行执行,可使运行速度更快,在数据仓库的TP查询特别有用。
6、 分区对用户透明,最终用户感觉不到分区的存在。
create tablespace dw1
datafile 'D:\oracle\oradata\ora9\dw11.ora' size 50M
create tablespace dw2
datafile 'D:\oracle\oradata\ora9\dw21.ora' size 50M
一、按范围分区:固名思义就是按一定range来分区,看下面的例子:
SQL> set linesize 1000
SQL> create table niegc_part
2 (
3 part_id integer primary key,
4 part_date date,
5 part_dec varchar2(100)
6 )
7 partition by range(part_date)
8 (
9 partition part_01 values less than(to_date('2006-01-01','yyyy-mm-dd')) tablespace dw1,
10 partition part_02 values less than(to_date('2007-01-01','yyyy-mm-dd')) tablespace dw2,
11 partition part_03 values less than(maxvalue) tablespace dw1
12 );
表已创建。
SQL>
SQL> insert into niegc_part values(1,to_date('2005-12-30','yyyy-mm-dd'),'less 20
06-01-01');
已创建 1 行。
SQL> commit;
提交完成。
SQL> insert into niegc_part values(2,to_date('2006-01-01','yyyy-mm-dd'),'equal 2
007-01-01');
已创建 1 行。
SQL> commit;
提交完成。
SQL> insert into niegc_part values(3,sysdate,'sysdate');
已创建 1 行。
SQL> commit;
提交完成。
SQL>
SQL>
SQL> select * from niegc_part partition(part_01);
PART_ID PART_DATE PART_DEC
---------- ---------- ----------------------------------------------------------
------------------------------------------
1 30-12月-05 less 2006-01-01
SQL>
相信只要对oracle 有点熟,都能知道上面的range分区的意思了.
两个字段以上的range分区大同小异,请看下面的例子:
create table niegc_part
(
part_id integer primary key,
part_date date,
part_dec varchar2(100)
)
partition by range(part_id,part_date)
(
partition part_01 values less than(1,to_date('2006-01-01','yyyy-mm-dd')) tablespace dw,
partition part_02 values less than(10,to_date('2007-01-01','yyyy-mm-dd')) tablespace dw,
partition part_03 values less than(maxvalue,maxvalue) tablespace dw
);
二、Hash分区(散列分区)。 散列分区通过指定分区编号来均匀分布数据的一种分区类型,因为通过在I/O设备上进行散列分区,使行这些分区大小一致。如将part_id的数据根据自身的情况散列地存放在指定的三个表空间中:
create table niegc_part
(
part_id integer primary key,
part_date date,
part_dec varchar2(100)
)
partition by hash(part_id)
(
partition part_01 tablespace dw1,
partition part_02 tablespace dw2
);
系统将按part_id将记录散列地插入三个分区中,这里也就是二个不同的表空间中。
三、复合分区。根据范围分区后,每个分区内的数据再散列地分布在几个表空间中,这样我们就要使用复合分区。复合分区是先使用范围分区,然后在每个分区同再使用散列分区的一种分区方法,如将part_date的记录按时间分区,然后每个分区中的数据分三个子分区,将数据散列地存储在三个指定的表空间中:
create table niegc_part
(
part_id integer primary key,
part_date date,
part_dec varchar2(100)
)
partition by range(part_date) subpartition by hash(part_id)
subpartitions 2 store in(dw1,dw2)
(
partition part_01 values less than(to_date('2006-01-01','yyyy-mm-dd')) tablespace dw1,
partition part_02 values less than(to_date('2007-01-01','yyyy-mm-dd')) tablespace dw2,
partition part_03 values less than(maxvalue) tablespace dw1
);
先根据part_date进行范围分区,然后根据交易的ID将记录散列地存储在二个表空间中。
四、索引分区:
注意: 对某个字段已做了分区了,是不允许再建立索引分区的。这一点要非常注意。
全局索引建立时global子句允许指定索引的范围值,这个范围值为索引字段的范围值:
create index idx_part_id on niegc_part(part_dec)
global partition by range(part_dec)
(
partition idx_1 values less than('1000') tablespace dw,
partition idx_2 values less than(maxvalue) tablespace dw
)
局部索引分区的建立:(注意:表必须存在分区,此分区的个数必须和分区表的分区个数一样,不然是建立不起来的)
create index idx_part_id on niegc_part(part_dec)
local
(
partition idx_1 tablespace dw1,
partition idx_2 tablespace dw2</
发表评论
-
mysql查询优化之索引类型、最左前缀
2012-03-22 00:42 1088一、什么是索引? 索引用来快速地寻找那些具有特定值的记录, ... -
Checkpoint not Complete
2009-04-30 15:36 1502alter_ORCL.log如下: Wed Jun 25 0 ... -
How to resize redo log file?
2009-04-30 15:33 1067I wrote a script named 'checkRe ... -
Oracle: REDO&UNDO
2009-04-25 13:41 1039在这里会介绍UNDO,REDO ... -
DBCP,数据库断开自动连接的问题及解决方法
2009-04-20 13:34 2720以前公司开发的一个项 ... -
Oracle : How to drop database
2009-04-06 01:05 1037字号: 大大 中中 小小 D:\>set or ... -
执行计划和执行顺序
2009-04-02 17:53 940如果要了解执行计划和执行顺序,必须理解执行计划的 ... -
Oracle timestamp
2009-02-01 10:47 3082select systimestamp from dual s ... -
Oracle日期函数与应用
2009-01-19 16:26 1165相信很多人都有过统计某些数据的经历,比如,要统计财务的情况 ... -
start with ... connect by用法简介
2008-12-22 17:17 1282sql有向图问题期待新解决方案 /************* ... -
START WITH and CONNECT BY in Oracle SQL
2008-12-22 16:55 1300A simple example In the follow ... -
利用伪列算出每个月那几天是星期天(ORACLE)
2008-12-22 16:05 15591.首先我们要用到LEVEL .... CONNE ... -
Oracle层次查询和分析应用在号段选取
2008-12-22 15:33 11221. 问题的提出 在实际工作中,我们常常会碰到号段选取的 ... -
有关Oracle表分区进行(DML)维护后对索引的影响的分析
2008-12-15 14:30 2214今天对数字电视系统的 ... -
为什么有时Oracle数据库不用索引来查找数据?
2008-12-15 14:24 1255当你运用SQL语言,向数 ... -
怎样成长为一个真正的Oracle DBA
2008-12-15 12:59 932本文网址:http://bbs.bitscn.com/1674 ... -
MYSQL编码问题
2008-12-04 21:56 671一.原理篇Mysql的字符 ... -
ORACEL SQL 性能优化
2008-10-16 15:18 12441. 选用适合的ORACLE优化器 ORACLE的优化器共有 ... -
mysql 的mysql数据库
2008-09-20 17:06 1031授权表的用途: ... -
Hibernate注释简介
2008-09-19 13:54 1122在过去几年里,Hibernate不断发展,几乎成为Java数据 ...
相关推荐
Oracle表分区和索引分区是提高大型表管理效率和查询性能的有效手段。通过合理设计分区策略,不仅可以显著提升系统的可用性和响应速度,还能简化维护工作,降低恢复时间和成本。对于处理大量数据的应用场景来说,掌握...
虽然存储介质和数据处理技术的发展也很快,但是仍然不能满足用户的需求,为了使用户的大量的数据在读写操作和查询中速度更快,Oracle提供了对表和索引进行分区的技术,以改善大型应用系统的性能。
Oracle 分区表分区索引是 Oracle 数据库中的一种重要机制,它可以提高数据的存储和查询效率。下面将详细介绍 Oracle 分区表分区索引的类型、分类、创建方法和维护方式。 一、分区表和分区索引的概念 分区表是指将...
Oracle分区技术提供了强大的工具来管理和优化大型表和索引。通过合理选择分区策略和正确使用分区管理功能,可以显著提高数据库性能并降低管理复杂性。在实际应用中,应根据具体的业务需求和技术环境灵活运用这些分区...
"Oracle分区表和分区索引在VLDB中的研究" 本文研究了Oracle分区表和分区索引在VLDB(Very Large Databases)中的应用。分区表和分区索引是数据库管理中的关键技术之一,是VLDB中一个重要的性能提升机制。通过分析一...
Oracle 分区表及分区索引 Oracle 分区表是指将一个大表分割成多个小表,每个小表称为一个分区,分区表的优点是可以提高查询性能、改善管理型、增强容错性等。 分区表的分类: 1. 范围分区(Range Partitioning) ...
针对分区表,Oracle 提供了分区索引,它允许索引与分区策略相结合。例如,可以创建局部索引,每个分区都有自己的索引,或者创建全局索引,覆盖所有分区。局部索引通常在查询性能上有优势,而全局索引则适用于跨分区...
Oracle 索引与分区索引是 Oracle 数据库中两个重要的概念,它们都是为了提高查询性能和数据存储效率而设计的。在本文中,我们将详细介绍 Oracle 索引与分区索引的概念、特点、分类、创建方法、维护操作等方面的知识...
#### 一、Oracle分区索引概念及分类 在Oracle数据库中,分区索引是针对分区表的一种特殊索引类型,它可以显著提高对于大规模数据集的查询性能。根据索引是否与表的分区策略相匹配,分区索引可以分为两大类:本地...
以下是对Oracle分区表和分区索引的深入解析: 1. **何时使用分区**: - 当表的数据量超过2GB时,分区有助于避免32位操作系统下的文件大小限制,同时减少大规模数据的备份时间。 - 对于包含历史数据的表,如按月份...
以上介绍了Oracle表分区的基本概念、优点、限制以及两种常见的分区类型——范围分区和列表分区,并给出了具体的创建示例。通过合理地使用表分区技术,可以有效地提高数据库系统的性能和可管理性。
Oracle数据库中的表分区是数据库管理的一种高级技术,它允许我们将大型表分解成更小、更易管理和查询的部分,从而提高数据存储和检索的效率。在本文中,我们将深入探讨Oracle表分区的各个方面,包括其重要性、类型、...
通过上述步骤,我们可以看到分区表会自动为新数据所在月份创建一个新的分区`SYS_P183`,并且会自动生成相应的分区索引。 #### 八、总结 本文详细介绍了如何在Oracle数据库中实现表的自动按月分区及本地索引的创建...
Oracle 的分区技术是一种用于管理和优化超大型表和索引的有效手段。通过将一个大型的表或者索引分割成多个较小且可管理的部分,分区技术能够显著提升数据库的性能、可用性和可维护性。 ##### 分区的作用: 1. **...
### Oracle表分区详解 #### 一、表空间与分区表概念 **表空间**:在Oracle数据库中,表空间是一个或多个数据文件的集合。所有数据对象(如表、索引等)都存放在特定的表空间中。由于主要存放的是表,因此被称为...
总结来说,Oracle分区是一种强大的数据库管理工具,特别适合处理大数据量和历史数据存储的情况。通过合理选择分区策略,可以极大地提升数据处理的速度和系统的整体性能。然而,设计和实施分区策略需要深思熟虑,以...
Oracle分区表和索引是一种高效的数据管理策略,尤其适用于处理大数据量和包含历史数据的表。当表的大小超过2GB,特别是在32位操作系统上,分区能够有效地提高查询性能,减少备份时间,并且便于管理和维护。Oracle...