数据库概论-第八章大数据存储_第1页
数据库概论-第八章大数据存储_第2页
数据库概论-第八章大数据存储_第3页
数据库概论-第八章大数据存储_第4页
数据库概论-第八章大数据存储_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据库概论第9章大数据存储2表分区分区视图物化视图按列存储数据压缩数据分区从GB到TB到PB电信公司的通话记录、连锁超市的销售记录使用分区表来提高应用系统的性能分区将数据分散到各自的物理单元中去,以便能分别独立处理,灵活地访问数据,提高效率实际需要:分析往往对某种相关性的数据集合进行某一时段的数据某一地区的数据某特定业务领域的数据某一时段某特定业务领域的数据日期往往是自然而均匀的分割数据分区

健康保险 人寿保险 意外伤亡保险1988 分片1 分片2 分片31989 分片4 分片5 分片61990 分片7 分片8 分片9分区表使用分区的优点增强可用性:如果表的某个分区出现故障,表在其他分区的数据仍然可用维护方便:如果表的某个分区出现故障,需要修复数据,只修复该分区即可均衡I/O:可以把不同的分区映射到磁盘以平衡I/O,改善整个系统性能改善查询性能:对分区对象的查询可以仅搜索自己关心的分区,提高检索速度分区表:OracleOracle提供三种分区方法范围分区根据某个属性值的范围,决定将该数据存储在哪个分区上散列分区通过分区编号将数据均匀散列到I/O设备上,使得这些分区大小一致复合分区先使用范围分区,然后在每个分区内再使用散列分区分区表:OracleCREATETABLEsales(invoice_noNUMBER,...sale_dateDATENOTNULL)PARTITIONBY

RANGE(sale_date)(PARTITIONsales2006_q1

VALUESLESSTHAN(TO_DATE(‘2006-04-01’,’YYYY-MM-DD’) TABLESPACEts_sale2006q1,……PARTITIONsales2006_q4

VALUESLESSTHAN(TO_DATE(‘2007-01-01’,’YYYY-MM-DD’) TABLESPACEts_sale2006q4)范围分区表分区表:Oraclecreatetableemp( empnonumber(4), enamevarchar2(30), locationvarchar2(30))partitionbylist(location)(

partitionp1values('北京'),

partitionp2values('上海','天津','重庆'),

partitionp3values('广东','福建')

partitionp0values(default))列表分区表分区表:Oraclecreatetableemp( empnonumber(4), enamevarchar2(30), salnumber)partitionbyhash(empno)partitions8storein(emp1,emp2,emp3,emp4,emp5,emp6,emp7,emp8)散列分区表分区表:Oraclecreatetableemp( empnonumber(4), enamevarchar2(30), hiredatedate)partitionbyrange(hiredate)subpartitionbyhash(empno)subpartitions2(

partitione1valueslessthan(to_date('20020501','YYYYMMDD')),

partitione2valueslessthan(to_date('20021001','YYYYMMDD')),

partitione3valueslessthan(maxvalue))分区表:SQLServer创建分区函数createpartitionfunction

customer_partfunc(int)

asrangeright

forvalues(250000,

500000,

750000)

创建分区架构createpartitionscheme

customer_partscheme

aspartitioncustomer_partfunc

to

(fg1,

fg2,

fg3,

fg4)对表进行分区createtable

customers

(FirstName

nvarchar(40),

LastName

nvarchar(40),

CustomerNumber

int)

on

customer_partscheme

(CustomerNumber)

分区视图:SQLServer

分区视图将大型表根据其中某列的数据值范围进行分区,拆分成较小的成员表每个成员表的数据范围都在为分区列指定的CHECK

约束中定义使用UNIONALL定义视图,将选定的成员表组合成单个结果集。引用该视图的SELECT语句为分区列指定搜索条件后,查询优化器将使用CHECK约束确定哪个成员表包含这些行分区视图:SQLServer

CREATETABLEMay1998Sales(OrderIDINTPRIMARYKEY,CustomerIDINTNOTNULL,OrderDateDATETIMENULL

CHECK(DATEPART(yy,OrderDate)=1998),OrderMonthINT

CHECK(OrderMonth=5),DeliveryDateDATETIMENULL,CHECK(DATEPART(mm,OrderDate)=OrderMonth))分区视图:SQLServer

CREATEVIEWYear1998SalesASSELECT*FROMJan1998SalesUNIONALLSELECT*FROMFeb1998SalesUNIONALL……UNIONALLSELECT*FROMNov1998SalesUNIONALLSELECT*FROMDec1998SalesSELECT*FROMYear1998SalesWHEREOrderMonthIN(5,6)ANDCustomerID=64892物化视图视图的计算结果被实际存储起来物化视图可以看成是数据库的cache查询物化视图比重新计算视图要快许多需要进行物化视图与基本表之间的一致性维护应用场合任何需要快速访问派生数据、或视图的重新计算非常昂贵、或查询需要耗费非常高的CPU和磁盘吞吐量的应用场合,都可以使用物化视图来提高效率物化视图应用示例一个零售数据库,存储terabytes数量级的几个月的销售数据。而诸如某个商店的某件商品的销售总量这样的查询,每天可能要被零售商、仓库管理员、市场部人员执行若干次。这时可以将商品的销售总量查询结果定义为物化视图一个处理定单与产品的事务系统,大量的查询需要连接定单与产品表,可以将定单与产品表的连接结果定义为物化视图物化视图物化视图:SQLServercreateviewiv_avg_grade(s#,avg_grade,cnts)withschemabindingasselect s#,avg(grade),number=count_big(*)from dbo.SCgroupbys#createuniqueclusteredindexidx_avg_grade oniv_avg_grade(s#)索引视图物化视图:SQLServer在计算列上创建索引createtablet1(aint,bint,casa/b)insertintot1values(2,0)createindex

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论