首页 > 数据库 >SQLServer 2005 海量数据解决方案(分区表)与对已存在的表进行分区

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

时间:2022-12-05 11:00:27浏览次数:40  
标签:PARTITION -- FILEGROUP 5MB SQLServer PRIMARY 分区表 2005 ALTER


这两天一直在研究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

标签:PARTITION,--,FILEGROUP,5MB,SQLServer,PRIMARY,分区表,2005,ALTER
From: https://blog.51cto.com/u_11295556/5911596

相关文章

  • SQL2005中设置自动编号字段
    如果希望重新定义在表中添加新记录时该列中自动生成并存储于列中的序列号,则可以更改该列的标识属性。在每个表中只能设置一个列的标识属性。具有标识属性的列包含系统生成的......
  • VC6.0和VS2005:C++和C#编写调用COM组件
    这篇文章就是关于COM组件的编写和调用的,主要包含了使用VC6.0编写和调用COM组件,VS2005中使用C#编写和调用COM组件,以及在VC6.0和VS2005之间互相调用COM组件。前一阵在......
  • 在sqlserver2008中收缩日志文件
    —先备份数据库(含日志文件)usemyhisgobackupdatabasemyhistodisk=’d:\myhis_rzbak’go—设为简单恢复模式use[master]goalterdatabasemyhissetr......
  • sql server 2005中对CLR的允许设置
    在sqlserver2005中,可以允许用vs.net2005来编写存储过程了,这比T-SQL有很大好处,但要注意的是,当要使用SQLSERVER2005这个功能时,在安全性方面会......
  • sqlserver 中len和DataLength的区别
    https://zhuanlan.zhihu.com/p/342051927LEN()函数返回文本字段中值的长度。DataLength()函数返回文本字段中值的字符长度。区别在于:len()只返回字符数,一个汉字代表一个......
  • MySQL和SQLserver中group by的区别
    https://blog.csdn.net/weixin_48720080/article/details/126289174力扣中做了一道题,groupby可以在mysql中用,不能在mysqlserver中用,因为groupby后面没有select中的字段......
  • sqlserver存储过程
    ref:https://blog.csdn.net/weixin_55909413/article/details/114767079https://blog.csdn.net/h610443955/article/details/83185528......
  • MySQL进阶实战8,分区表详解
    一、分区表分区表是一个独立的逻辑表,底层是由多个物理子表组成。实现分区的代码实际上是对一组底层表的句柄对象的封装。对分区表的请求,都会通过句柄对象转化成对存储引擎的......
  • Hive 的分区表的作用,是否越多越好?
    Hive的分区表的作用是啥?越多越好吗?为啥嘞?分区表的作用:  分区表极小的缩小了,数据的查找范围,提高查询速度和性能。越多越好吗:  不是的,原因:  hive如果有过多的......
  • sqlserver最大内存太小导致连接不上
    当修改了sqlserver最大内存过小时会导致程序连接不上数据库,最小内存的大小不定,可能跟数据库版本和开启服务有关系,建议1000m.解决该问题的思路是:数据库最大内存过小时,sqlse......