视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
SQLServer2005海量数据解决方案(分区表)与对已存在的表进行分区
2020-11-09 11:06:44 责编:小采
文档

一直在研究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,FILEGROWTH = 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

下载本文
显示全文
专题