oracle10g系统管理之应对大表(二)

本文介绍了Oracle数据库中的四种主要分区类型:散列分区、列表分区、范围/散列组合分区及范围/列表组合分区。详细解释了如何创建这些分区类型的表,并讨论了在这些表上进行数据插入和查询的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 0cm;"><span style="font-size: 12pt;" lang="EN-US"><span style=""><span style="font-family: Times New Roman;">1.<span style='font: 7pt "Times New Roman";'> </span></span></span></span><span style="">散列分区</span><span style="font-size: 12pt;" lang="EN-US"></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 12pt;" lang="EN-US"><span style=""><span style="font-family: Times New Roman;"> </span></span></span><span style="">散列分区是指按照</span><span style="font-size: 12pt;" lang="EN-US"><span style="font-family: Times New Roman;">Oracle</span></span><span style="">提供的散列函数计算列值数据,并最终按照函数结果分区大表数据。如果无法使用范围分区部署大表数据,那么为了将数据均匀分布到不同分区并提高性能,可以使用散列分区。</span><span style="font-size: 12pt;" lang="EN-US"></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 0cm;"><span style="font-size: 12pt;" lang="EN-US"><span style=""><span style="font-family: Times New Roman;">2.<span style='font: 7pt "Times New Roman";'> </span></span></span></span><span style="">建立散列分区表</span><span style="font-size: 12pt;" lang="EN-US"></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt 21pt;"><span style="font-size: 12pt;" lang="EN-US"><span style="font-family: Times New Roman;">CREATE TABLE product(</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt 21pt;"><span style="font-size: 12pt;" lang="EN-US"><span style="font-family: Times New Roman;"><span style=""> </span>product_id<span style=""> </span>NUMBER(6),description<span style=""> </span>VARCHAR2(30)</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt 21pt;"><span style="font-size: 12pt;" lang="EN-US"><span style="font-family: Times New Roman;">)PARTITION BY HASH(product_id)(</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt 21pt;"><span style="font-size: 12pt;" lang="EN-US"><span style="font-family: Times New Roman;"><span style=""> </span>PARTITION p1<span style=""> </span>TABLESPACE user01,</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt 21pt; text-indent: 21pt;"><span style="font-size: 12pt;" lang="EN-US"><span style="font-family: Times New Roman;">PARTITION p2<span style=""> </span>TABLESPACE user02,</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt 21pt; text-indent: 21pt;"><span style="font-size: 12pt;" lang="EN-US"><span style="font-family: Times New Roman;">PARTITION p3<span style=""> </span>TABLESPACE user03,</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt 21pt; text-indent: 21pt;"><span style="font-size: 12pt;" lang="EN-US"><span style="font-family: Times New Roman;">PARTITION p4 TABLESPACE user04,</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt 21pt;"><span style="font-size: 12pt;" lang="EN-US"><span style="font-family: Times New Roman;">)</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 0cm;"><span style="font-size: 12pt;" lang="EN-US"><span style=""><span style="font-family: Times New Roman;">3.<span style='font: 7pt "Times New Roman";'> </span></span></span></span><span style="">在散列分区表上插入数据</span><span style="font-size: 12pt;" lang="EN-US"></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><span style="">使用</span><span style="font-size: 12pt;" lang="EN-US"><span style="font-family: Times New Roman;">INSERT</span></span><span style="">语句为散列分区表插入数据时,必须为分区列提供数据。其余与为普通表插入数据没有任何区别。</span><span style="font-size: 12pt;" lang="EN-US"></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 0cm;"><span style="font-size: 12pt;" lang="EN-US"><span style=""><span style="font-family: Times New Roman;">4.<span style='font: 7pt "Times New Roman";'> </span></span></span></span><span style="">查询分区表所有数据</span><span style="font-size: 12pt;" lang="EN-US"></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><span style="">建立了散列分区表</span><span style="font-size: 12pt;" lang="EN-US"><span style="font-family: Times New Roman;">PRODUCT</span></span><span style="">以后,查询该分区表的所有数据与查询普通表没有任何区别,</span><span style="font-size: 12pt;" lang="EN-US"><span style="font-family: Times New Roman;">Oracle</span></span><span style="">会在每个表分区上执行全表扫描。</span><span style="font-size: 12pt;" lang="EN-US"></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 0cm;"><span style="font-size: 12pt;" lang="EN-US"><span style=""><span style="font-family: Times New Roman;">5.<span style='font: 7pt "Times New Roman";'> </span></span></span></span><span style="">列表分区</span><span style="font-size: 12pt;" lang="EN-US"></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><span style="">列表分区用于将离散数据有效地部署到不同分区中。范围分区只能根据列值范围确定数据分布。而散列分区只能根据散列函数结果均匀分布列数据。如果要将离散数据分不到不同分区,必须采用列表分区方法。</span><span style="font-size: 12pt;" lang="EN-US"></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 0cm;"><span style="font-size: 12pt;" lang="EN-US"><span style=""><span style="font-family: Times New Roman;">6.<span style='font: 7pt "Times New Roman";'> </span></span></span></span><span style="">建立列表分区</span><span style="font-size: 12pt;" lang="EN-US"></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt 21pt;"><span style="font-size: 12pt;" lang="EN-US"><span style="font-family: Times New Roman;">CREATE table sales_by_region(</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt 21pt;"><span style="font-size: 12pt;" lang="EN-US"><span style="font-family: Times New Roman;">deptno number, dname verchar2(20),</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt 21pt;"><span style="font-size: 12pt;" lang="EN-US"><span style="font-family: Times New Roman;">quarterly_sales number(10,2),city varchar2(10)</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt 21pt;"><span style="font-size: 12pt;" lang="EN-US"><span style="font-family: Times New Roman;">)PARTITION BY LIST(city)(</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt 21pt;"><span style="font-size: 12pt;" lang="EN-US"><span style="font-family: Times New Roman;"><span style=""> </span>PARTITION p1 VALUES (‘</span></span><span style="">北京</span><span style="font-size: 12pt;" lang="EN-US"><span style="font-family: Times New Roman;">’,‘</span></span><span style="">天津</span><span style="font-size: 12pt;" lang="EN-US"><span style="font-family: Times New Roman;">’) TABLESAPCE user01,</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt 21pt; text-indent: 21pt;"><span style="font-size: 12pt;" lang="EN-US"><span style="font-family: Times New Roman;">PARTITION p2 VALUES (‘</span></span><span style="">重庆</span><span style="font-size: 12pt;" lang="EN-US"><span style="font-family: Times New Roman;">’,‘</span></span><span style="">成都</span><span style="font-size: 12pt;" lang="EN-US"><span style="font-family: Times New Roman;">’) TABLESAPCE user02,</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt 21pt; text-indent: 21pt;"><span style="font-size: 12pt;" lang="EN-US"><span style="font-family: Times New Roman;">PARTITION p3 VALUES (‘</span></span><span style="">上海</span><span style="font-size: 12pt;" lang="EN-US"><span style="font-family: Times New Roman;">’,‘</span></span><span style="">杭州</span><span style="font-size: 12pt;" lang="EN-US"><span style="font-family: Times New Roman;">’) TABLESAPCE user03,</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt 21pt; text-indent: 21pt;"><span style="font-size: 12pt;" lang="EN-US"><span style="font-family: Times New Roman;">PARTITION p4 VALUES (‘</span></span><span style="">广州</span><span style="font-size: 12pt;" lang="EN-US"><span style="font-family: Times New Roman;">’,‘</span></span><span style="">深圳</span><span style="font-size: 12pt;" lang="EN-US"><span style="font-family: Times New Roman;">’) TABLESAPCE user04,</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt 21pt;"><span style="font-size: 12pt;" lang="EN-US"><span style="font-family: Times New Roman;">);</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 0cm;"><span style="font-size: 12pt;" lang="EN-US"><span style=""><span style="font-family: Times New Roman;">7.<span style='font: 7pt "Times New Roman";'> </span></span></span></span><span style="">建立了列表分区表以后,查询该分区表的所有数据与查询普通表没有任何区别,</span><span style="font-size: 12pt;" lang="EN-US"><span style="font-family: Times New Roman;">Oracle</span></span><span style="">会在每个表分区上执行全表扫描。</span><span style="font-size: 12pt;" lang="EN-US"></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 0cm;"><span style="font-size: 12pt;" lang="EN-US"><span style=""><span style="font-family: Times New Roman;">8.<span style='font: 7pt "Times New Roman";'> </span></span></span></span><span style="">范围</span><span style="font-size: 12pt;" lang="EN-US"><span style="font-family: Times New Roman;">/</span></span><span style="">散列组合分区是范围分区和散列分区的组合,它首先按照列值范围进行逻辑的范围分区,然后在每个范围分区的基础上在按照散列函数进行散列分区。</span><span style="font-size: 12pt;" lang="EN-US"></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="">范围</span><span style="font-size: 12pt;" lang="EN-US"><span style="font-family: Times New Roman;">/</span></span><span style="">列表组合分区是范围分区和列表分区的组合。道理与</span><span style="font-size: 12pt;" lang="EN-US"><span style="font-family: Times New Roman;">7</span></span><span style="">类似。</span><span style="font-size: 12pt;" lang="EN-US"></span></p>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值