SQLserver2005中的分区表
来源:互联网 发布:excel表格提取部分数据 编辑:程序博客网 时间:2024/06/05 03:34
在SQL server 2005中一个新的特性——分区表。
建立分区表的步骤:
1 创建数据库(必须在多个文件组中)
2 创建分区函数
3 创建分区Scheme
4 创建分区表USE master;
GO
IF OBJECT_ID (N'PartitionDataBase') IS NOT NULL
DROP DATABASE PartitionDataBase;
GO
/* CREATE DATABASE */
CREATE DATABASE PartitionDataBase
ON PRIMARY
(
NAME = N'File_A_H',FileName = 'D:/Program Files/Microsoft SQL Server/MSSQL.1/MSSQL/DATA/PartitionDataBase_AH.mdf'
),
FILEGROUP FileGroup_I_N
(
NAME = N'File_I_N',FileName = 'D:/Program Files/Microsoft SQL Server/MSSQL.1/MSSQL/DATA/PartitionDataBase_IN.mdf'
),
FILEGROUP FileGorup_M_Z
(
NAME = N'File_M_Z',FileName = 'D:/Program Files/Microsoft SQL Server/MSSQL.1/MSSQL/DATA/PartitionDataBase_MZ.mdf'
)
GO
USE PartitionDataBase;
GO
/* 创建分区函数 */
CREATE PARTITION FUNCTION StaffNameRangePFN(varchar(100))
AS
RANGE LEFT FOR VALUES ('H','M')
GO
/* 创建分区Scheme */
CREATE PARTITION SCHEME StaffNamePScheme
AS
PARTITION StaffNameRangePFN
TO ([PRIMARY], FileGroup_I_N, FileGorup_M_Z)
GO
IF OBJECT_ID (N'Staff') IS NOT NULL
DROP TABLE dbo.Staff;
/* 创建分区表 */
CREATE TABLE [dbo].[Staff]
(
[StaffName] [varchar](100) NOT NULL
)
ON StaffNamePScheme ([StaffName])
GO
CREATE CLUSTERED INDEX IX_StaffName ON [Staff]([StaffName])
GO下面的代码将Staff表按StaffName分布到三个分区中。
插入一些测试数据INSERT INTO [dbo].[Staff]
SELECT FirstName FROM AdventureWorks.Person.Contact运行下面的代码,看看数据的分布情况SELECT
$partition.StaffNameRangePFN(StaffName) AS [Partition Number],
MIN(StaffName) AS [Min StaffName],
MAX(StaffName) AS [Max StaffName],
COUNT(StaffName) AS [Rows In Partition]
FROM dbo.staff AS o
GROUP BY $partition.StaffNameRangePFN(StaffName)
ORDER BY [Partition Number]看起来还不错。三个分区都差不多的数据
我们来打破这个平衡INSERT INTO [dbo].[Staff]
SELECT AddressLine1 FROM AdventureWorks.Person.Address修改分区表的步骤:
1 添加一个文件组到数据库
2 修改分区Scheme
3 修改分区函数Use master
GO
ALTER DATABASE PartitionDataBase ADD FILEGROUP FileGroup_0_9
GO
ALTER DATABASE PartitionDataBase
ADD FILE
(
NAME = N'File_0_9',FileName = 'D:/Program Files/Microsoft SQL Server/MSSQL.1/MSSQL/DATA/PartitionDataBase_09.mdf'
)
TO FILEGROUP FileGroup_0_9
GO
Use PartitionDataBase
GO
ALTER PARTITION SCHEME StaffNamePScheme
NEXT USED FileGroup_0_9;
GO
ALTER PARTITION FUNCTION StaffNameRangePFN()
SPLIT RANGE ('A');
GO
请注意修改和创建之间的一些差别
再用上面的代码看看数据分布的情况。
- SQLserver2005中的分区表
- SQLSERVER2005分区表讨论
- Sqlserver2005分区表实现步骤
- SQLSERVER2005中分区表的设计
- sqlserver2005中的表分区
- SQLserver2005中的DATENAME函数
- SQLserver2005中的DATENAME函数
- 分区表中的maxvalue参数设置
- oracle中的分区表
- Oracle中的分区表
- mysql中的分区表
- 初学数据库中的分区表
- hive中的分区表
- mysql中的分区表
- Hive中的分区表
- Hive中的分区表
- oracle中的分区表
- hive 中的二级分区表和动态分区表
- Browser组件的execWB方法 [转]
- 利用jpeglib压缩图像为jpg格式
- javascript中的异常处理
- 你适合去外企工作吗?
- GridView中实现类邮件的CheckBox全选功能
- SQLserver2005中的分区表
- phpmyadmin连接mysql的问题
- (原创)哈夫曼树(1)
- snoopy——PHP版的网络客户端
- LOKI_TYPELIST的简单与复杂
- 开发大型高负载类网站应用的几个要点
- 25 种能马上改善网站、提高浏览量的方法
- php输出标准xml,php访问mysql数据库简单例子(可以被asp等程序读取)
- 使用FleaPHP框架构建简单留言本应用