问个问题,分区表分区数量到达999后应该如何处理?

xyc880813 2013-01-29 09:35:04
3年多前的项目,老人都走了,交给我维护,发现有个按照天来分区的分区表,现在分区表已经到达分区999了,新的数据已通过switch in切进来之后第二天就会被新的switch in数据替换
目前表大小在30G,索引18g,不是很大
我的大概想法是,首先把之前过早的数据通过switch out出去然后drop,之后将分区表的数据全部插入到另一个新表中,然后新建一个分区函数和分区架构,在新表上应用
然后再把旧表drop,新表改名
各位看看还有没有更好的方法?
另外有个问题,就是当我在分区函数中,我Merge range之后,比如执行alter partition function···
merge range ('2010-01-01')之后,原来是999个分区,是不是就会变成998个分区了?能否自动往后按照日期添加分区?
...全文
325 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
Mr_Nice 2013-01-29
  • 打赏
  • 举报
回复
引用 9 楼 xyc880813 的回复:
引用 3 楼 OrchidCat 的回复:引用 楼主 xyc880813 的回复:3年多前的项目,老人都走了,交给我维护,发现有个按照天来分区的分区表,现在分区表已经到达分区999了,新的数据已通过switch in切进来之后第二天就会被新的switch in数据替换 目前表大小在30G,索引18g,不是很大 我的大概想法是,首先把之前过早的数据通过switch ou……
不打sp2的话,最多到1000,打上sp2 到15000. 参考http://msdn.microsoft.com/zh-cn/library/ms143432(v=sql.100).aspx
xyc880813 2013-01-29
  • 打赏
  • 举报
回复
环境是: Microsoft SQL Server 2008 (SP1) - 10.0.2531.0 (X64) Mar 29 2009 10:11:52 Copyright (c) 1988-2008 Microsoft Corporation Enterprise Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)
xyc880813 2013-01-29
  • 打赏
  • 举报
回复
引用 3 楼 OrchidCat 的回复:
引用 楼主 xyc880813 的回复:3年多前的项目,老人都走了,交给我维护,发现有个按照天来分区的分区表,现在分区表已经到达分区999了,新的数据已通过switch in切进来之后第二天就会被新的switch in数据替换 目前表大小在30G,索引18g,不是很大 我的大概想法是,首先把之前过早的数据通过switch out出去然后drop,之后将分区表的数据全部……
好吧,刚才尝试了一下添加到1000个分区之后,就会报错: Msg 7719, Level 16, State 1, Line 1 CREATE/ALTER partition function failed as only a maximum of 1000 partitions can be created.
Mr_Nice 2013-01-29
  • 打赏
  • 举报
回复
引用 7 楼 Haiwer 的回复:
想打听一下,这样分区的性能如何,比如,按一些比较确定的条件(这些条件可以限定结果在10000行以内)查询1年的数据,需要多少时间
同问!!! 目前也就单表到过5G,30G的性能如何? lz的环境是? 2K5 /2K8/2K8 R2?
昵称被占用了 2013-01-29
  • 打赏
  • 举报
回复
想打听一下,这样分区的性能如何,比如,按一些比较确定的条件(这些条件可以限定结果在10000行以内)查询1年的数据,需要多少时间
xyc880813 2013-01-29
  • 打赏
  • 举报
回复
引用 3 楼 OrchidCat 的回复:
引用 楼主 xyc880813 的回复:3年多前的项目,老人都走了,交给我维护,发现有个按照天来分区的分区表,现在分区表已经到达分区999了,新的数据已通过switch in切进来之后第二天就会被新的switch in数据替换 目前表大小在30G,索引18g,不是很大 我的大概想法是,首先把之前过早的数据通过switch out出去然后drop,之后将分区表的数据全部……
好的,谢谢!一直根深蒂固以为分区上限只有999··· 另外week和month的分区表都有,每天聚合算一遍。 分表的话,要改的东西好多好多···就先不分了
xyc880813 2013-01-29
  • 打赏
  • 举报
回复
引用 2 楼 Haiwer 的回复:
ALTER PARTITION FUNCTION myRangePF1 () SPLIT RANGE ('2013-01-30');
好的,多谢海老大,那是不是说可以这样: while··· begin alter partition function ByDayFunction() merge range (5115); alter partition function ByDayFunction() split range(6114); end Merge一个分区,然后添加一个分区,然后循环?
昵称被占用了 2013-01-29
  • 打赏
  • 举报
回复
过早的数据通过switch out出去后,分区数就下降了,就可以在后面增加新的分区
Mr_Nice 2013-01-29
  • 打赏
  • 举报
回复
引用 楼主 xyc880813 的回复:
3年多前的项目,老人都走了,交给我维护,发现有个按照天来分区的分区表,现在分区表已经到达分区999了,新的数据已通过switch in切进来之后第二天就会被新的switch in数据替换 目前表大小在30G,索引18g,不是很大 我的大概想法是,首先把之前过早的数据通过switch out出去然后drop,之后将分区表的数据全部插入到另一个新表中,然后新建一个分区函数……
分区999 ,目前分区最多支持15000个(64位),往下分应该是没问题的。 如果每天的数据不是非常多的话,lz可以看一下分区方案是否可以扩大分区的范围。比如每周。 另外,老数据,比如一年前的数据,可以分到一个区中。 不过就lz的数据量 30G单表。对应查询需求还很高情况,lz可以考虑使用分表处理。这样可以减小索引处理的压力。毕竟几个G重建索引来的较容易一些。 参考
昵称被占用了 2013-01-29
  • 打赏
  • 举报
回复
ALTER PARTITION FUNCTION myRangePF1 () SPLIT RANGE ('2013-01-30');
xyc880813 2013-01-29
  • 打赏
  • 举报
回复
额怎么结帖率不是100%了···去看看
haitao 2013-01-29
  • 打赏
  • 举报
回复
引用 8 楼 OrchidCat 的回复:
引用 7 楼 Haiwer 的回复:想打听一下,这样分区的性能如何,比如,按一些比较确定的条件(这些条件可以限定结果在10000行以内)查询1年的数据,需要多少时间 同问!!! 目前也就单表到过5G,30G的性能如何? lz的环境是? 2K5 /2K8/2K8 R2?
32位2k5,64G内存,单表数据+索引=15+19G,记录数3.5亿,分100个区,基本还没出现性能问题
xyc880813 2013-01-29
  • 打赏
  • 举报
回复
引用 11 楼 OrchidCat 的回复:
引用 9 楼 xyc880813 的回复:引用 3 楼 OrchidCat 的回复:引用 楼主 xyc880813 的回复:3年多前的项目,老人都走了,交给我维护,发现有个按照天来分区的分区表,现在分区表已经到达分区999了,新的数据已通过switch in切进来之后第二天就会被新的switch in数据替换 目前表大小在30G,索引18g,不是很大 我的大概想法是,……
哎不敢打sp啊···不过我会记着下次再用分区表的时候看sql server版本
xyc880813 2013-01-29
  • 打赏
  • 举报
回复
引用 7 楼 Haiwer 的回复:
想打听一下,这样分区的性能如何,比如,按一些比较确定的条件(这些条件可以限定结果在10000行以内)查询1年的数据,需要多少时间
待会儿上表结构 性能问题可以一起探讨
Q315054403 2013-01-29
  • 打赏
  • 举报
回复
MS文档建议2008用到1K就够了。。。首选合并旧分区,开辟新分区。。。

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧