SQL SERVER性能优化 分区表
本文演示了 SQL Server 2008 分区表实例;
1. 创建测试数据库 ;
2. 创建分区函数;
3. 创建分区架构;
4. 创建分区表;
5. 创建分区索引 ;
6. 分区切换 ;
7. 查询哪些表使用了分区表;
-- 作成者 leno
-- 日期: 2009-06-06 23:50:01.700
-- 创建测试数据库
USE master
GO
IF OBJECT_ID(N'PartitionDataDB') IS NOT NULL
DROP DATABASE PartitionDataDB
GO
CREATE DATABASE PartitionDataDB
ON PRIMARY
(
NAME = N'File_A_H',
FILENAME ='D:\Microsoft\Microsoft SQL Server 2008\MSSQL10.MSSQLSERVER\MSSQL\DATA\PartitionDataDB_AH.mdf'
),
FILEGROUP FileGroup_I_N
(
NAME = N'File_I_N',
FILENAME ='D:\Microsoft\Microsoft SQL Server 2008\MSSQL10.MSSQLSERVER\MSSQL\DATA\PartitionDataDB_IN.mdf'
),
FILEGROUP FileGroup_M_Z
(
NAME = N'File_M_Z',
FILENAME ='D:\Microsoft\Microsoft SQL Server 2008\MSSQL10.MSSQLSERVER\MSSQL\DATA\PartitionDataDB_MZ.mdf'
)
GO
-- 创建分区函数
USE PartitionDataBase;
GO
CREATE PARTITION FUNCTION StaffNameRangePFN(varchar(100))
AS
RANGE LEFT FOR VALUES ('H','M')
GO
-- 创建分区架构
CREATE PARTITION SCHEME StaffNamePScheme
AS
PARTITION StaffNameRangePFN
TO ([PRIMARY], FileGroup_I_N, FileGorup_M_Z)
GO
-- 创建分区表
CREATE TABLE [dbo].[Staff]
(
[StaffName] [varchar](100) NOT NULL
)
ON StaffNamePScheme ([StaffName])
GO
-- 插入测试数据1
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]
/*
1 Abigail Guy 364
2 Hannah Lynn 241
3 Maggie Yvette 395
*/
-- 插入测试数据2
INSERT INTO [dbo].[Staff]
SELECT AddressLine1 from AdventureWorks.Person.Address
-
相关文档:
分页查询的原理:
这个只能用再Sql2005及以上的版本
DECLARE @pagenum AS INT, @pagesize AS INT
SET @pagenum = 2
SET @pagesize = 3
SELECT *
from (SELECT ROW_NUMBER()&n ......
下载地址:http://msftdbprodsamples.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=19353
我下载的是SQL2008.AdventureWorks_All_Databases.x86.msi,本不想下载这种安装文件,但脚本文件总是执行出错,原因没具体深究。这种安装文件安装后会创建六个库AdventureWorks、AdventureWorks2008、AdventureWorksDW、Ad ......
SQL 2005 的存储过程和触发器调试大法(原创)
www.chengchen.net 程晨
昨天晚上我找遍了互联网也没有发现关于SQL2005存储过程和触发器的调试方法,研究到凌晨2点多钟,终于找到方法了,不干独享,拿出来分享。如果要转载,请保留版权,谢谢!
&nbs ......
TEMPDB不支持自动压缩,且它的数据库和文件压缩能力是有限制的;
如不得不压缩TEMPDB的大小,建议使用离线功能,如下操作:
1.停止SQL SERVER服务;
2.找到sqlservr.exe在磁盘中的位置;
3.使用sqlservr.exe输入命令sqlservr -c -f,这样启动SQL SERVER时,TEMPDB的大小能够保持最小;
4.使用TSQL命令:ALTER DATA ......
第一步, 在收缩前先查看日志的大小:
SELECT *
from sysfiles
WHERE name LIKE ' % LOG %'
GO
第二步, 把数据库的恢复模式设成”简单”:
ALTER DATABASE 库名 SET RECOVERY SIMPLE
GO
第三步, 运行checkpoint指令, 把dirty page写进数据库:
CHECKPOINT
GO
第四步, 截断日志:
BACKUP ......