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

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

SQL Server表分區

2024-08-31 00:55:49
字體:
來源:轉載
供稿:網友
SQL Server表分區什么是表分區

一般情況下,我們建立數據庫表時,表數據都存放在一個文件里。

但是如果是分區表的話,表數據就會按照你指定的規則分放到不同的文件里,把一個大的數據文件拆分為多個小文件,還可以把這些小文件放在不同的磁盤下由多個cpu進行處理。這樣文件的大小隨著拆分而減小,還得到硬件系統的加強,自然對我們操作數據是大大有利的。

所以大數據量的數據表,對分區的需要還是必要的,因為它可以提高select效率,還可以對歷史數據經行區分存檔等。但是數據量少的數據就不要湊這個熱鬧啦,因為表分區會對數據庫產生不必要的開銷,除啦性能還會增加實現對象的管理費用和復雜性。

跟著做,分區如此簡單

先跟著做一個分區表(分為11個分區),去除神秘的面紗,然后咱們再逐一擊破各個要點要害。

分區是要把一個表數據拆分為若干子集合,也就是把把一個數據文件拆分到多個數據文件中,然而這些文件的存放可以依托一個文件組或這多個文件組,由于多個文件組可以提高數據庫的訪問并發量,還可以把不同的分區配置到不同的磁盤中提高效率,所以創建時建議分區跟文件組個數相同。

1.創建文件組

可以點擊數據庫屬性在文件組里面添加

T-sql語法:

alter database <數據庫名> add filegroup <文件組名>
---創建數據庫文件組alter database testSplit add filegroup ByIdGroup1alter database testSplit add filegroup ByIdGroup2alter database testSplit add filegroup ByIdGroup3alter database testSplit add filegroup ByIdGroup4alter database testSplit add filegroup ByIdGroup5alter database testSplit add filegroup ByIdGroup6alter database testSplit add filegroup ByIdGroup7alter database testSplit add filegroup ByIdGroup8alter database testSplit add filegroup ByIdGroup9alter database testSplit add filegroup ByIdGroup10

2.創建數據文件到文件組里面

可以點擊數據庫屬性在文件里面添加

T-sql語法:

alter database <數據庫名稱> add file <數據標識> to filegroup <文件組名稱>--<數據標識> (name:文件名,fliename:物理路徑文件名,size:文件初始大小kb/mb/gb/tb,filegrowth:文件自動增量kb/mb/gb/tb/%,maxsize:文件可以增加到的最大大小kb/mb/gb/tb/unlimited)
alter database testSplit add file (name=N'ById1',filename=N'J:/Work/數據庫/data/ById1.ndf',size=5Mb,filegrowth=5mb)to filegroup ByIdGroup1alter database testSplit add file (name=N'ById2',filename=N'J:/Work/數據庫/data/ById2.ndf',size=5Mb,filegrowth=5mb)to filegroup ByIdGroup2alter database testSplit add file (name=N'ById3',filename=N'J:/Work/數據庫/data/ById3.ndf',size=5Mb,filegrowth=5mb)to filegroup ByIdGroup3alter database testSplit add file (name=N'ById4',filename=N'J:/Work/數據庫/data/ById4.ndf',size=5Mb,filegrowth=5mb)to filegroup ByIdGroup4alter database testSplit add file (name=N'ById5',filename=N'J:/Work/數據庫/data/ById5.ndf',size=5Mb,filegrowth=5mb)to filegroup ByIdGroup5alter database testSplit add file (name=N'ById6',filename=N'J:/Work/數據庫/data/ById6.ndf',size=5Mb,filegrowth=5mb)to filegroup ByIdGroup6alter database testSplit add file (name=N'ById7',filename=N'J:/Work/數據庫/data/ById7.ndf',size=5Mb,filegrowth=5mb)to filegroup ByIdGroup7alter database testSplit add file (name=N'ById8',filename=N'J:/Work/數據庫/data/ById8.ndf',size=5Mb,filegrowth=5mb)to filegroup ByIdGroup8alter database testSplit add file (name=N'ById9',filename=N'J:/Work/數據庫/data/ById9.ndf',size=5Mb,filegrowth=5mb)to filegroup ByIdGroup9alter database testSplit add file (name=N'ById10',filename=N'J:/Work/數據庫/data/ById10.ndf',size=5Mb,filegrowth=5mb)to filegroup ByIdGroup10

執行完成后,右鍵數據庫看文件組跟文件里面是不是多出來啦這些文件組跟文件。

3.使用向導創建分區表

右鍵到要分區的表--- >> 存儲 --- >> 創建分區--- >>顯示向導視圖--- >> 下一步--- >> 下一步。。

這里舉例說下選擇列的意思:

假如你選擇的是int類型的列:那么你的分區可以指定為1--100W是一個分區,100W--200W是一個分區....

假如你選擇的是datatime類型:那么你的分區可以指定為:2014-01-01--2014-01-31一個分區,2014-02-01--2014-02-28一個分區...

根據這樣的列數據規則劃分,那么在那個區間的數據,在插入數據庫時就被指向那個分區存儲下來。

我這里選用orderid int類型 --- >>下一步--- >>

左邊界右邊界:就是把臨界值劃分給上一個分區還是下一個分區。一個小于號,一個小于等于號。

然后下一步下一步最后你會得到分區函數和分區方案。

USE [testSplit]GOBEGIN TRANSACTION--創建分區函數CREATE PARTITION FUNCTION [bgPartitionFun](int) AS RANGE LEFT FOR VALUES (N'1000000', N'2000000', N'3000000', N'4000000', N'5000000', N'6000000', N'7000000', N'8000000', N'9000000', N'10000000')--創建分區方案CREATE PARTITION SCHEME [bgPartitionSchema] AS PARTITION [bgPartitionFun] TO ([PRIMARY], [ByIdGroup1], [ByIdGroup2], [ByIdGroup3], [ByIdGroup4], [ByIdGroup5], [ByIdGroup6], [ByIdGroup7], [ByIdGroup8], [ByIdGroup9], [ByIdGroup10])--創建分區索引CREATE CLUSTERED INDEX [ClusteredIndex_on_bgPartitionSchema_635342971076448165] ON [dbo].[BigOrder] (    [OrderId])WITH (SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF) ON [bgPartitionSchema]([OrderId])--刪除分區索引DROP INDEX [ClusteredIndex_on_bgPartitionSchema_635342971076448165] ON [dbo].[BigOrder] WITH ( ONLINE = OFF )COMMIT TRANSACTION

執行上面向導生成的語句。分區完成。。

4.秀一下速度。

首先我在表中插入啦1千萬行數據。給表分啦11個分區。前十個分區里面一個是100W條數據。。

說兩句:

可見反?,F象,掃描次數跟邏輯讀取次數都是無分區表的2倍之多,但查詢速度卻是快啦不少啊。這就是分區的神奇之處啊,所以要相信這世界一切皆有可能。

分區函數,分區方案,分區表,分區索引

1.分區函數

指定分依據區列(依據列唯一),分區數據范圍規則,分區數量,然后將數據映射到一組分區上。

創建語法:

create partition function 分區函數名(<分區列類型>) as range [left/right] for values (每個分區的邊界值,....)
--創建分區函數CREATE PARTITION FUNCTION [bgPartitionFun](int) AS RANGE LEFT FOR VALUES (N'1000000', N'2000000', N'3000000', N'4000000', N'5000000', N'6000000', N'7000000', N'8000000', N'9000000', N'10000000')

然而,分區函數只定義了分區的方法,此方法具體用在哪個表的那一列上,則需要在創建表或索引是指定。

刪除語法:

--刪除分區語法drop partition function <分區函數名>
--刪除分區函數 bgPartitionFundrop partition function bgPartitionFun

需要注意的是,只有沒有應用到分區方案中的分區函數才能被刪除。

2.分區方案

指定分區對應的文件組。

創建語法:

--創建分區方案語法create partition scheme <分區方案名稱> as partition <分區函數名稱> [all]to (文件組名稱,....)
--創建分區方案,所有分區在一個組里面CREATE PARTITION SCHEME [bgPartitionSchema] AS PARTITION [bgPartitionFun] TO ([ByIdGroup1], [ByIdGroup1], [ByIdGroup1], [ByIdGroup1], [ByIdGroup1], [ByIdGroup1], [ByIdGroup1], [ByIdGroup1], [ByIdGroup1], [ByIdGroup1], [ByIdGroup1])

分區函數必須關聯分區方案才能有效,然而分區方案指定的文件組數量必須與分區數量一致,哪怕多個分區存放在一個文件組中。

刪除語法:

--刪除分區方案語法drop partition scheme<分區方案名稱>
--刪除分區方案 bgPartitionSchemadrop partition scheme bgPartitionSchema1

只有沒有分區表,或索引使用該分區方案是,才能對其刪除。

3.分區表

創建語法:

--創建分區表語法create table <表名> (  <列定義>)on<分區方案名>(分區列名)
--創建分區表create table BigOrder (   OrderId              int                  identity,   orderNum             varchar(30)          not null,   OrderStatus          int                  not null default 0,   OrderPayStatus       int                  not null default 0,   UserId               varchar(40)          not null,   CreateDate           datetime             null default getdate(),   Mark                 nvarchar(300)        null)on bgPartitionSchema(OrderId)

如果在表中創建主鍵或唯一索引,則分區依據列必須為該列。

4.分區索引

創建語法:

--創建分區索引語法create <索引分類> index <索引名稱> on <表名>(列名)on <分區方案名>(分區依據列名)
--創建分區索引CREATE CLUSTERED INDEX [ClusteredIndex_on_bgPartitionSchema_635342971076448165] ON [dbo].[BigOrder] (    [OrderId])WITH (SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF) ON [bgPartitionSchema]([OrderId])

使用分區索引查詢,可以避免多個cpu操作多個磁盤時產生的沖突。

分區表明細信息

這里的語法,我就不寫啦,自己看語句分析吧。簡單的很。。

1.查看分區依據列的指定值所在的分區

--查詢分區依據列為10000014的數據在哪個分區上select $partition.bgPartitionFun(2000000)  --返回值是2,表示此值存在第2個分區

2.查看分區表中,每個非空分區存在的行數

--查看分區表中,每個非空分區存在的行數select $partition.bgPartitionFun(orderid) as partitionNum,count(*) as recordCountfrom bigordergroup by  $partition.bgPartitionFun(orderid)

3.查看指定分區中的數據記錄

---查看指定分區中的數據記錄select * from bigorder where $partition.bgPartitionFun(orderid)=2

結果:數據從1000001開始到200W結束

分區的拆分與合并以及數據移動

1.拆分分區

在分區函數中新增一個邊界值,即可將一個分區變為2個。

--分區拆分alter partition function bgPartitionFun()split range(N'1500000')  --將第二個分區拆為2個分區

注意:如果分區函數已經指定了分區方案,則分區數需要和分區方案中指定

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲品质视频自拍网| 精品无人区乱码1区2区3区在线| 欧美大全免费观看电视剧大泉洋| 久久久久久久国产精品| 羞羞色国产精品| 欧美性xxxx极品hd满灌| 精品女同一区二区三区在线播放| 一级做a爰片久久毛片美女图片| 97在线免费观看| 成人精品视频99在线观看免费| 精品成人av一区| 久久亚洲精品中文字幕冲田杏梨| 奇米成人av国产一区二区三区| 国产综合福利在线| 在线免费观看羞羞视频一区二区| 久久91亚洲精品中文字幕| 在线观看精品国产视频| 日韩极品精品视频免费观看| 亚洲精品日韩欧美| 亚洲免费伊人电影在线观看av| 国产精品极品美女粉嫩高清在线| 国产69久久精品成人| 亚洲欧美日韩天堂一区二区| 日韩精品日韩在线观看| 国产免费一区二区三区在线观看| 国产女人精品视频| 欧美性一区二区三区| 国产精品1区2区在线观看| 亚洲影影院av| 欧美最顶级的aⅴ艳星| 最近2019中文字幕大全第二页| 亚洲iv一区二区三区| 欧美成人国产va精品日本一级| 川上优av一区二区线观看| 日韩电影中文字幕一区| 26uuu亚洲伊人春色| 色老头一区二区三区在线观看| 8090成年在线看片午夜| 国产不卡精品视男人的天堂| 亚洲欧美精品在线| 国产婷婷97碰碰久久人人蜜臀| 韩国三级日本三级少妇99| 亚洲欧美日韩精品久久奇米色影视| 日韩av免费观影| 欧美日韩999| 亚洲精品一区在线观看香蕉| 亚洲成av人片在线观看香蕉| 久久99久国产精品黄毛片入口| 97欧美精品一区二区三区| 中文字幕欧美专区| 精品国产自在精品国产浪潮| 亚洲精品国产精品国自产在线| 国产精品青草久久久久福利99| 91精品视频在线免费观看| 日韩欧美极品在线观看| 久久国产精品久久国产精品| 蜜臀久久99精品久久久久久宅男| 亚洲欧美在线一区| 久久夜色精品亚洲噜噜国产mv| 亚洲女人天堂色在线7777| 欧美诱惑福利视频| 这里只有精品在线观看| 国产精品久久久久高潮| 国产成人高清激情视频在线观看| 欧美裸体xxxxx| 亚洲激情视频在线观看| 中文字幕在线看视频国产欧美在线看完整| 97av在线播放| 日韩中文字幕网址| 国产成人精品久久亚洲高清不卡| 这里只有精品视频在线| 亚洲成人久久久久| 97av在线影院| 国产自产女人91一区在线观看| 亚洲电影成人av99爱色| 亚洲美女av在线| 欧美精品福利在线| 欧美精品性视频| 国产精品老女人视频| 欧美激情一区二区三区成人| 欧美成人精品不卡视频在线观看| 亚洲国产天堂久久综合| 欧美激情一二三| 欧美猛交ⅹxxx乱大交视频| 欧美在线激情网| 久久综合伊人77777蜜臀| 日本老师69xxx| 国产精品一区二区久久| 国产精品2018| 国产精品久久精品| 亚洲成人黄色网址| 亚洲精品久久久一区二区三区| 国产欧美一区二区三区四区| 亚洲人成电影网站色| 欧美电影免费观看高清| 日韩大胆人体377p| 日韩中文av在线| 九九精品在线观看| 国产精品成人国产乱一区| 成人午夜激情免费视频| 午夜精品国产精品大乳美女| 国产亚洲成精品久久| 国产深夜精品福利| 欧美久久精品午夜青青大伊人| 久久99精品视频一区97| 777777777亚洲妇女| 国产精品欧美一区二区三区奶水| 国产成人激情视频| 亚洲人成网在线播放| 精品国产老师黑色丝袜高跟鞋| 日本最新高清不卡中文字幕| 国产精品va在线播放| 日韩精品视频在线观看网址| 亚洲国产成人爱av在线播放| 亚洲v日韩v综合v精品v| 成人xxxx视频| 国产美女精品视频免费观看| 国产精品久久久久久久av大片| www.久久久久久.com| 日韩欧美中文字幕在线观看| 激情成人在线视频| 国产精品免费一区二区三区都可以| 伊人青青综合网站| 日韩av毛片网| 日韩欧美成人区| 欧美裸体xxxxx| 国产欧美在线播放| 日韩美女av在线免费观看| 精品久久久久久电影| 精品日本美女福利在线观看| 国产一区二区三区在线观看视频| 日本精品性网站在线观看| 精品久久久久久久久中文字幕| 亚洲一区二区黄| 国产精品美女免费视频| 欧洲美女7788成人免费视频| 国产精品一区二区久久久| 国产精品com| 久久综合五月天| 久久久久久久国产精品视频| 91影院在线免费观看视频| 亚洲欧美一区二区精品久久久| 亚洲第一区在线| 成人网址在线观看| 精品小视频在线| 色视频www在线播放国产成人| 黑人狂躁日本妞一区二区三区| 亚洲美女自拍视频| 国产日韩一区在线| 国产精品678| 97视频在线观看网址| 久久久免费在线观看| 欧美在线激情网| 热久久美女精品天天吊色| 亚洲成人av资源网| 午夜精品视频网站| 国产在线不卡精品| 欧美高清在线视频观看不卡| 国产+人+亚洲| 不卡毛片在线看| 久久久精品久久久| 日韩麻豆第一页| 欧美成人午夜免费视在线看片| 国产一区二区三区在线播放免费观看|