SQL Server表分区案例
--学习创建表分区脚本
/*
SQL SERVER 2005中以上版本,终于引入了表分区,就是说,当一个表里的数据很多时,可以将其分拆到
多个的表里,大大提高了性能。下面举例子说明之
*/
-------------------------------------------------------------
/*
比如,在D盘下建立如下几个目录
D:\DataDB\Primary
D:\DataDB\FG1
D:\DataDB\FG2
D:\DataDB\FG3
D:\DataDB\FG4
其中primary存放的是主数据库文件,其他FG1--FG4存放四个单独的文件组,可以见创立数据库
TestDB,如下
*/
use master
go
if exists(select name from sys.databases where name=N'TestDB')
drop database TestDB
go
create database TestDB
on primary
(name='Test DB Primary FG',
filename='d:\DataDB\Primary\Data Test DB Primary FG.mdf',
size=5,
maxsize=500,
filegrowth=1),
FILEGROUP [Data Test DB FG1]
(name='Data Test DB FG1',
filename='d:\DataDB\FG1\Data Test DB FG1.ndf',
size=5,
maxsize=500,
filegrowth=1),
FILEGROUP [Data Test DB FG2]
(name='Data Test DB FG2',
filename='d:\DataDB\FG2\Data Test DB FG2.ndf',
size=5,
maxsize=500,
filegrowth=1),
FILEGROUP [Data Test DB FG3]
(name='Data Test DB FG3',
filename='d:\DataDB\FG3\Data Test DB FG3.ndf',
size=5,
maxsize=500,
filegrowth=1),
FILEGROUP [Data Test DB FG4]
(name='Data Test DB FG4',
filename='d:\DataDB\FG4\Data Test DB FG4.ndf',
size=5,
maxsize=500,
filegrowth=1)
-------------------------------------------------------
--接下来,我们创建分区表函数,这其实可以理解为一个规则,说明如何以一个规则来将一个表来划分,如下
use TestDB
go
create partition function DataPartionRange(int)
as range left for values(100,200,300)
--其中分区函数的名称是Data Partition Range,后面的类型(int)表明接下来用来分区的那个字段的类型是INT类型,而VALUES (100,200,300)表明,将把表分为4个区了,是从负数到100,100-200,200-300,大于300。
--接下来,我们要创建分区架构,即将分区函数应用到我们分好的四个文件组里面去
use TestDB
go
create partition scheme DataPartitionScheme
as partition DataPartionRange
to([Data Test DB FG1],[Data Test DB FG2],[Data Test DB FG3],[Data Test DB FG4]);
---创建表试试
use TestDB
go
create table MyTable
(
ID int not Null,
Date datetime,
Cost money
)on DataPartitionScheme(ID);
--填充表
USE TestDB
go
declare @count int
set @count =-25
while @count <=100
begin
insert into MyTable select @count,getdate(),100.00
set @count=@count+1
end
set @count =101
while @count <=200
begin
insert into MyTable select @count,getdate(),200.00
set @count=@count+1
end
set @count =201
while @count <=300
begin
insert into MyTable select @count,getdate(),300.00
set @count=@count+1
end
set @count =301
while @count <=400
begin
insert into MyTable select @count,getdate(),400.00
set @count=@count+1
end
set @count =401
while @count <=800
begin
insert into MyTable select @count,getdate(),500.00
set @count=@count+1
end
--最后,我们可以查询下,插入的这些数据,是否真的被划分到四个不同的文件组里的表分区了,可以这样看
SELECT *,$PARTITION.DataPartionRange(ID)
FROM MyTable
--where $PARTITION.DataPartionRange(ID)=4
分区的维护主要设计分区的添加、减少、合并和在分区间转换。可以通过ALTER PARTITION FUNCTION的选项SPLIT,MERGE和ALTER TABLE的选项SWITCH来实现。SPLIT会多增加一个分区,而MEGRE会合并或者减少分区,SWITCH则是逻辑地在组间转换分区。
SQL Server表分区案例的更多相关文章
- SQL Server表分区的NULL值问题
SQL Server表分区的NULL值问题 SQL Server表分区只支持range分区这一种类型,但是本人觉得已经够用了 虽然MySQL支持四种分区类型:RANGE分区.LIST分区.HASH分区 ...
- SQL Server表分区【转】
转自:http://www.cnblogs.com/knowledgesea/p/3696912.html SQL Server表分区 什么是表分区 一般情况下,我们建立数据库表时,表数据都存放在 ...
- SQL Server表分区详解
原文:SQL Server表分区详解 什么是表分区 一般情况下,我们建立数据库表时,表数据都存放在一个文件里. 但是如果是分区表的话,表数据就会按照你指定的规则分放到不同的文件里,把一个大的数据文件拆 ...
- SQL Server表分区-水平分区
SQL Server表分区,sql server水平分区 转自:http://www.cnblogs.com/knowledgesea/p/3696912.html 根据时间的,直接上T-SQL代码 ...
- SQL Server 表分区备忘
1.创建的代码如下: )) AS RANGE LEFT FOR VALUES ( N', N', N',... ) CREATE PARTITION SCHEME [01_SubjectiveScor ...
- 8、SQL Server 表分区
什么是表分区?表分区其实就是将一个大表分成若干个小表.表分区可以从物理上将一个大表分成几个小表,但是逻辑上还是一个表.所以当执行插入.更新等操作的时候,不需要我们去判断应该插入或更新到哪个表中.只需要 ...
- sql server 表分区
背景: 一般情况下,我们建立数据库表时,表数据都存放在一个文件里. 但是如果是分区表的话,表数据就会按照你指定的规则分放到不同的文件里,把一个大的数据文件拆分为多个小文件,还可以把这些小文件放在不同的 ...
- SQL Server表分区(水平分区及垂直分区)
什么是表分区? 表分区分为水平表分区和垂直表分区,水平表分区就是将一个具有大量数据的表,进行拆分为具有相同表结构的若干个表:而垂直表分区就是把一个拥有多个字段的表,根据需要进行拆分列,然后根据某一个字 ...
- SQL Server 表分区之水平表分区
什么是表分区? 表分区分为水平表分区和垂直表分区,水平表分区就是将一个具有大量数据的表,进行拆分为具有相同表结构的若干个表:而垂直表分区就是把一个拥有多个字段的表,根据需要进行拆分列,然后根据某一个字 ...
随机推荐
- php怎么解析utf-8带BOM编码的json数据,php解析json数据返回NULL
今天遇到一个问题,json_decode解析json数据返回null,试了各种方法都不行,最后发现,原来是json文件编码的问题. 当json_decode解析utf-8带BOM格式的json数据时, ...
- Linux 服务器如何设置文件和文件夹的读写权限
修改文件可读写属性的方法 例如:把index.htm 文件修改为可写可读可执行: chmod 777 index.htm 要修改目录下所有文件属性可写可读可执行: chmod 777 *.* 该命令中 ...
- js 月历 时间函数 月份第一天 星期的判断
返回值为0-6,其中返回值0为星期天:如同,php中的日期函数一样判断.
- 1)Java JDK和JRE
>JRE : Java Runtime Enviroment Java的运行环境.面向Java程序的使用者,而不是开发者.如果你仅下载并安装了JRE,那么你的系统只能运行Java程序(不能 ...
- scala函数组合器
1.map 在列表中的每个元素上计算一个函数,并且返回一个包含相同数目元素的列表. scala> numbers.map(_ * 2)res3: Array[Int] = Array(2, 4, ...
- ASP.NET MVC5学习笔记之Action参数模型绑定之模型元数据和元数据提供
一. 元数据描述类型ModelMetadata 模型元数据是对Model的描述信息,在ASP.NET MVC框架中有非常重要的作用,在模型绑定,模型验证,模型呈现等许多地方都有它的身影.描述Model ...
- Delphi For Android 开发笔记 1 - 开发工具介绍
在开始前,推荐喜欢delphi或者pascal的朋友,如果想将原来Windows的软件工程移植到Android,可使用CodeTyphon+Delphi XE7进行开发. 1.CodeTyphon C ...
- SIMATIC PCS 7 结构图
- c++编程规范的纲要和记录
这是一本好书, 可以让你认清自己对C++的掌握程度.看完之后,给自己打分,我对C++了解多少? 答案是不足20分.对于我自己是理所当然的问题, 就不提了, 记一些有启发的条目和细节: (*号表示不能完 ...
- NFC应用实例
package com.example.mynfcdemon; import android.app.Activity;import android.nfc.NfcAdapter;import and ...