• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

SQL Server 2005 海量数据解决方案(分区表)与对已存在的表进行分区

mysql 搞代码 4年前 (2022-01-09) 18次浏览 已收录 0个评论

一直在研究SQL Server 2005 中如何对表进行分区,但是参考了多数资料都是说新建表后再将原表中数据插入到新表中,这样有些不方便.

这两天一直在研究SQL Server 2005 中如何对表进行分区,但是参考了多数资料都是说新建表后再将原表中数据插入到新表中,这样有些不方便.

最后找到了在已有表上做分区表的方法.见代码.

我们有个表现在已经到了1千万的数据,之前仅仅是优化索引和索引试图来在真实的环境中查看到底sql2005单表能负载多大的量。
最后得出结论,在我们公司现有的硬件条件下,sql2005中,单表的量最多不能超过250w数据。(这个数据会根据硬件的不同而会有所不同.)

—select * from t200705

–1.先根据表数据的量大小,来拆分每一个分区,保证每一个分区表的记录尽量在250w条记录左右.

–分区函数

CREATE PARTITION FUNCTION MonthDateRange(datetime)
AS RANGE LEFT FOR VALUES
(
‘20070131 23:59:59.997’,
‘20070531 23:59:59.997’,
‘20071231 23:59:59.997’
)

–2然后我们需要添加相应的文件组 .我使用的是主文件组.
ALTER DATABASE T1 ADD FILEGROUP [PRIMARY]
ALTER DATABASE T1 ADD FILEGROUP [PRIMARY]
ALTER DATABASE T1 ADD FILEGROUP [PRIMARY]

–3.我们需要在服务器上建立出单独的文件(涉及到的朋友可能知道,我们如果把文件分布在不同的磁盘上,可以最大限度的提高磁头的读写能力;另:这里微软建议数据库服务器最好–作Raid0 + Raid1).我由于是做测试,所以就放在了一个硬盘上了.

ALTER DATABASE T1
ADD FILE
(NAME = N’View200701′,FILENAME = N’D:”View200701.ndf’,SIZE = 5MB,MAXSIZE = 100MB,FILEGROWTH = 5MB)
TO FILEGROUP [PRIMARY]

ALTER DATABASE T1
ADD FILE
(NAME = N’View200702′,FILENAME = N’D:”View200702.ndf’,SIZE = 5MB,MAXSIZE = 100MB,FILEGROWTH = 5MB)
TO FILEGROUP [PRIMARY]

ALTER DATABASE T1
ADD FILE
(NAME = N’View200703′,FILENAME = N’D:”View200703.ndf’,SIZE = 5MB,MAXSIZE = 100MB,FILEGR来&源gao@dai!ma.com搞$代^码%网OWTH = 5MB)
TO FILEGROUP [PRIMARY]

–4.创建关联

–分区架构

CREATE PARTITION SCHEME MonthDateRangeScheme
AS
PARTITION MonthDateRange
ALL TO ([PRIMARY])

—5.创建表和索引(我这里只列出如何创建表)

/*5.
CREATE TABLE 表
{

}
ON MonthDateRangeScheme (日期列)
GO
*/
–6. –对已经存在的表进行分区设置

–切换到分区表

ALTER TABLE t200705

ADD

PRIMARY KEY NONCLUSTERED(rownumber,starttime)

ON MonthDateRangeScheme(starttime)

GO

/*– 切换到分区表

ALTER TABLE dbo.t200705

DROP CONSTRAINT rownumber,starttime

WITH(

MOVE TO PS_MonthDateRangeScheme(starttime)

)

*/

—如果大家希望查询此表中的相关数据,,可以使用如下语句

SELECT *, $PARTITION.MonthDateRange(starttime) AS T2007 FROM t200705

where starttime>’20070603′

—7删除

— 删除测试
–DROP TABLE dbo.t200705
–DROP PARTITION SCHEME MonthDateRangeScheme
—DROP PARTITION FUNCTION MonthDateRange


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:SQL Server 2005 海量数据解决方案(分区表)与对已存在的表进行分区

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址