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 表分区之水平表分区
什么是表分区? 表分区分为水平表分区和垂直表分区,水平表分区就是将一个具有大量数据的表,进行拆分为具有相同表结构的若干个表:而垂直表分区就是把一个拥有多个字段的表,根据需要进行拆分列,然后根据某一个字 ...
随机推荐
- 通过HttpClient方式连接网络
xml: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:t ...
- Struts2中的namespace使用
namespace一般在项目比较复杂的情况下使用较好. 在struts2的项目中,namespace主要在以下环境中常使用: 1. 在配置文件中(struts.xml)以及被它包含的XX.xml文件中 ...
- 数组(Array),二维数组,三维数组
数组(Array):相同类型数据的集合就叫做数组. (一)定义数组的方法: A) type[] 变量名 = new type[数组中元素的个数] 例如: int[] a = new int[10] ; ...
- lnmp的使用
命令 1.状态管理 lnmp {start|stop|reload|restart|kill|status} 2.添加虚拟host lnmp vhost add
- DB2查询结果显示n行
在SQLserver中语法是这样的:select top n * from staff ,即可查询显示n行数据 但是在DB2中语法是这样的,感觉比较接近英语. select * from STAFF ...
- oracle 11g 添加控制文件
OS: Oracle Linux Server release 5.7 DB: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - ...
- arcgis中使用excel中x,y坐标创建点问题
文件——从x,y中添加,可以显示点的位置 右击图层导出数据时,出现无法绘制图形,生成shapefile文件的情况.经过排除数据发现 当x,y坐标值中出现null等异常值时,会出现上述无法导出的情况.
- android开发遇到SDK无法访问谷歌而安装不了的情况
遇到SDK无法访问谷歌而安装不了的情况 1.修改C:\Windows\System32\drivers\etc的HOSTS文件,添加 #google_android更新203.208.46.146 d ...
- 分享C#原生ID(流水号)生成功能实现
///, , )).TotalMilliseconds.ToString(")); /// <summary> /// /// </summ ...
- Go返回参数命名
Go语言中可以为返回值定义名称.代码实例: package main import "fmt" func add1(a int, b int) int { return a + b ...