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