日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747


數據庫表分區是怎么回事?

 

 

大家好,這一期呢,我們來說一下,數據庫表索引的分區。講解這個問題,對于不同的數據庫可能有一些技術細節上的不同,因此我們以某個數據庫比如sql server為例來探討這個問題。

分區后的數據和索引分散到多個文件組里面,因此可以說這些數據是平行并列分布的,每組中的行都對應特定的那個分區。這些索引和表的分區都必須存在一個數據庫里面。因此,在外部程序看來,不管內部有多少個分區,在外面看來就是一個數據表或者索引

那么表或者索引的分區有什么好處呢?好處主要是兩個方面,一個是管理起來比較容易,另一個方面是性能上更好一些。

相較于訪問整表而言,訪問某個分區的數據當然更快更有效率

我們設想一下有這么一個案例,有一個表它有多個分區,這些分區對應的都是不同的文件組,而這些文件組呢又會分散到不同的硬盤上。

如果我們在排序的時候,一個硬盤一個硬盤的去訪問的話,性能上就會很低

改善性能的話,我們可以使用RAID對分散到多個硬盤上的數據文件,同時進行訪問。

再來說一下數據加鎖的情況。在有多個分區的情況下,我們只需要對某個分區進行加鎖,而不需要對整張表進行加鎖,這樣也可以提高操作的效率。這要在創建表的時候,修改表的屬性,把lock_escalation這個選項設置為Auto

下面是數據分區的幾個重要概念。

首先是分區函數。分區函數用來定義如何進行分區。首先它定義了我們需要分多少個區。這些區的邊界在哪里。打個比方說, 一張用戶表中包含了用戶的注冊時間,注冊地域等等信息。那我們可以以時間為參考創建分區。可以以月為單位或者以年為單位進行分區,這主要取決于你到底有多大的數據量。在這種情況下,時間,也就是某個月的起始與終止,或者某個年的起始與終止,作為數據邊界的參考。

其次是分區列。分區列會被上面的分區函數拿來用作進行表和索引的分區。這個列必須被明確的標注為persisted。 理論上講所有可以用作索引定義的列都可以當做分區列

再次就是對應的索引。索引和原始表的分區函數,必須滿足如下條件, 分區函數的參數必須具有相同的數據類型他們必須具有相同數量的分區,他們必須具有相同的數據邊界

通俗的講,數據進行了分區,索引的分區必須跟數據的分區進行對應,這樣才可以提高效率

簇索引進行分區。當簇索引的鍵值并非唯一的時候,簇索引的鍵值并不需要指定包含分區列,在這種情況下,sql server 會缺省的把分區列添加到簇索引的鍵值中。如果簇索引的鍵值是唯一的,你必須顯性的指定簇索引的鍵值包含分區列

對非簇索引進行分區。當對于一個鍵值唯一的非簇索引進行分區時索引鍵值必須包含分區列當索引值不唯一時,數據庫會缺省的讓索引鍵值包含分區列

接下來說一下非對應索引的情況。這種索引主要是獨立于相關的數據表之外。主要是兩種情況,一是這種索引有獨立的分區定義,二是這種索引被放置在一個單獨的文件組中。這種索引在如下情況下非常有用:

數據源表沒有分區

索引鍵是唯一的,并且不包含分區列

. 你會在數據源表上進行非常復雜的多表聯合操作

性能的考量上。并不是說分區越多,性能就越好。這些分區都會影響到內存的消耗,CPU的繁忙程度。所以你在使用分區的時候,要找到你的平衡點

具體的參數參考可以查找對應數據庫的開發文檔

以上是我對這個話題一點心得看法。僅供參考,歡迎討論, 歡迎拍磚。

分享到:
標簽:分區 數據庫
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定