qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請訪問 http://qaseven.github.io/

          SQL Server中數(shù)據(jù)庫文件的存放方式

          SQL Server中數(shù)據(jù)庫文件的存放方式

            在SQL SERVER中,通過文件組這個邏輯對象對存放數(shù)據(jù)的文件進行管理。

            先來看一張圖:

            我們看到的邏輯數(shù)據(jù)庫由一個或者多個文件組構(gòu)成

            而文件組管理著磁盤上的文件.而文件中存放著SQL SERVER的實際數(shù)據(jù)。

            為什么通過文件組來管理文件

            對于用戶角度來說,需對創(chuàng)建的對象指定存儲的文件組只有三種數(shù)據(jù)對象:表,索引和大對象(LOB)

            使用文件組可以隔離用戶和文件,使得用戶針對文件組來建立表和索引,而不是實際磁盤中的文件。當(dāng)文件移動或修改時,由于用戶建立的表和索引是建立在文件組上的,并不依賴具體文件,這大大加強了可管理性。

            還有一點是,使用文件組來管理文件可以使得同一文件組內(nèi)的不同文件分布在不同的硬盤中,極大的提高了IO性能。

            SQL SERVER會根據(jù)每個文件設(shè)置的初始大小和增長量會自動分配新加入的空間,假設(shè)在同一文件組中的文件A設(shè)置的大小為文件B的兩倍,新增一個數(shù)據(jù)占用三頁(Page),則按比例將2頁分配到文件A中,1頁分配到文件B中。

            文件的分類

            首要文件:這個文件是必須有的,而且只能有一個。這個文件額外存放了其他文件的位置等信息.擴展名為.mdf

            次要文件:可以建任意多個,用于不同目的存放.擴展名為.ndf

            日志文件:存放日志,擴展名為.ldf

            在SQL SERVER 2008之后,還新增了文件流數(shù)據(jù)文件和全文索引文件。

            上述幾種文件名擴展名可以隨意修改,但是我推薦使用默認的擴展名。

            我們可以通過如下語句查看數(shù)據(jù)庫中的文件情況:

            還有一點要注意的是,如果一個表是存在物理上的多個文件中時,則表的數(shù)據(jù)頁的組織為N(N為具體的幾個文件)個B樹,而不是一個對象為一個B樹


           創(chuàng)建和使用文件組

            創(chuàng)建文件或是文件組可以通過在SSMS中或者使用T-SQL語句進行。對于一個數(shù)據(jù)庫來說,既可以在創(chuàng)建時增加文件和文件組,也可以向現(xiàn)有的數(shù)據(jù)庫添加文件和文件組.這幾種方式大同小異。下面來看一下通過SSMS向現(xiàn)有數(shù)據(jù)庫添加文件和文件組。

            首先創(chuàng)建文件組:

            文件組創(chuàng)建好后就可以向現(xiàn)有文件組中添加文件了:

            下面我們就可以通過語句將創(chuàng)建的表或者索引加入到新的文件組中了:

            使用多個文件的優(yōu)點與缺點

            通常情況下,小型的數(shù)據(jù)庫并不需要創(chuàng)建多個文件來分布數(shù)據(jù)。但是隨著數(shù)據(jù)的增長,使用單個文件的弊端就開始顯現(xiàn)。

            首先:使用多個文件分布數(shù)據(jù)到多個硬盤中可以極大的提高IO性能。

            其次:多個文件對于數(shù)據(jù)略多的數(shù)據(jù)庫來說,備份和恢復(fù)都會輕松很多.我碰見過遇到一個150G的數(shù)據(jù)庫,手頭卻沒有這么大的存儲設(shè)備…

            但是,在數(shù)據(jù)庫的世界中,每一項好處往往伴隨著一個壞處:

            顯而易見,使用多文件需要占用更多的磁盤空間。這是因為每個文件中都有自己的一套B樹組織方式,和自己的增長空間。當(dāng)然了,還有一套自己的碎片-.-但是在大多數(shù)情況下,多占點磁盤空間帶來的弊端要遠遠小于多文件帶來的好處。

            總結(jié)

            本文對SQL SERVER中文件和文件組的概念進行了簡單闡述,并在文中講述了文件和文件組的配置方式。按照業(yè)務(wù)組織好不同的文件組來分布不同的文件,使得性能的提升,對于你半夜少接幾個電話的幫助是灰常大滴:-)

          posted on 2012-06-12 09:34 順其自然EVO 閱讀(570) 評論(0)  編輯  收藏 所屬分類: 數(shù)據(jù)庫

          <2012年6月>
          272829303112
          3456789
          10111213141516
          17181920212223
          24252627282930
          1234567

          導(dǎo)航

          統(tǒng)計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 隆安县| 泾川县| 望江县| 红桥区| 清远市| 邹平县| 阿图什市| 黑河市| 云阳县| 龙海市| 博乐市| 太白县| 宿迁市| 淮北市| 茶陵县| 伊金霍洛旗| 郎溪县| 安溪县| 水城县| 抚顺市| 桃园县| 太湖县| 鱼台县| 广饶县| 白城市| 抚顺市| 谢通门县| 庆阳市| 通许县| 张家口市| 兴安盟| 工布江达县| 大姚县| 荣成市| 新闻| 修水县| 汕尾市| 新民市| 湘潭市| 张家界市| 宝清县|