版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、SQL Server表分区什么是表分区一般情况下,我们建立数据库表时,表数据都存放在一个文件里。但是如果是分区表的话,表数据就会按照你指定的规则分放到不同的 文件里,把一个大的数据文件拆分为多个小文件,还可以把这些小文件放在不同的磁盘下由多个cpu进行处理。这样文件的大小随着拆分 而减小,还得到硬件系统的加强,自然对我们操作数据是大大有利的。所以大数据量的数据表,对分区的需要还是必要的,因为它可以提高 select效率,还可以对历史数据经行区分存档等。但是数据量少的 数据就不要凑这个热闹啦,因为表分区会对数据库产生不必要的开销, 除啦性能还会增加实现对象的管理费用和复杂性。跟着做,分区如此简单
2、先跟着做一个分区表(分为11个分区),去除神秘的面纱,然后咱 们再逐一击破各个要点要害。分区是要把一个表数据拆分为若干子集合,也就是把把一个数据文件 拆分到多个数据文件中,然而这些文件的存放可以依托一个文件组或 这多个文件组,由于多个文件组可以提高数据库的访问并发量,还可以把不同的分区配置到不同的磁盘中提高效率, 所以创建时建议分区跟文件组个数相同。1 .创建文件组可以点击数据库属性在文件组里面添加T-sql语法:alter database 数据库名,add filegroup文件组名-创建数据库文件组alterdatabasetestSplitalterdatabasetestSplita
3、lterdatabasetestSplitalterdatabasetestSplitalterdatabasetestSplitalterdatabasetestSplitalterdatabasetestSplitadd filegroup ByldGroupladd filegroup ByIdGroup2add filegroup ByIdGroup3add filegroup ByIdGroup4add filegroup ByIdGroup5add filegroup ByIdGroup6add filegroup ByIdGroup7alter database testSpli
4、t add filegroup ByIdGroup8alter database testSplit add filegroup ByIdGroup9 alter database testSplit add filegroup ByldGroupIO电2 .创建数据文件到文件组里面可以点击数据库属性在文件里面添加T-sql语法:alter database 数据库名称 add file数据标识 to filegroup文件组名称-数据标识 (name:文件名,fliename:物理路径文件名,size: 文件初始大小kb/mb/gb/tb , filegrowth: 文件自动增量 kb/mb
5、/gb/tb/%,maxsize: 文件可以增加到的最大大小 kb/mb/gb/tb/unlimited )重alter database testSplit add file(name=NById1' filename =N数据库data' ,size =5Mb,filegrowth =5mb)alter database testSplit add file(name=NById2' filename =N数据库data' ,size =5Mb,filegrowth =5mb)to filegroup ByIdGroup2alter database tes
6、tSplit add file(name=NById3' filename =N数据库data' ,size =5Mb,filegrowth =5mb)to filegroup ByIdGroup3alter database testSplit add file(name=NById4' filename =N数据库data' ,size =5Mb,filegrowth =5mb)to filegroup ByIdGroup4alter database testSplit add file(name=NById5' filename =N数据库dat
7、a' ,size =5Mb,filegrowth =5mb)to filegroup ByIdGroup5alter database testSplit add file(name=NById6' filename =N数据库data' ,size =5Mb,filegrowth =5mb)to filegroup ByIdGroup6alter database testSplit add file(name=NById7' filename =N数据库data' ,size =5Mb,filegrowth =5mb)to filegroup ByI
8、dGroup7alter database testSplit add file(name=NById8' filename =N数据库data' ,size =5Mb,filegrowth =5mb)to filegroup ByIdGroup8alter database testSplit add file(name=NById9' filename =N数据库data' ,size =5Mb,filegrowth =5mb)to filegroup ByIdGroup9alter database testSplit add file(name=NByI
9、d10' filename =N数据库data' ,size =5Mb,filegrowth =5mb)to filegroup ByldGroupIO执行完成后,右键数据库看文件组跟文件里面是不是多出来啦这些文 件组跟文件。3 .使用向导创建分区表 右键到要分区的表- >> 存储- >> 创建分区 - >> 显不向导视图- >> 下一步- >> 下一步。自建分区向导-四2川曰 j 回选择分区别这择对表曲缶区的划。可月分区别列名数蹴型黄度精度变度LreaeDdedstetine或3Ma市rwarha-awD0410aO
10、nferNiinpvartfiar州°口DHerPgyStstusirt41。eOderStohjairt41。3Useridvaruhrar4100将止会与盗神分区恚笄量口相存储叵中的所有本唯一索引扣唯一蒙引与索引分区别对小叵)V1函网塔包含郎金粉分区列二语逡择妻在此美中用作分辰列的判。帮助也1f上 取鹰值 | 魅肖这里举例说下选择列的意思: 假如你选择的是int类型的列:那么你的分区可以指定为1-100W是一个分区,100W200W是一个分区.假如你选择的是datatime类型:那么你的分区可以指定为:204-01-31 一个分区,204-02-28 一个分区根据这样的列数据规则
11、划分,那么在那个区间的数据,在插入数据库 时就被指向那个分区存储下来。我这里选用orderid int 类型- >> 下一步 ->>选择分区函数新遑分区函数理);L 浸 ar 七1 七1 onF unbPariiti 0期SuhemH可适用jmc无可用分区苗数选择分区方案Q新窿分区方案此):0现有分区方案:A点蹉分区向导 bidder映射分区枭分区映射到文件超并指定范国值。'ni$ I 玷)o正婢工)右访界W送择文件纲打指定边产值五件期”边界行计鳗例本空目可用空间户町日丫T11JOQOOO10153743SB.E* Mg0.563 M 日 IdCrmpIVzxn
12、ooo09131134J 7JM MD“n hd由IdGmqp工VJMMOO99335635S.G9;- M白4船m MBBldGrDqpJ4XXMQ0540972331 期 NCI*.9黜 MD米ByldGnMp-4V&M0000B7GE72144.C9S M 白4.93£ MBByldGn>Lp5VSWOOQO139923G烟叶年4.93J MBDyldGiTKpGF7M00009GX57划一缸MG4.3n MB0yldGrwLp79JQOOOO13G412C375 ME况 MBBvIdnxpS 1-工5MJ0000905239311.4X M 白ByldGrTwp
13、BIMiaOOQQ1 口 50Gl17-3 £51 MB# 913 MRBldGmp ID,13 000 MB他计在铸空间妙髭珈(H)S上一步出|下一步国)|M濯左边界右边界:就是把临界值划分给上一个分区还是下一个分区个小于号,一个小于等于号。然后下一步下一步最后你会得到分区函数和分区方案。事USEtestSplitGOBEGINTRANSACTION-创建分区函数CREATPARTITIONFUNCTIONbgPartitionFun (int ) ASRANGELEFT FORVALUESN'1000000' , N '2000000' , N &
14、#39;3000000' , N '4000000', N5000000' , N '6000000' , N '7000000' , N '8000000' , N '9000000', N')-创建分区方案CREATPARTITION SCHEMEbgPartitionSchema ASPARTITION bgPartitionFun TO( PRIMARY ByIdGroup1 , ByIdGroup2, ByIdGroup3 , ByIdGroup4 , ByIdGroup5 , B
15、yIdGroup6, ByIdGroup7 , ByIdGroup8 , ByIdGroup9 , ByIdGroup10)-创建分区索引CREATEDLUSTEREDNDEX ClusteredIndex_on_bgPartitionSchema_65 ONdbo . BigOrderOrderId)WITH(SORT_IN_TEMPD= OFF IGNORE_DUP_KEY OFFDROP_EXISTING OFF ONLINE = OFF ON bgPartitionSchema (Orderld)-删除分区索引DROPINDEX ClusteredIndex_on_bgPartitio
16、nSchema_65 ON dbo . BigOrder WITH( ONLINE = OFF)COMMITTRANSACTION执行上面向导生成的语句。分区完成。4 .秀一下速度。首先我在表中插入啦1千万行数据。给表分啦11个分区。前十个分区里面一个是100W条数据。&4;I丁工1-吩藻带转和2 工 select * fzEE te a 2Spl it. dba. higo rder rers orde r id>SD DCOOO and nr derid <5301,000 另一无分区帚累集和曲表2Ji select,iicm 曲比2匕,曲。,啦。口血工 vhert O
17、Tderjjd>5DG0M) and onterid <5口乳0口口i |ti口勰3泰酬时间=3曹%百隹时间=Q霸至96殳驻«皿2垢计数,照勰W乩 W5。次尸展。见工加群聚? »乩区艇徽-'次, 也溜播皿驷皿执序相E时间=1蓼占那桐“制,他Mrvv介于季阳摘二CTD时间、口制兑占用萨工口翻!出3行表日用二二日命情I,晶勰5次I斑里取口北潘1七4篷浦或0次c而艇盗n次,10C熊3丸罚M;*指理卧-E丽-口新占用时间-”莹村/.£”<« P所由喘密|1栏.说两句:可见反常现象,扫描次数跟逻辑读取次数都是无分区表的2倍之多,但查询速度
18、却是快啦不少啊。这就是分区的神奇之处啊,所以要相信 这世界一切皆有可能分区函数,分区方案,分区表,分区索引1.分区函数指定分依据区列(依据列唯一),分区数据范围规则,分区数量,然 后将数据映射到一组分区上。创建语法:create partition function分区函数名(分区歹U类型)as rangeleft/rightfor values (每个分区的边界值,.)- -创建分区函数CREATPARTITIONFUNCTIONbgPartitionFun (int ) ASRANGELEFT FORVALUESN'1000000' , N'2000000'
19、 , N'3000000' , N'4000000', N5000000' , N '6000000' , N '7000000' , N '8000000' , N '9000000', N')然而,分区函数只定义了分区的方法,此方法具体用在哪个表的那一 列上,则需要在创建表或索引是指定。删除语法:- -删除分区语法drop partitionfunction分区函数名 - -删除分区函数bgPartitionFundrop partitionfunction bgPartitio
20、nFun需要注意的是,只有没有应用到分区方案中的分区函数才能被删除。2.分区方案指定分区对应的文件组。创建语法:- -创建分区方案语法create partition scheme分区方案名称 as partition分区函数名称 all to (文件组名称,.)- -创建分区方案,所有分区在一个组里面CREATPARTITION SCHEMEbgPartitionSchema ASPARTITION bgPartitionFun TO(ByIdGroup1 , ByIdGroup1 , ByIdGroup1, ByIdGroup1 , ByIdGroup1 , ByIdGroup1 , By
21、IdGroup1, ByIdGroup1 , ByIdGroup1 , ByIdGroup1 , ByIdGroup1)分区函数必须关联分区方案才能有效,然而分区方案指定的文件组数 量必须与分区数量一致,哪怕多个分区存放在一个文件组中。删除语法:- -删除分区方案语法drop partition scheme分区方案名称 - -删除分区方案 bgPartitionSchema只有没有分区表,或索引使用该分区方案是,才能对其删除3 .分区表创建语法:-创建分区表语法create table 表名 (列定义)on分区方案名 (分区列名)-创建分区表create table BigOrder (Or
22、derIdintidentity ,orderNumvarchar (30)not null ,OrderStatusintnot nulldefault 0, OrderPayStatusintnot nulldefault 0,Useridvarchar (40)not nulldefaultCreateDatedatetimenullgetdate (),Marknvarchar (300)null)on bgPartitionSchema(Orderid)电如果在表中创建主键或唯一索引,则分区依据列必须为该列4 .分区索引创建语法:-创建分区索引语法create 索弓I分类,index
23、 索引名称,on 表名(列名)on 分区方案名 (分区依据列名)-创建分区索引CREATBDLUSTEREDJDEX ClusteredIndex_on_bgPartitionSchema_65 ONdbo . BigOrder(Orderld)WITH(SORT_IN_TEMPD= OFF IGNORE_DUP_KEY OFFDROP_EXISTING OFF ONLINE = OFF ONbgPartitionSchema (Orderld)使用分区索引查询,可以避免多个 cpu操作多个磁盘时产生的冲突分区表明细信息这里的语法,我就不写啦,自己看语句分析吧。简单的很。1.查看分区依据列的指
24、定值所在的分区-查询分区依据列为的数据在哪个分区上select $( 2000000)-返回彳1是2,表示此值存在第2个分区2.查看分区表中,每个非空分区存在的行数-查看分区表中,每个非空分区存在的行数select $(orderid) as partitionNum, count (*) as recordCountfrom bigorder group by $(orderid)国结果13消同partition Num recorded unt10MMHXlXl2 S100MOQ3 91000000W1。10000003.查看指定分区中的数据记录-查看指定分区中的数据记录select *
25、from bigorder where $(orderid) =2结果:数据从1000001开始到200W吉束分区的拆分与合并以及数据移动1 .拆分分区在分区函数中新增一个边界值,即可将一个分区变为2个。-分区拆分alter partition function bgPartitionFun()split range(N '1500000') -将第二个分区拆为2个分区注意:如果分区函数已经指定了分区方案,则分区数需要和分区方案中指定的文件组个数保持对应一致。2 .合并分区与拆分分区相反,去除一个边界值即可。-合并分区alter partition function bgPar
26、titionFun()merge range(N'1500000')-将第二第三分区合并3 .分区中的数据移动你或许会遇到这样的需求,将普通表数据复制到分区表中,或者将 分区表中的数据复制到普通表中。那么移动数据这两个表,则必须满足下面的要求。字段数量相同,对应位置的字段相同相同位置的字段要有相同的属性,相同的类型。两个表在一个文件组中1 .创建表时指定文件组-创建表create table 表名 (列定义)on 文件组名2 .从分区表中复制数据到普通表-将bigorder分区表中的第一分区数据复制到普通表中alter table bigorder switch partition 1 to 普通表名 3.从普通标中复制数据到分区表中这里要注意的是要先将分区表中的索引删除,即便普通表中存在跟分区表中相同的索引。-将普通表中的数据复制到bigorder分区表中的第一分区alter table 普通表名 switch to bigorder partitio
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高考物理总复习专题三牛顿运动定律第3讲牛顿运动定律的应用练习含答案
- 高中语文 第六单元 一 兼 爱教案 新人教版选修《先秦诸子选读》
- 2024年五年级数学下册 七 包装盒-长方体和正方体 我学会了吗教案 青岛版六三制
- 高中化学新教材同步教案选择性必修第一册第2章第2节第2课时化学平衡常数
- 2024-2025年高中化学 专题2 第2单元 第3课时 化学平衡常数教案 苏教版选修4
- 2023九年级语文上册 第一单元 1 沁园春 雪说课稿 新人教版
- 2024年秋七年级生物上册 3.2 生物体教案2 北京课改版
- 怎样成为一个行业的专家
- 柴油发电机房管理制
- 籽儿吐吐 课件
- 2024年羽毛球项目建设方案
- 年度销售额增长分析
- 物业管理职业生涯规划书
- 针灸教学演示课件
- 慢性伤口护理健康宣教课件
- 《青蛙弗洛格的成长故事》阅读测试题
- 日产轩逸说明书
- 徐霞客游记课件
- AutoCAD 2020中文版从入门到精通(标准版)
- 建筑施工电动运输车辆进场验收表
- 八年级《中学生如何正确看待手机》主题班会课件
评论
0/150
提交评论