ORDER BY [Partition Number]
8DY_S ;rcV}yM56 在查询分析器里执行以上脚本,结果如图1所示:
1_mK[uJB g.Ya2 图1 分区表信息
\xl<loKQ& .qH* ; Vdn/zOT aK8tvpb 2.6 维护分区
6_A)I@;w e^Q *og)1 分区的维护主要设计分区的添加、减少、合并和在分区间转换。可以通过ALTER PARTITION FUNCTION的选项SPLIT,MERGE和ALTER TABLE的选项SWITCH来实现。SPLIT会多增加一个分区,而MEGRE会合并或者减少分区,SWITCH则是逻辑地在组间转换分区。
?tka`4Y)on Wb'u35f 3 性能对比
EM9vK)9 8^y&3%Ud 我们对2650万数据,存储空间占用约4G的单表进行性能对比,测试环境为IBM365,CPU 至强2.7G*2、内存 16G、硬盘 136G*2,系统平台为Windows 2003 SP1+SQL Server 2005 SP1。测试结果如表1:
'loRa-L- JzI5yVha~j 表1:分区和未分区性能对比表(单位:毫秒)
Zx)HBZ_ f}v }G 测试项目 分区 未分区
F|_V~ZTJ9@ Lr3G,w/e 1 16546 61466
c>5R&wi{% Y)I, s 2 13 33
3 :h ):KD@e3a1 3 20140 61546
+K'U tZ &N=7}}k 4 17140 61000
C%z7QK] " ;Gyg02xn 说明:
6q=!XjO?s7 !grW o/z[ 1:根据时间检索某一天记录所耗时间
(.LTw h9 >_ZHC87 2:单条记录插入所耗时间
?qL\ZUY _ 59<PSeL 3:根据时间删除某一天记录所耗时间
Wx[CcJa0vz N9vYtKd" 4:统计每月的记录数所需时间
KvUhhxE5P !^t#L+e j 从表1可以看出,对分区表进行操作比未分区的表要快,这是因为对分区表的操作采用了CPU和I/O的并行操作,检索数据的数据量也变小了,定位数据所耗时间变短。
4WA|<j?0 M7&Fq] q 4 结束语
1ljAE]73 ;\!P3 对海量数据的处理一直是一个令人头痛的问题。分离的技术是所有设计者们首先考虑的问题,不管是分离应用程序功能还是分离数据访问,如果加以了合理规划,都能十分有效的解决大数据表的运行效率低和维护成本高等问题。SQL Server 2005新增的表分区功能,可以对数据进行合理分区,当用户在访问部分数据时,SQL Server最佳化引擎可以根据数据的实体存放,找出最佳的执行方案,而不至于大海捞针。