本文是我关于数据库分区的方案的一些想法,或许有些问题。仅供大家讨论。SqlServer (SqlServer 2005\SqlServer 2008)实现分区需要在企业版下进行.

  SqlServer的分区分为大致有以下个过程:1、创建文件组用以存放数据文件 2、创建文件组用户数据文件 3、创建分区函数 4、创建分区方案  5、在分区方案下创建表

  本文是在SqlServer2012 下完成的。

  过程:

1、新建数据库,在属性中创建文件以及文件组。如下图:

  

  可以在下图中选择文件组、或者新建文件组用户存放上图中新建的文件:

  

  2、创建分区函数

CREATE PARTITION FUNCTION [partitionById](int)
AS RANGE LEFT FOR VALUES (100, 200, 300)

3、创建分区方案

CREATE PARTITION SCHEME [partitionSchemeById]
AS PARTITION [partitionById] --分区函数
TO ([FileGroup1], [FileGroup2],  [FileGroup3],[FileGroup4])

  注意以上分区函数使用的是LEFT ,根据后面的值指明了数据库中如何存放。以上存放方式为:-∞,100],(100,200],(200,300],(300,+∞).此分区方案是依据分区函数

partitionById 创建的。那就是说以上Id的存储区间分别被放在[FileGroup1], [FileGroup2],  [FileGroup3],[FileGroup4]文件组的文件中。

4、依据分区方案创建表
CREATE TABLE [dbo].[Account]([Id] [int] NULL,[Name] [varchar](20) NULL,[Password] [varchar](20) NULL,[CreateTime] [datetime] NULL
) ON partitionSchemeById(Id)

  注意:创建表的脚本中需要指明分区方案和分区依据列

  查看某分区的数据:

SELECT * FROM
[dbo].[Account]
WHERE $PARTITION.[partitionById](Id)=1

  查询结果如下图:

至此,分区似乎已经结束了。但是看看后一个分区里的数据:Id>=400的全部放在了一个数据文件中。这样在有可能瓶颈就发生在了这个分区中。

如果数据不停的增长,希望分区也不断的自动增加。如:每天生成一个新的分区来存放分区新的数据。如到第二天时,新生成一个分区来存放(400,500 ]的数据。

这里我采用了Sql Job的方式来自动产生分区:

DECLARE @maxValue INT,@secondMaxValue INT,@differ    INT,@fileGroupName VARCHAR(200),@fileNamePath    VARCHAR(200),@fileName   VARCHAR(200),@sql        NVARCHAR(1000)SET @fileGroupName='FileGroup'+REPLACE(REPLACE(REPLACE(CONVERT(varchar, GETDATE(), 120 ),'-',''),' ',''),':','')
PRINT @fileGroupName
SET @sql='ALTER DATABASE [Test] ADD FILEGROUP '+@fileGroupName
PRINT @sql
EXEC(@sql)SET @fileNamePath='C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLINSTANCE\MSSQL\DATA\'+REPLACE(REPLACE(REPLACE(CONVERT(varchar, GETDATE(), 120 ),'-',''),' ',''),':','') +'.NDF'
SET @fileName=N'File'+REPLACE(REPLACE(REPLACE(CONVERT(varchar, GETDATE(), 120 ),'-',''),' ',''),':','') SET @sql='ALTER DATABASE [Test] ADD FILE (NAME='''+@fileName+''',FILENAME=N'''+@fileNamePath+''') TO FILEGROUP'+'    '+@fileGroupName
PRINT @sql
PRINT 1
EXEC(@sql)
PRINT 2--修改分区方案,用一个新的文件组用于存放下一新增的数据
SET @sql='ALTER PARTITION SCHEME [partitionSchemeById] NEXT USED'+'    '+@fileGroupName
EXEC(@sql)--分区架构
PRINT 3
SELECT @maxValue =CONVERT(INT,MAX(value))
FROM SYS.PARTITION_RANGE_VALUES PRVSELECT @secondMaxValue = CONVERT(INT,MIN(value))
FROM
(SELECT TOP 2 * FROM SYS.PARTITION_RANGE_VALUES ORDER BY VALUE DESC
)PRV SET @differ=@maxValue - @secondMaxValue ALTER PARTITION FUNCTION partitionById()  --分区函数
SPLIT RANGE (@maxValue+@differ) 

这样在计划里指定每天什么时候运行,下图:

参考:http://www.cnblogs.com/lyhabc/articles/2623685.html


转载于:https://www.cnblogs.com/tyb1222/p/3388438.html

SqlServer 自动化分区方案相关推荐

  1. Java中高级核心知识全面解析——Redis(集群【概述{主从复制、哨兵、集群化}、数据分区方案、节点通信机制、数据结构简析】)5

    目录 一.[集群]入门实践教程 1.Redis 集群概述 1)Redis 主从复制 2)Redis 哨兵 3)Redis 集群化 2.主从复制 1)主从复制主要的作用 2)快速体验 ①.第一步:本地启 ...

  2. SQLServer 表分区 根据时间自动扩展分区

    SQLServer 表分区 根据时间自动扩展分区 前提条件 创建文件组 创建文件并且将文件加入文件组 修改分区方案 修改分区函数 创建存储过程 利用各种定时任务执行以上存储过程 前提条件 已经创建好分 ...

  3. SqlServer 表分区

    参考 https://www.cnblogs.com/hhhh2010/p/10429002.html 参考 https://www.cnblogs.com/xiaomengshan/p/111392 ...

  4. 泰达机器人董事长_【百佳专访】深圳泰达董事长陈大立:“沉迷”研发喷涂自动化中国方案的“匠人”...

    原标题:[百佳专访]深圳泰达董事长陈大立:"沉迷"研发喷涂自动化中国方案的"匠人" 我国3C行业制造业产能位居全球之首,庞大的产能背后,映射出3C行业智能化升级 ...

  5. Linux学习(CentOS-7)---磁盘分区(概念、分区方法、分区方案)

    2016-09-23 16:28 13512人阅读 评论(0) 收藏 举报 分类: Linux学习(6) 版权声明:本文为博主原创文章,未经博主允许不得转载. 1磁盘分区相关的概念 1.1什么是磁盘 ...

  6. Linux(CentOS)安装分区方案

    为什么80%的码农都做不了架构师?>>>    Linux(CentOS)安装分区方案 /boot(不是必须的):/boot分区用于引导系统,它包含了操作系统的内核和在启动系统过程中 ...

  7. 企业生产环境不同业务的Linux分区方案

    企业生产环境不同业务的Linux分区方案 1.常规分区 /boot   100M swap    内存的1.5倍(若内存大于16G,swap分配8-16G即可) /           剩余所有硬盘空 ...

  8. linux磁盘分配方案,张明贵-Linux磁盘分区方案

    [听课保持最大化的输入,分享交流保持最大化的输出] 服务器选择软RAID还是硬RAID? 应该选择硬RAID,软RAID多了一层软件,性能受到了一定程度上的限制 LVM卷,可以对磁盘空间进行动态调整 ...

  9. 安装Linux时,引导分区位于一个GPT分区方案的错误提示

    在安装Linux时,如果机器之前装过VMware EXi5系统,在分区时会出现 ************************* 分区错误 您所引导分区位于一个使用GPT分区方案的磁盘中 ***** ...

最新文章

  1. JAVA求是否为闰年,for-while循环,输出你好
  2. 「数据科学家」必备的10种机器学习算法
  3. 【bzoj 4764】弹飞大爷
  4. 神策数据汽车行业解决方案重磅上线,全面赋能车企数字化转型
  5. Python进阶_wxpy学习:原始数据
  6. SQL server Cannot find one or more
  7. VS2015 代码左缩进
  8. 第4步 tomcat配置中文字符集 启动Tomcat  网页乱码
  9. 带你自学Python系列(十一):Python函数的用法(一)
  10. mysql df_DF学Mysql(一)——数据库基本操作
  11. Tensorflow:estimator训练
  12. RS报内存错误XQE-ROL-0183
  13. 拓端tecdat|电力消耗模型构建、分析和预测
  14. java adt eclipse_Eclipse安装ADT插件
  15. 【二叉树】美团的【天天领现金】活动,不就是 斐波那契 数列么?
  16. 如何快速下载百度网盘大文件
  17. MATLAB | 画彩色图像的直方图,改对比度,计算均值、方差和信息熵
  18. 2022-03-25 Python作业1
  19. obs多推流地址_如何用OBS将腾讯会议推流到一直播上进行直播
  20. C++学习之路抓紧跑路版(七)-动态申请内存空间

热门文章

  1. Go如何使用session
  2. 大型网站演化发展历程
  3. MySQL笔记4:desc命令的两个用法
  4. MySQl笔记7:MySQL在线模拟平台汇总
  5. keil5软件仿真出现unknown signal解决方法。
  6. 《spring揭秘》读书笔记二
  7. 数据结构: 排序算法介绍
  8. Android超时退出功能解决方案
  9. NSArray、NSMutableArray和NSMutableDictionary的用法
  10. Windows Phone 8初学者开发—第21部分:永久保存Wav音频文件