天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

SQL Server 2005 自動化刪除表分區設計方案

  一、目的

在前面的文章中我已經介紹了SQL Server 合并(刪除)分區解惑 SQL Server 2005 分區模板與實例SQL Server 動態生成分區腳本,這篇文章就是在上面3篇文章衍生出來的。

我們的服務器的數據已經有了800G,并且每天進數據大概有120W條記錄(數據空間大概為7G),而服務器現在已經沒有太多的磁盤空間了,面對這樣的問題,一般都是使用交換表分區來快速刪除數據,并使用之前的分區來存放新進的數據,如果每次都人工的話就太麻煩了,所以我對這個如何進行交換分區刪除數據來清理磁盤空間做成了自動化。希望大家拍磚。 

  二、分析與設計思路

分區特點:分區使用了自增ID作為分區字段;分區的索引進行存儲位置對齊;

設計步驟1:表分區已經確定了各個分區值,我們就用一個表保存可能存在的分區值,并插入到表中,當達到預警值(Change_Value)時,我們就執行交換分區;

設計步驟2:使用一個存儲過程來完成交換分區;

1)     創建一個臨時表

2)     交換分區數據

3)     刪除臨時表

4)     修改分區方案

5)     修改分區函數

設計步驟3:使用作業定時執行存儲過程,實現自動化;

  三、參考腳本

下面是創建表的腳本和執行交換分區的存儲過程,希望對你有幫助。

View Code
CREATE TABLE [dbo].[PartitionManage](
[Id] [int] IDENTITY(1,1) NOT NULL,
[Change_Value] [int] NULL,
[Part_Value] [int] NULL,
[IsDone] [bit] NULL,
CONSTRAINT [PK_PartitionManage] PRIMARY KEY CLUSTERED
(
[Id] ASC
)
WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
)
ON [PRIMARY]

--插入數據
declare @i int
declare @maxValue int
set @i=10
set @maxValue=100
while @i <= @maxValue
begin
insert into dbo.PartitionManage values(@i-4,@i,0)
set @i = @i + 10
end

-- =============================================
--
Author: <Viajar>
--
Create date: <2011.02.22>
--
Description: <分區管理>
--
=============================================
CREATE PROCEDURE [dbo].[sp_PartitionManage]
AS
BEGIN
DECLARE @Max_value INT
DECLARE @Change_value INT
DECLARE @PARTITION_value INT
SELECT @Max_value = MAX(Id) FROM [dbo].[Archive]
SELECT TOP 1 @Change_value = Change_Value,@PARTITION_value= Part_Value
FROM [dbo].[PartitionManage] WHERE IsDone = 0
IF(@Change_value <= @Max_value)--判斷是否需要整理分區
BEGIN
--創建一個臨時表
DECLARE @sql VARCHAR(MAX)
SET @sql = '
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N
''[dbo].[Temp_Archive]'') AND type in (N''U''))
BEGIN
DROP TABLE [dbo].[Temp_Archive]
END
'
EXEC (@sql)
SET @sql = '
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N
''[dbo].[Temp_Archive]'') AND type in (N''U''))
BEGIN
CREATE TABLE [dbo].[Temp_Archive](
[Id] [int] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL,
[SiteId] [int] NULL,
[Title] [nvarchar](4000) NULL,
[Author] [nvarchar](4000) NULL,
[Content] [nvarchar](max) NULL,
CONSTRAINT [PK_Temp_Archive] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH( PAD_INDEX = ON, FILLFACTOR = 100, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [Sch_Archive_Id](Id)
) ON [Sch_Archive_Id]([Id])
END
'
EXEC (@sql)

--交換分區數據
DECLARE @Min_Id INT
DECLARE @PARTITION_num INT
SELECT @Min_Id = MIN(Id) FROM [dbo].[Archive]
SELECT @PARTITION_num = [Archives].$PARTITION.Fun_Archive_Id(@Min_Id);
ALTER TABLE [dbo].[Archive] SWITCH PARTITION @PARTITION_num TO [dbo].[Temp_Archive] PARTITION @PARTITION_num

--刪除臨時表
DROP TABLE [dbo].[Temp_Archive]

--修改分區方案
DECLARE @PARTITION_string varchar(50)
SET @PARTITION_string = 'FG_Archive_Id_' + RIGHT('0' + CONVERT(NVARCHAR,@PARTITION_num),2)
SET @sql = 'ALTER PARTITION SCHEME [Sch_Archive_Id] NEXT USED ['+@PARTITION_string+']'
EXEC (@sql)

--修改分區函數
SET @sql = 'ALTER PARTITION FUNCTION Fun_Archive_Id() SPLIT RANGE ('+CONVERT(VARCHAR(50),@PARTITION_value)+')'
EXEC (@sql)

--更新表
UPDATE [dbo].[PartitionManage] SET IsDone = 1 WHERE Change_Value = @Change_value
END
END

it知識庫SQL Server 2005 自動化刪除表分區設計方案,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 欧美一区二区视频在线观看 | 亚洲精品一区三区三区在线观看 | 秋霞电影网午夜一级鲁丝片 | 国产精品国产三级国产an | 二色AV天堂在线 | av无码在线日本天堂 | 97成人精品视频在线播放 | 国产精品人妻无码久久久蜜桃 | 精品国产一区二区三区久久影院 | 久久夜色精品国产亚州AV卜 | 国产自产视频在线观看香蕉 | 桃花在线视频观看免费 | 老板揉搓秘书丰满大乳 | 欧美精品久久久久久久久大尺度 | 欧美乱码伦视频免费66网 | 久久综合给合久久狠狠狠… | 国产成人无码WWW免费视频在线 | 小向美奈子厨房magnet | 免费无遮挡又黄又爽网站 | 亚洲中文字幕一二三四区苍井空 | 国产欧美日韩网站 | 成人影院久久久久久影院 | 亚洲AV蜜桃永久无码精品无码网 | 中国女人hd| 国产成人精品久久一区二区三区 | 亚洲一卡二卡三卡四卡2021麻豆 | 久久99国产精品二区不卡 | yw193龙物免费官网在线 | 久久亚洲精品AV无码四区 | 色橹橹欧美在线观看视频高清 | 亚洲欧美日韩中字视频三区 | 午夜国产在线观看 | 最美白嫩的极品美女ASSPICS | 国产乱人精品视频AV麻豆 | 国产成人mv 在线播放 | 美女的jj| 亚洲无遮挡 | 在线观看免费小视频 | youjizz护士| 国产偷国产偷亚洲高清人乐享 | 果冻传媒APP免费网站在线观看 |