大數據處理是一個頭疼的問題,特別當達不到專業DBA的技術水準時,對一些數據庫方面的問題感到無賴。所以還是有必要了解一些數據庫方面的技巧,當 然,每個人都有自己的數據庫方面的技巧,只是八仙過海,所用的武功不同而已。我把我最常用的幾種方式總結來與
大數據處理是一個頭疼的問題,特別當達不到專業DBA的技術水準時,對一些數據庫方面的問題感到無賴。所以還是有必要了解一些數據庫方面的技巧,當 然,每個人都有自己的數據庫方面的技巧,只是八仙過海,所用的武功不同而已。我把我最常用的幾種方式總結來與大家分享,大家還有更多的數據庫設計和優化的 技巧,盡量的追加到評論中,有時一篇完整的博客評論比主題更為精彩。
方法1:采用表分區技術。
第一次聽說表分區,是以前的一個oracle培訓。oracle既然有表分區,就想到mssql是否有表的分區,當時我回家就google了一把,資料還是有的,在這我兒只是再作一次推廣,讓更多的人了解和運用這些技術。
表分區,就是將一個數據量比較大的表,用某種方法把數據從物理上分成若干個小表來存儲,從邏輯來看還是一個大表。首先來個結構圖:
上圖雖然不能很清晰的表達表分區的執行過程,但是可以看出表分區要用到那些對象,比如數據文件,文件組,分區方案,分區函數等。
我們以一個用戶表(TestUser)為例,假設這個表準備用來存儲中國部分公民的數據,每條數據記錄著每個人所屬的省份(Area),以及每個人的姓名(UserName),如下圖所示。當數據量達到1千萬的時候,查詢就比較慢了,這時候的數據優化就迫在眉睫。
在優化之前,根據數據的結構,讀寫操作等,肯定會提出若干個解決方案。在這兒就以分區表的方案來優化數據庫的查詢,這兒以區域來分別存儲數據,比如 廣東的公民存放在AreaFile01.MDF文件中,湖南的公民存放在AreaFile02.MDF的文件中,四川的公民存放在 AreaFile03.MDF的文件中,以此類推其它省份,為了實現這個功能我們就得做分區方案。在做分區方案時,首先要搞清楚分區方案要涉及到的四個對 象:文件組,文件,分區函數,分區方案。
a:文件組,用來組織數據文件(.MDF)的一個虛擬名稱,一個文件組可以添加多個數據文件(.MDF)。打開SQL管理器,找到具體的數據庫,然后右鍵【屬性】,進入到【文件組】選項卡,添加Area01,Area02,Area03,Area04四個文件組。如圖:
b:然后選擇中【文件】選項卡,添加 AreaFile01,AreaFile02,AreaFile03,AreaFile04,AreaFile05,AreaFile06六個數據文件 (.MDF),然后指定每個文件屬于那個文件組(一個文件組可以存儲多個數據文件),以及這個文件的物理路徑。在這兒大家已經看明白了,,這些數據文件,就 是物理上來分割一個數據表的數據的。也就是說一個表的數據有可能存儲在AreaFile01中,也有可能存儲在AreaFile02中,只要用某種方法來 指定他們的存儲規則就行了。
c:分區函數,就是指定數據的存儲規則。就是告訴SQL,把新增的數據如何分區。創建一個分區函數,可以用下邊的SQL語句來實現。
CREATE PARTITION FUNCTION partitionFunArea (nvarchar(50)) (,,)
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com