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

首頁 > 數據庫 > SQL Server > 正文

8、SQL Server 表分區

2024-08-31 00:54:06
字體:
來源:轉載
供稿:網友
8、SQL Server 表分區

什么是表分區?表分區其實就是將一個大表分成若干個小表。表分區可以從物理上將一個大表分成幾個小表,但是邏輯上還是一個表。所以當執行插入、更新等操作的時候,不需要我們去判斷應該插入或更新到哪個表中。只需要插入大表中就可以了。SQL Server會自動的將它放在對應的表中。對于查詢也是一樣,直接查詢大表就可以了。

如何創建分區表

一、創建文件組

其實可以使用默認的PRimary組,但是為了更方便管理以及提高運行速度,所以還是應該創建幾個分組。

1、使用SSMS創建文件組

2、使用T-SQL創建文件組

--alter database <數據庫名> add filegroup <文件組名>alter database webDB add filegroup group2013alter database webDB add filegroup group2014alter database webDB add filegroup group2015

二、為文件組添加數據庫文件

1、使用SSMS添加數據庫文件

2、使用T-SQL添加數據庫文件

--alter database <數據庫名稱> add file <數據標識> to filegroup <文件組名稱>alter database webDB add file(    name='web2013',    filename='D:/web2013.ndf',    size=5mb,    filegrowth=5mb)to filegroup group2013alter database webDB add file(    name='web2014',    filename='D:/web2014.ndf',    size=5mb,    filegrowth=5mb)to filegroup group2014alter database webDB add file(    name='web2015',    filename='D:/web2015.ndf',    size=5mb,    filegrowth=5mb)to filegroup group2015

注意:盡可能的將不同的文件放在不同的硬盤分區里,或者獨立硬盤中。這樣可以加快SQL Server運行速度。

三、創建分區函數

分區函數用來告訴SQLServer用什么樣的規則進行分區,這一步必須使用T-SQL腳本來執行了。

create partition function fenqu(datetime) --分區函數名as range right  --right分區方式 邊界值去左表還是右表for values ('2014-01-01','2015-01-01') --按這些值來分區 --group2013 : 2014-01-01 之前的--group2014 : 2014-01-01 到 2014-12-31的--group2015 : 2015-01-01 之后的

四、創建分區方案

create partition scheme SchemeFenqu --分區方案名as partition fenqu    --之前創建的分區函數to(group2013,group2014,group2015) --跟放的文件組

創建完分區函數和分區方案后可以在存儲中查看

五、創建分區表

create table fenquTable(    id int identity(1,1) not null,    name varchar(20) not null,    createTime datetime not null) on SchemeFenqu(createTime) --調用分區方案

注意:不可以使用聚集索引,因為聚集索引是存在連續的物理地址中的,而表分區是將數據分別存儲在不同表中的。

至此物理上分離的,邏輯上一體的分區表就創建完了。

操作分區表

一、插入數據

--插入測試數據insert into fenquTable(name,createTime) values ('隔壁老王','2010-01-01')insert into fenquTable(name,createTime) values ('隔壁老張','2011-01-01')insert into fenquTable(name,createTime) values ('隔壁老趙','2012-01-01')insert into fenquTable(name,createTime) values ('隔壁老李','2013-01-01')insert into fenquTable(name,createTime) values ('老李兒子','2013-10-01')insert into fenquTable(name,createTime) values ('隔壁老田','2014-01-01')insert into fenquTable(name,createTime) values ('隔壁老梁','2015-01-01')insert into fenquTable(name,createTime) values ('老梁姑娘楠楠','2015-10-10')

跟插入普通表沒有任何區別,不用管他放在哪個物理磁盤上。

二、查詢數據

--查詢數據select * from fenquTable

查詢也是如此,不用考慮哪個磁盤,邏輯上都屬于同一個表,基本上看不出區別。如果需要查看哪條插入到哪個物理的分區表中,可以使用$partition函數查看。

--語法:$partition.分區函數名(表達式)--查看該表達式下有多少數據select $partition.fenqu('2015-01-01') --返回3--查看分區表明細select * from fenquTable where $partition.fenqu(createTime)=1select * from fenquTable where $partition.fenqu(createTime)=2select * from fenquTable where $partition.fenqu(createTime)=3--查看分區表中的記錄數select $partition.fenqu(createTime) as 分區 ,count(id) from fenquTable group by $partition.fenqu(createTime)

三、修改數據

select $partition.fenqu(createTime) as 分區,count(id) as 數量 from fenquTablegroup by $partition.fenqu(createTime)--分區    數量--1            5--2            1--3            2update fenquTable set createTime ='2015-01-01' where id = 1select $partition.fenqu(createTime) as 分區,count(id) as 數量 from fenquTablegroup by $partition.fenqu(createTime)--分區    數量--1            4--2            1--3            3

可以明顯看到,跟普通修改沒有區別,SQLServer可以自動幫我們重新劃分分區,將數據從第一個分區移動到第五個分區中。

普通表轉分區表

上面介紹了如何在創建表的時候進行分區,但往往我們需要的是將現有的普通表在數據保留的情況下進行分區。

普通表一般都有主鍵,同時還是聚集索引。分區是以某個字段為條件進行的,而除了這個字段其他字段是不可以創建聚集索引的。所以需要先刪除表中的聚集索引,再新建一個聚集索引。

--刪除主鍵,自動同時刪除索引alter table newTable drop constraint PK_newTable --創建主鍵,但不創建聚集索引alter table newTable add constraint PK_newTableprimary key nonclustered --非聚集(    id asc) on [primary]--然后給我們親愛的時間創建一個聚集索引create clustered index CT_newTable on newTable(createTime)on schemeFenqu(createTime) --并調用分區方案--然后再查詢分區,發現數據保留情況下,已經將數據按規則進行分區了select $partition.fenqu(createTime) as 分區,count(id) as 數量from newTable group by $partition.fenqu(createTime)

添加分區

向上面只分了3個區,而15年以后的都存在第三個分區中,到16年還是會存在這個分區中,這時候需要再新加一個16年的分區。

添加新的分區意味著要新建一個文件組和文件來存放這個分區表,然后在分區方案中用到這個文件組,最后再修改一下分區函數的規則即可。文件組和分區數量要保持一致。

--創建文件組alter database webDB add filegroup group2016--添加數據庫文件alter database webDB add file(    name='web2016',    filename='D:/web2016.ndf',    size=5mb,    filegrowth=5mb)to filegroup group2016--修改分區方案alter partition scheme SchemeFenqunext used group2016--修改分區函數alter partition function fenqu()split range('2016-01-01')--添加2016年數據insert into newTable (name,createTime) values ('16年小明','2016-03-05')--查看分區及統計select $partition.fenqu(createTime) as 分區,count(id) as 數量from newTable group by $partition.fenqu(createTime)

刪除分區

刪除分區就是將分區函數中多余的邊界值刪除。

如:2013,2014,2015,2016現在需要將13年和14年進行合并,刪除13年的分區。

--查看分區及統計select $partition.fenqu(createTime) as 分區,count(id) as 數量from newTable group by $partition.fenqu(createTime)--分區    數量--1        4--2        1--3        3--4        1--刪掉該邊界值alter partition function fenqu() merge range('2014-01-01')--再次查詢select $partition.fenqu(createTime) as 分區,count(id) as 數量from newTable group by $partition.fenqu(createTime)--分區    數量--1        5--2        3--3        1

拆分分區

有的時候某一分區中數據量過大,需要將這個分區再次拆分為多個分區,以加快訪問速度。

拆分分區的操作其實與添加分區類似,首先要添加文件組、文件、修改分區方案、修改分區函數(新增一個邊界值)。

如:2014,2015,2015年6月份以上一個 6月份一下一個。

--查看分區及統計select $partition.fenqu(createTime) as 分區,count(id) as 數量from newTable group by $partition.fenqu(createTime)--分區        數量--1            5--2            3--3            1--創建文件組alter database webDB add filegroup group2014_2015--添加數據庫文件alter database webDB add file(    name='web2014_2015',    filename='D:/web2014_2015.ndf',    size=5mb,    filegrowth=5mb)to filegroup group2014_2015--修改分區方案alter partition scheme SchemeFenqunext used group2014_2015--修改分區函數alter partition function fenqu()split range('2015-06-01')--查看分區及統計select $partition.fenqu(createTime) as 分區,count(id) as 數量from newTable group by $partition.fenqu(createTime)--分區        數量--1            5--2            2--3            1--4            1

分區表轉普通表

--修改分區函數 將邊界值都刪除alter partition function fenqu()merge range('2013-01-01')alter partition function fenqu()merge range('2014-01-01')alter partition function fenqu()merge range('2015-01-01')alter partition function fenqu()merge range('2015-06-01')select $partition.fenqu(createTime) as 分區,count(id) as 數量from newTable group by $partition.fenqu(createTime)--這時只有一個分區了--分區    數量--1        9

這樣雖然只有一個分區了,但是查看數據表存儲位置,是否進行分區:True,分區數1.

--重新建立聚集索引create clustered index CT_newTable on newTable(createTime)    with(drop_existing=on) --如果存在則刪除on [primary]

刪除分區索引后,重新建立聚集索引,這時再此查看數據表的存儲位置,是否分區:Flase。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲国产成人91精品| 亚洲欧美中文另类| 九九视频这里只有精品| 日本成人免费在线| 久久视频国产精品免费视频在线| 欧美日韩日本国产| 中文字幕一区日韩电影| 高清一区二区三区四区五区| 国内精品久久久久久影视8| 久久综合88中文色鬼| 欧美人交a欧美精品| 美女精品视频一区| 国产精品白丝jk喷水视频一区| 色先锋资源久久综合5566| 久久久久久久av| 国产精品久久婷婷六月丁香| 狠狠色狠狠色综合日日五| 欧美日韩成人黄色| 久久久久久久久久亚洲| 尤物99国产成人精品视频| 久久成人在线视频| 国产精品免费一区二区三区都可以| 日韩中文字幕在线视频| 日韩欧美在线播放| 久久久精品一区二区| 青草青草久热精品视频在线网站| 亚洲天堂成人在线视频| 中文字幕成人精品久久不卡| 亚洲国产成人久久| 国产精品夜色7777狼人| 亚洲深夜福利网站| 欧美午夜久久久| 成人久久久久爱| 97国产在线视频| 91成人免费观看网站| 最近2019好看的中文字幕免费| 亚洲精品电影在线| 国产精品99一区| 亚洲福利在线观看| 一道本无吗dⅴd在线播放一区| 中文字幕欧美亚洲| 亚洲精品91美女久久久久久久| 欧美日韩一区二区免费在线观看| 久久偷看各类女兵18女厕嘘嘘| 亚洲大胆人体视频| 亚洲无线码在线一区观看| 国自在线精品视频| 欧美色另类天堂2015| 中文字幕久精品免费视频| 欧美成人午夜视频| 亚洲第一天堂无码专区| 精品国产乱码久久久久久天美| 91精品在线一区| 色播久久人人爽人人爽人人片视av| 国产女同一区二区| 国产日韩精品综合网站| 在线观看欧美www| 亚洲激情免费观看| 欧美在线一区二区视频| 狠狠综合久久av一区二区小说| 国产成人啪精品视频免费网| 亚洲香蕉成视频在线观看| 亚洲精品国产精品国产自| 欧美黑人视频一区| 欧美日韩一区二区在线播放| 欧美激情aaaa| 中文字幕欧美精品日韩中文字幕| 91久久久久久久久久久久久| 美女撒尿一区二区三区| 欧美一区在线直播| 91成人精品网站| 国产精品白丝av嫩草影院| 91国内揄拍国内精品对白| 国产主播欧美精品| 91精品国产色综合久久不卡98| 日韩精品在线影院| 亚洲精美色品网站| 伊是香蕉大人久久| 国产精品一区二区久久久| 亚洲成年人在线| 日本视频久久久| 久久精品国产2020观看福利| 欧美性猛交xxxx乱大交3| 日韩有码在线播放| 国产狼人综合免费视频| 欧美与欧洲交xxxx免费观看| 欧美午夜美女看片| 国产精品精品一区二区三区午夜版| 欧美极品美女视频网站在线观看免费| 亚洲色图色老头| 成人a在线视频| 一区二区福利视频| 最好看的2019年中文视频| 91精品在线观看视频| 中文字幕综合在线| 亚洲欧美日韩在线一区| 一区二区三区四区在线观看视频| 亚洲女人被黑人巨大进入| 欧美另类老女人| 亚洲最大的av网站| 亚洲男人天堂古典| 国产精品一区二区三区毛片淫片| 91国产在线精品| 欧美丰满少妇xxxxx| 久久久精品2019中文字幕神马| 欧洲成人免费aa| 成人信息集中地欧美| 欧美在线亚洲在线| 亚洲天堂av在线播放| 成人国产精品久久久| 国产午夜精品理论片a级探花| 中文字幕在线观看亚洲| 欧美亚洲成人xxx| 国产成人av网址| 成人在线国产精品| 亚洲福利在线视频| 久久精品国产久精国产思思| 亚洲老头同性xxxxx| 亚洲精品成人久久| 亚洲白虎美女被爆操| 精品日韩中文字幕| 狠狠躁夜夜躁人人躁婷婷91| 亚洲国产精品va在线看黑人| 亚洲午夜精品久久久久久性色| 欧美日韩国产区| 超碰日本道色综合久久综合| 亚洲美女自拍视频| 91在线视频一区| 亚洲xxx自由成熟| 日韩电影中文字幕| 成年无码av片在线| 亚洲最新av网址| 最好看的2019年中文视频| 欧美国产激情18| 欧美怡红院视频一区二区三区| 久热精品视频在线观看一区| 久久久噜噜噜久久久| 色婷婷av一区二区三区久久| 亚洲自拍中文字幕| 中文字幕av一区中文字幕天堂| 91久久精品视频| 日韩有码片在线观看| 亚洲精品97久久| 亚洲激情视频在线| 亚洲精品视频免费在线观看| 久久久国产视频91| 久久精品久久久久久国产 免费| 在线日韩欧美视频| 中文欧美日本在线资源| 日韩av一区二区在线观看| www.欧美三级电影.com| 69久久夜色精品国产69乱青草| 亚洲毛片在线免费观看| 国产精品亚洲综合天堂夜夜| 国产精品久久久久不卡| 成人妇女免费播放久久久| 欧美日韩国产在线看| 色999日韩欧美国产| 久久国产精品久久久久久| 日韩成人av在线播放| 国产剧情日韩欧美| 久久久久国产精品一区| 亚洲视频一区二区三区| 精品露脸国产偷人在视频|