1. 資料庫分區的分類
分區主要有兩種形式://這里一定要注意行和列的概念(row是行,column是列)
水平分區(Horizontal Partitioning)
這種形式分區是對表的行進行分區,通過這樣的方式不同分組裡面的物理列分割的數據集得以組合,從而進行個體分割(單分區)或集體分割(1個或多個分區)。所有在表中定義的列在每個數據集中都能找到,所以表的特性依然得以保持。
舉個簡單例子:一個包含十年發票記錄的表可以被分區為十個不同的分區,每個分區包含的是其中一年的記錄。(朋奕註:這里具體使用的分區方式我們後面再說,可以先說一點,一定要通過某個屬性列來分割,譬如這里使用的列就是年份)
垂直分區(Vertical Partitioning)
這種分區方式一般來說是通過對表的垂直劃分來減少目標表的寬度,使某些特定的列被劃分到特定的分區,每個分區都包含了其中的列所對應的行。
舉個簡單例子:一個包含了大text和BLOB列的表,這些text和BLOB列又不經常被訪問,這時候就要把這些不經常使用的text和BLOB了劃分到另一個分區,在保證它們數據相關性的同時還能提高訪問速度。
在資料庫供應商開始在他們的資料庫引擎中建立分區(主要是水平分區)時,DBA和建模者必須設計好表的物理分區結構,不要保存冗餘的數據(不同表中同時都包含父表中的數據)或相互聯結成一個邏輯父對象(通常是視圖)。這種做法會使水平分區的大部分功能失效,有時候也會對垂直分區產生影響。
2. oracle資料庫怎麼建分區
一般虧碼語法:
createtablet_test(
pk_idnumber(30)notnull,
add_date_timeDATE,
constraintPK_T_TESTprimarykey(pk_id)
)
PARTITION緩空散BYRANGE(add_date_time)
(
PARTITIONt_test_2013_lessVALUESLESSTHAN(TO_DATE('2013-01-0100:00:00','yyyy-mm-ddhh24:mi:ss'))TABLESPACETS_MISPS,
PARTITIONt_test_2013VALUESLESSTHAN(TO_DATE('2014-01-0100:00:00','yyyy-mm-ddhh24:mi:ss'))TABLESPACETS_MISPS,
PARTITIONt_test_2014VALUESLESSTHAN(TO_DATE('2015-01-01擾氏00:00:00','yyyy-mm-ddhh24:mi:ss'))TABLESPACETS_MISPS
);
3. SQL server 怎樣可以讓一個資料庫用幾個磁碟分區
向資料庫添加數據文件就行了, 可以添加多個
ALTER DATABASE 你的庫名
ADD FILE
(
NAME = Test1dat2,
FILENAME = 'x:\t1dat2.ndf', -- 設定文件在不同的磁碟分區
SIZE = 5MB,
MAXSIZE = 100MB,
FILEGROWTH = 5MB
)
一個資料庫可以由以下三種資料庫文件組成:
1.主數據文件(*.mdf)
2.次數據文件(*.ndf)
3.事務日誌文件(*.ldf)
其中主數據文件是所有資料庫文件的起點,每個資料庫有且只有一個主數據文件。
次數據文件用來保存主數據文件中容納不下的數據,可以有0個或者多個。
事務日誌文件就不說了,看名字就知道是做什麼用的。
使用create database 語句建庫的時候可以設定資料庫文件的屬性(包括文件名稱和保存位置)。
使用alter database 語句可以添加,刪除和修改資料庫文件的屬性。
4. 數據分片應遵守哪些基本原則數據分片有哪些基本類型和方法
鏈路層具有最大傳輸單元MTU這個特性,它限制了數據幀的最大長度,不同的網路類型都有一個上限值。乙太網的MTU是1500,你可以用 netstat -i 命令查看這個值。如果IP層有數據包要傳,而且數據包的長度超過了MTU,那麼IP層就要對數據包進行分(fragmentation)操作,使每一片的長度都小於或等於MTU。我們假設要傳輸一個UDP數據包,乙太網的MTU為1500位元組,一般IP首部為20位元組,UDP首部為8位元組,數據的凈荷(payload)部分預留是1500-20-8=1472位元組。如果數據部分大於1472位元組,就會出現分片現象。
分片(sharding)是資料庫分區的一種,它將大型資料庫分成更小、更快、更容易管理的部分,這些部分叫做數據碎片。碎片這個詞意思就是整體的一小部分。
Jason Tee表示:「簡言之,分片(sharding)資料庫需要將資料庫(database)分成多個沒有共同點的小型資料庫,且它們可以跨多台伺服器傳播。」
技術上來說,分片(sharding)是水平分區的同義詞。在實際操作中,這個術語常用來表示讓一個大型資料庫更易於管理的所有資料庫分區。
分片(sharding)的核心理念基於一個想法:資料庫大小以及資料庫上每單元時間內的交易數呈線型增長,查詢資料庫的響應時間(response time)以指數方式增長。
另外,在一個地方創建和維護一個大型資料庫的成本會成指數增長,因為資料庫將需要高端的計算機。相反地,數據碎片可以分布到大量便宜得多的商用伺服器上。就硬體和軟體要求而言,數據碎片相對來說沒什麼限制。
在某些情況中,資料庫分片(sharding)可以很簡單地完成。按地理位置拆分用戶資料庫就是一個常見的例子。位於東海岸的用戶被分到一台伺服器上,在西海岸的用戶被分在另一台伺服器上。假設沒有用戶有多個地理位置,這種分區很易於維護和創建規則。
但是數據分片(sharding)在某些情況下會是更為復雜的過程。例如,一個資料庫持有很少結構化數據,分片它就可能非常復雜,並且結果碎片可能會很難維護。
分片過程
對於發送端發送的每份IP數據報來說,其標識欄位都包含一個唯一值。該值在數據報分片時被復制到每個片中。標志欄位用其中一個比特來表示「更多的片」。除了最後一片外,其他每個組成數據報的片都要把該比特置1。片偏移欄位指的是該片偏移原始數據報開始處的位置。另外,當數據報被分片後,每個片的總長度值要改為該片的長度值。
最後,標志欄位中有一個比特稱作「不分片」位。如果將這一比特置1,IP將不對數據報進行分片。相反把數據報丟棄並發送一個ICMP差錯報文給起始端。
當IP數據報被分片後,每一片都成為一個分組,具有自己的IP首部,並在選擇路由時與其他分組獨立。這樣,當數據報的這些片到達目的端時有可能會失序,但是在IP首部中有足夠的信息讓接收端能正確組裝這些數據報片。
5. 如何對已經存在的數據表進行分區
過程中為SQL Server數據表劃分為三個步驟:
1)建立分區函數
2)建立分區方案
3)對表的分區
第一步:建立分區函數
分區函數定義[U]如何[/ U],也就是你想怎麼SQL Server數據分區。這里不是一個特定的表作為一個例子,但總的技術部門總結的數據。
分區指定為每個分區用分區邊界來實現。例如,假設我們有一個客戶表,其中包含所有的企業客戶信息,客戶信息與客戶的唯一標識號,客戶編號從1到100萬。我們可以使用下面的分區功能(這里稱為customer_Partfunc)把這個表分為四個分區:
CREATE PARTITION FUNCTION customer_partfunc(INT)
AS RANGE RIGHT
輸入值( 250000,500000,750000)
這些邊界劃分指定了四個分區。第一個分區包含所有值?少於25萬的記錄。第二個分區包含所有值?之間250,000和499,999的記錄。第三個分區包含所有值?500,000至749,999記錄。大於或等於750,000的所有其他記錄都包含在第四個分區中。
請注意,此示例使用「RANGE RIGHT」條款。這表明,該邊界值是分區的右側。同樣,如果您使用「RANGE LEFT」條款,那麼第一個分區將包含所有的值小於或等於25萬條記錄;?第二個分區將包含所有的值250001和500000之間的記錄,等等??
第二步:創建
分區方案
一旦如何分區功能分區後的數據完整的定義,下一步是創建一個分區方案,定義[ U],其中[/ U],這就是你要分區的數據。這是一個非常簡單的過程,例如,如果我有四個文件組,從「FG1」到「FG4」的名字,那麼你可以使用下面的分區方案:
創建分區計劃customer_partscheme
作為間隔customer_partfunc
要(FG1,FG2,FG3,FG4)
請注意,我們現在把一個分區函數連接到分區規劃,但我們還沒有連接在分區方案的任何具體的資料庫表。這是重復使用的功能函數時。我們可以利用這個功能來分區方案(或只是一個分區函數)對資料庫表的任何數據。
第三步:表已分區
建立良好的分區方案後,就可以開始對表進行分區。這是最簡單的一步,只需加上「ON」子句中的表創建語句指定表的分區方案,並申請表列的分區方案。你不需要指定分區函數,分區方案已經因為分區函數定義。
例如,假設你想使用上述的分區方案來創建一個客戶表,您需要使用以下Transact-SQL語句:
CREATE TABLE客戶(姓數據類型為nvarchar(40),姓氏為nvarchar(40),CUSTOMERNUMBER INT)
開customer_partscheme(CUSTOMERNUMBER)