亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數(shù)據(jù)庫 > SQL Server > 正文

SQL Server實現(xiàn)自動循環(huán)歸檔分區(qū)數(shù)據(jù)腳本詳解

2024-08-31 01:05:07
字體:
供稿:網(wǎng)友

概述

大家應(yīng)該都知道在很多業(yè)務(wù)場景下我們需要對一些記錄量比較大的表進(jìn)行分區(qū),同時為了保證性能需要將一些舊的數(shù)據(jù)進(jìn)行歸檔。在分區(qū)表很多的情況下如果每一次歸檔都需要人工干預(yù)的話工程量是比較大的而且也容易發(fā)生紕漏。接下來分享一個自己編寫的自動歸檔分區(qū)數(shù)據(jù)的腳本,原理是分區(qū)表和歸檔表使用相同的分區(qū)方案,循環(huán)利用當(dāng)前的文件組,話不多說了,來一起看看詳細(xì)的介紹吧。

一、創(chuàng)建測試數(shù)據(jù)

sql;">----01創(chuàng)建文件組USE [master]GOALTER DATABASE [chenmh] ADD FILEGROUP [Group1]GOALTER DATABASE [chenmh] ADD FILEGROUP [Group2]GOALTER DATABASE [chenmh] ADD FILEGROUP [Group3]GOALTER DATABASE [chenmh] ADD FILEGROUP [Group4]GOUSE [master]GOALTER DATABASE [chenmh] ADD FILE ( NAME = N'datafile1', FILENAME = N'C:/Program Files/Microsoft SQL Server/MSSQL12.MSSQLSERVER/MSSQL/DATA/datafile1.ndf' , SIZE = 8192KB , FILEGROWTH = 65536KB ) TO FILEGROUP [Group1]GOALTER DATABASE [chenmh] ADD FILE ( NAME = N'datafile2', FILENAME = N'C:/Program Files/Microsoft SQL Server/MSSQL12.MSSQLSERVER/MSSQL/DATA/datafile2.ndf' , SIZE = 8192KB , FILEGROWTH = 65536KB ) TO FILEGROUP [Group2]GOALTER DATABASE [chenmh] ADD FILE ( NAME = N'datafile3', FILENAME = N'C:/Program Files/Microsoft SQL Server/MSSQL12.MSSQLSERVER/MSSQL/DATA/datafile3.ndf' , SIZE = 8192KB , FILEGROWTH = 65536KB ) TO FILEGROUP [Group3]GOALTER DATABASE [chenmh] ADD FILE ( NAME = N'datafile4', FILENAME = N'C:/Program Files/Microsoft SQL Server/MSSQL12.MSSQLSERVER/MSSQL/DATA/datafile4.ndf' , SIZE = 8192KB , FILEGROWTH = 65536KB ) TO FILEGROUP [Group4]GO----02創(chuàng)建分區(qū)函數(shù)USE [chenmh]GOCREATE PARTITION FUNCTION [Pt_Range](BIGINT) AS RANGE RIGHT FOR VALUES (1000000, 2000000, 3000000)GO----03創(chuàng)建分區(qū)方案,分區(qū)方案對應(yīng)的文件組數(shù)是分區(qū)函數(shù)指定的數(shù)量+1CREATE PARTITION SCHEME Ps_RangeAS PARTITION Pt_RangeTO (Group1, Group2, Group3, Group4);---04創(chuàng)建表,指定的分區(qū)列的數(shù)據(jù)類型一定要和分區(qū)函數(shù)指定的列類型一致。CREATE TABLE [dbo].[News]( [id] [bigint] NOT NULL, [status] [int] NULL, CONSTRAINT [PK_News] PRIMARY KEY CLUSTERED ( [id] ASC)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [Ps_Range](id)) ON [Ps_Range](id)-----創(chuàng)建歸檔分區(qū)表CREATE TABLE [dbo].[NewsArchived]( [id] [bigint] NOT NULL, [status] [int] NULL, CONSTRAINT [PK_NewsArchived] PRIMARY KEY CLUSTERED ( [id] ASC)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [Ps_Range](id)) ON [Ps_Range](id)----插入測試數(shù)據(jù)DECLARE @id INT SET @id=1WHILE @id<5001000BEGIN INSERT INTO News VALUES(@id,@id%2) SET @id=@id+1END

sqlserver,分區(qū),sql,server自動歸檔,server,歸檔

可以看到當(dāng)前總共有4個分區(qū),每一個分區(qū)定義的范圍區(qū)間是100萬,分區(qū)4我故意多插入了200多萬的數(shù)據(jù)來驗證自動歸檔分區(qū)。

二、自動歸檔分區(qū)腳本

CREATE PROCEDURE Pro_Partition_AutoArchiveData(@PartitionTable VARCHAR(300),@SwitchTable VARCHAR(300))ASBEGINDECLARE @FunName VARCHAR(100),@SchemaName VARCHAR(100),@MaxPartitionValue sql_variant---根據(jù)歸檔表查找對應(yīng)的分區(qū)方案、分區(qū)函數(shù)、最小分區(qū)數(shù)、最大分區(qū)范圍值SELECT DISTINCT@FunName=MAX(pf.name),@SchemaName=MAX(ps.name), @MaxPartitionValue=max(isnull(prv.value,0))FROM sys.partitions p inner join sys.indexes i ON p.object_id=i.object_id and p.index_id=i.index_idinner join sys.partition_schemes ps ON i.data_space_id=ps.data_space_idinner join sys.destination_data_spaces dds ON ps.data_space_id=dds.partition_scheme_id and dds.destination_id=p.partition_numberinner join sys.data_spaces ds ON dds.data_space_id=ds.data_space_idinner join sys.partition_functions pf ON ps.function_id=pf.function_idLEFT join sys.partition_range_values prv ON pf.function_id=prv.function_id AND prv.boundary_id=p.partition_number-pf.boundary_value_on_rightLEFT join sys.partition_parameters pp ON prv.function_id=pp.function_id and prv.parameter_id=pp.parameter_idLEFT join sys.types t ON pp.system_type_id=t.system_type_id and pp.user_type_id=t.user_type_idWHERE OBJECT_NAME(p.OBJECT_ID)=@PartitionTableDECLARE @MaxId BIGINT,@MinId BIGINT,@Sql NVARCHAR(MAX),@GroupName VARCHAR(100),@MinPartitionNumber INTSET @Sql= N'SELECT @MaxId=MAX(id),@MinId=Min(id) FROM '+@PartitionTableEXEC sp_executesql @Sql,N'@MaxId BIGINT out,@MinId BIGINT out',@MaxId OUT,@MinId OUTSELECT @FunName AS FunName,@SchemaName AS SchemaName,@MaxPartitionValue AS MaxPartitionValue ,@MaxId AS MaxId,@MinId AS MinId---判斷當(dāng)前表的最大的id是否已經(jīng)在最大的分區(qū)中IF @MaxId>=@MaxPartitionValue BEGIN ----歸檔分區(qū)數(shù)據(jù),根據(jù)表的最小值找到它所屬的分區(qū). SET @Sql= N'SELECT @MinPartitionNumber=$PARTITION.'+@FunName+N'('+CONVERT(VARCHAR(30),@MinId)+N')'; EXEC sp_executesql @Sql,N'@MinPartitionNumber INT out',@MinPartitionNumber OUT SET @Sql=N'ALTER TABLE ' +@PartitionTable+ N' SWITCH PARTITION '+CONVERT(VARCHAR(10),@MinPartitionNumber)+ N' TO ' +@SwitchTable+ N' PARTITION ' +CONVERT(VARCHAR(10),@MinPartitionNumber); --PRINT @Sql EXEC (@Sql) ---修改分區(qū)方案,增加新的分區(qū)對應(yīng)的文件組,根據(jù)最小的分區(qū)id找到對應(yīng)的文件組。 SELECT  DISTINCT @GroupName=ds.name FROM sys.partitions p inner join sys.indexes i ON p.object_id=i.object_id and p.index_id=i.index_id inner join sys.partition_schemes ps ON i.data_space_id=ps.data_space_id inner join sys.destination_data_spaces dds ON ps.data_space_id=dds.partition_scheme_id and dds.destination_id=p.partition_number inner join sys.data_spaces ds ON dds.data_space_id=ds.data_space_id inner join sys.partition_functions pf ON ps.function_id=pf.function_id WHERE pf.name=@FunName AND ps.name=@SchemaName AND p.partition_number=@MinPartitionNumber SET @Sql=N'ALTER PARTITION SCHEME '+@SchemaName+N' NEXT USED '+@GroupName --PRINT @Sql EXEC (@Sql) ---修改分區(qū)函數(shù),增加新的分區(qū),增加新的分區(qū)范圍值,在現(xiàn)有的最大的值的基礎(chǔ)上加100萬(需要和現(xiàn)有的分區(qū)函數(shù)的范圍保持一致) SET @MaxPartitionValue=CONVERT(BIGINT,@MaxPartitionValue)+1000000 SET @Sql=N'ALTER PARTITION FUNCTION '+@FunName+N'('+N')'+N' SPLIT RANGE ('+CONVERT(VARCHAR(30),@MaxPartitionValue)+N')' --PRINT @Sql EXEC (@Sql) ENDEND

三、自動歸檔分區(qū)數(shù)據(jù)

1.首次測試

EXEC Pro_Partition_AutoArchiveData 'news','NewsArchived';

注意:每調(diào)用一次歸檔一個最小分區(qū)的數(shù)據(jù)。

sqlserver,分區(qū),sql,server自動歸檔,server,歸檔

sqlserver,分區(qū),sql,server自動歸檔,server,歸檔

分區(qū)表的News分區(qū)1的數(shù)據(jù)被歸檔到了NewsArchived表中,且創(chuàng)建了分區(qū)5,分區(qū)5使用的是已歸檔的分區(qū)1的文件組,達(dá)到了循環(huán)利用文件組的效果。

2.再調(diào)用一次歸檔分區(qū)腳本

sqlserver,分區(qū),sql,server自動歸檔,server,歸檔

當(dāng)分區(qū)表最大的id小于最大的分區(qū)值時自動歸檔分區(qū)腳本就不會生效。所以當(dāng)前的測試表數(shù)據(jù)還可以再歸檔分區(qū)3的數(shù)據(jù)。

3.經(jīng)過一段時間的運行歸檔數(shù)據(jù)可能是這樣的效果

sqlserver,分區(qū),sql,server自動歸檔,server,歸檔

Group1→Group4→Group1→.......

四、腳本注意事項

      1.@PartitionTable和@SwitchTable表必須使用同名的分區(qū)方案和分區(qū)函數(shù),否則@SwitchTable就需要單獨修改分區(qū)方案和函數(shù),且表結(jié)構(gòu)完全一致。

      2.歸檔的表分區(qū)列數(shù)據(jù)類型必須是INT類型,且值是自增規(guī)律.

      3.分區(qū)歸檔作業(yè)在備份作業(yè)后執(zhí)行

      4.建議使用Right分區(qū),Left分區(qū)會出現(xiàn)有的最后一個分區(qū)文件組不會循環(huán)替換,一直處于分區(qū)的最后,比如Group1,Group2,Group3,Group1,Group2,Group3,Group1,Group4。期望的應(yīng)該是Group1,Group2,Group3,Group4,Group1,Group2,Group3,Group4,Group1

      5.注意我當(dāng)前的每個分區(qū)大小是100萬和分區(qū)函數(shù)保持一致,如果范圍值不同,需要修改最末尾代碼的"修改分區(qū)函數(shù)"處代碼.

總結(jié)

當(dāng)前自動歸檔分區(qū)腳本如果要拷貝去用還是得能完全理解每一段代碼,根據(jù)自己的業(yè)務(wù)做適當(dāng)?shù)男薷?,畢竟?shù)據(jù)是無價的!??!。最后只需要創(chuàng)建一個作業(yè)定期跑作業(yè)就行,重復(fù)執(zhí)行也不影響。

好了,以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對VeVb武林網(wǎng)的支持。


注:相關(guān)教程知識閱讀請移步到MSSQL教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
国产精品免费区二区三区观看| 久久野战av| 国产精品粉嫩| 久久精品色播| 91蝌蚪国产九色| 美乳在线观看| 亚洲天堂中文字幕在线观看| 日韩一区二区免费视频| 亚洲二区中文字幕| 伊人久久婷婷色综合98网| 欧美激情在线| 91豆花视频在线播放| 日本人添下边视频免费| 欧美电影《轻佻寡妇》| 色一情一乱一乱一区91av| 国内精品国产三级国产a久久| 色妇色综合久久夜夜| 日日噜噜噜夜夜爽爽狠狠视频| 国产一区二区三区不卡在线观看| 拍拍拍999自拍偷| 五月婷婷六月香| 天堂中文av在线资源库| 色噜噜在线播放| 日本一区二区不卡在线| www污污网站在线看| 成人精品在线视频| 在线观看成人免费视频| 亚洲黄色网址在线观看| 色激情天天射综合网| 国产日韩成人内射视频| 中文字幕少妇一区二区三区| 成全电影播放在线观看国语| 国产精品久久久久7777按摩| 成人在线观看a| 丁香激情综合五月| www中文字幕| 久久久久久穴| 欧美午夜女人视频在线| 亚洲大胆av| 超免费在线视频| 日本一区二区中文字幕| 欧美高清电影在线| av资源中文在线天堂| 日韩影视高清在线观看| 波多野结衣在线观看一区二区| av在线天堂网| 国产一区二区三区成人欧美日韩在线观看| av在线电影播放| 欧美性猛交xxxx免费看久久久| 国产专区在线视频| 亚洲av无码国产精品久久| 韩国福利视频一区| 欧美gay1069大粗吊| 亚洲欧洲成视频免费观看| 色视频免费在线观看| 日本精品专区| 日韩一级片免费在线观看| 日本黄区免费视频观看| 国产精品一区二区av日韩在线| 性生活视频软件| 国产精品一区免费在线观看| 亚洲第一精品在线| 久久精品系列| 男人天堂999| 免费观影入口看日本视频| 九色porny视频在线观看| 99国产精品久久久久久久| 国产极品久久久| 97国产精品久久| av在线播放天堂| 2018中文字幕一区二区三区| 日韩精品一区二区三区中文在线| 波多野结衣视频一区| 久久久噜噜噜久久狠狠50岁| 在线成人综合色一区| 小明精品国产一区二区三区| 日韩精品一区二区三区免费观看| 成年网站在线在免费播放| 欧美成人乱码一区二区三区| 免费激情视频网站| 69夜色精品国产69乱| 老汉色影院首页| 韩国一级黄色录像| 欧美一区二区三区另类| 忘忧草在线www成人影院| 一级片黄色录像| 日本视频一二三区中文字幕| 99国产视频在线| 爽好多水快深点欧美视频| 特黄特色大片免费视频大全| 日韩免费一区二区三区在线播放| 欧美三级网址| 久久国产美女视频| 精品国产乱码久久久久久1区二区| 日韩高清不卡av| 精品国产a一区二区三区v免费| 免费a视频在线观看| 亚洲综合第一区| 免费国产黄线在线观看视频| 成人国产精品| 国产毛片在线| 夫妇露脸对白88av| 成人嫩草影院| 亚洲一区二区三区精品视频| 4438全国成人免费| 欧美日韩国产免费观看| 国产午夜一区| 99久热re在线精品996热视频| 国产亚洲人成网站在线观看| 午夜影院在线播放| 国产日韩精品中文字无码| 日本精品久久久久久久| 亚洲美女精品视频| 亚洲91av视频| 精品久久久久久久无码| 一区二区三区四区在线| 成人免费淫片95视频观看网站| 国产精品午夜视频| 精品成人久久| 国产网站麻豆精品视频| 亚洲精品成人图区| 国产精品久久久久久久久久精爆| 成人av电影观看| 日本www高清视频| 2019年精品视频自拍| 91黄色激情网站| 亚洲free嫩bbb| 精品亚洲国内自在自线福利| 亚洲精品tv久久久久久久久久| 久久精品人人爽| 99热这里只有成人精品国产| 1000精品久久久久久久久| 精品黑人一区二区三区| 欧美成人性生活视频| 久久久91精品国产| 热99精品里视频精品| 91成人天堂久久成人| 久久久久久久国产精品毛片| 免费在线看黄网址| 亚洲自拍偷拍一区二区三区| 亚洲一区二区三区午夜| 在线观看国产精品视频| 国产午夜精品在线| 佐佐木明希电影| 日韩国产美国| 在线观看日韩专区| 四虎影视2018在线播放alocalhost| 性欧美video另类hd尤物| 中文字幕欧美日韩在线不卡| 欧美亚洲大陆| 中文欧美日本在线资源| 一级特黄大欧美久久久| 久久综合福利| 精品国产一区二区三区成人影院| 亚洲成av人片在线观看香蕉| 日韩电影精品| 亚洲综合色视频在线观看| 午夜精品视频| 欧美日韩一区久久| 91国偷自产一区二区使用方法| 日韩av大片站长工具| 成年人黄视频在线观看| 久久99精品久久久久久久久久| 亚洲精品一区二三区| 蜜臀久久久99精品久久久久久| 成人一道本在线| 欧美激情视频三区| 久久爱另类一区二区小说| 国产精品白丝jk白祙喷水网站| 中文字幕免费不卡| www.在线欧美| 性一交一乱一区二区洋洋av| 最新精品在线| 欧美精品xxxxbbbb| 在线播放日韩导航| 日韩黄色小视频| 97se亚洲国产综合自在线不卡| 96sao精品免费视频观看| 一本精品一区二区三区| 成人一道本在线| 亚洲欧洲自拍| 国产精品传媒麻豆hd| 国产一区二区黄| av电影天堂一区二区在线| 在线精品视频视频中文字幕| 色姑娘综合av| 男人添女荫道口图片| 夜夜夜久久久| 中文在线观看视频| 国产在线视频91| 中文字幕成人乱码在线电影| 成人免费在线观看视频网站| 97高清免费视频| 国产精品一级视频| 国产模特精品视频久久久久| 亚洲天堂精品一区| 欧美国产精品一区二区三区| 米奇777在线欧美播放| 久久久久久久国产精品影院| 高清国语自产拍免费一区二区三区| 巨胸喷奶水www久久久免费动漫| 好看的日韩av电影| 精品在线观看国产| 国产精品4hu.www| 欧美xxxxbbbb在线播放| 国产乱码精品一区二区三| 懂色中文一区二区三区在线视频| 欧美精品卡一卡二| 熟女高潮一区二区三区| 国产老妇另类xxxxx| 四虎影院成人| 日本wwwwww| 中文字幕人妻一区二区在线视频| 亚洲欧美日韩国产中文在线| 天天做天天摸天天爽国产一区| 中国极品少妇videossexhd| 德国性xxxx| 日本在线免费观看| 久久精品国产sm调教网站演员| 欧美多人乱p欧美4p久久| 自由的xxxx在线视频| 日韩精品福利一区二区三区| www.日本久久久久com.| 少妇人妻一区二区| 野花视频免费在线观看| 91美女片黄在线观看游戏| av电影一区二区三区| 在线亚洲一区| 第84页国产精品| 国产亚洲成精品久久| 91精产国品一二三| www红色一片_亚洲成a人片在线观看_| 国产精品一二三在| 在线观看亚洲专区| 亚洲天堂av中文字幕| 久久成人麻豆午夜电影| 亚洲精品一卡二卡三卡四卡| 污污视频网站在线| 中文字幕 日韩有码| 亚洲男人天堂手机在线| 亚洲性在线观看| 交换国产精品视频一区| 欧美极品少妇全裸体| jizz内谢中国亚洲jizz| 成人蜜桃视频网站网址| 成人在线一级片| 色婷婷av一区二区三区软件| 91污片在线观看| 亚洲一区二区三区| av激情综合网| 国产精品中文字幕亚洲欧美| 国产欧美一区二区精品仙草咪| 国内一级毛片| wwwjizzjizzcom| 日日噜噜噜夜夜爽爽狠狠视频| 一区精品视频| 日韩精品久久久久久久电影99爱| 99亚洲伊人久久精品影院红桃| 伊人网综合在线| 午夜片欧美伦| 国产精品麻豆免费版现看视频| 6699嫩草久久久精品影院| 91黄视频在线观看| 日本一区二区免费高清视频| 九九综合久久| 成黄免费在线| 亚洲成人精品综合在线| 91网址在线观看精品| 高清福利在线观看| 国语精品视频| 你懂的免费在线观看视频网站| 欧美高清videos性极品| 免费成人深夜天涯网站| 精品久久久久久久久久| 日本不卡123| 伦理片一区二区三区| 欧美日韩最好看的视频| 国产精品久久久亚洲第一牛牛| 巨大荫蒂视频欧美大片| 国产精品jizz在线观看老狼| www.在线成人| 网上成人av| 国色天香一二三期区别大象| japanese在线观看| 96精品久久久久中文字幕| 日韩欧美精品一区二区综合视频| 色一情一乱一伦一视频免费看| 精品人妻久久久久一区二区三区| 蜜芽在线视频| 国产精品第四页| 成人午夜激情片| 黄色av网站在线观看| 色视频免费版高清在线观看| 国产成a人亚洲精v品在线观看| 欧美性理论片在线观看片免费| 黄色资源网久久资源365| 国产亚洲精品成人| 中文字幕综合网| 亚洲AV无码乱码国产精品牛牛| 外国成人毛片| 男女猛烈无遮挡午夜视频| 亚洲一级免费在线观看| 亚洲91在线| 少妇一级黄色片| 中文字幕日本一区二区| 欧美日韩视频专区在线播放| 高清精品一区二区三区一区| 岛国最新视频免费在线观看| 日韩亚洲不卡在线| 美女午夜精品| 国产精品亚洲综合在线观看| 91精品国产高清久久久久久91裸体| 69xxxx视频| 国产熟人av一二三区| 蜜桃传媒九九九| 亚洲三级电影全部在线观看高清| 天天综合网色中文字幕| 国产精品免费小视频| 欧美一区二区三区四区高清| 日本一区二区三区四区五区六区| 日韩伦理在线一区| 最新天堂在线视频| 日本精品600av| 天堂中文字幕一二区| 国产精品久久久久久久久久辛辛| а√天堂www在线а√天堂视频| 欧美xxxx网站| 综合激情婷婷|