資料庫分區,oracle資料庫分區
資料庫分區:
概念:以mysql為例。mysql資料庫中的資料是以檔案的形式存在磁碟上的,預設放在/mysql/data下面(可以通過my.cnf中的datadir來查看),一張表主要對應著三個檔案,一個是frm存放表結構的,一個是myd存放表資料的,一個是myi存表索引的。如果一張表的資料量太大的話,那麼myd,myi就會變的很大,尋找資料就會變的很慢,這個時候我們可以利用mysql的資料分割函數,在物理上將這一張表對應的三個檔案,分割成許多個小塊,這樣呢,我們尋找一條資料時,就不用全部尋找了,只要知道這條資料在哪一塊,然後在那一塊找就行了。如果表的資料太大,可能一個磁碟放不下,這個時候,我們可以把資料分配到不同的磁碟裡面去。分區的方式:1,橫向分區什麼是橫向分區呢?就是橫著來分區了,舉例來說明一下,假如有100W條資料,分成十份,前10W條資料放到第一個分區,第二個10W條資料放到第二個分區,依此類推。也就是把表分成了十份,根用merge來分表,有點像哦。取出一條資料的時候,這條資料包含了表結構中的所有欄位,也就是說橫向分區,並沒有改變表的結構。2,縱向分區什麼是縱向分區呢?就是豎來分區了,舉例來說明,在設計使用者表的時候,開始的時候沒有考慮好,而把個人的所有資訊都放到了一張表裡面去,這樣這個表裡面就會有比較大的欄位,如簡歷,而這些簡介呢,也許不會有好多人去看,所以等到有人要看的時候,在去尋找,分表的時候,可以把這樣的大欄位,分開來。mysql提供的分區屬於第一種。
分區優點
1,分區可以分在多個磁碟,儲存更大一點
2,根據尋找條件,也就是where後面的條件,尋找只尋找相應的分區不用全部尋找了
3,進行大資料搜尋時可以進行平行處理。
4,跨多個磁碟來分散資料查詢,來獲得更大的查詢輸送量
資料庫表分區最佳化
對SQL Server資料表進行分區的過程分為三個步驟:
1)建立分區函數
2)建立資料分割配置
3)對錶格進行分區
第一個步驟:建立分區函數
分區函數定義[u]how[/u],即你想要SQL Server如何對資料進行分區。這裡就不以某一個表格作為例子,而是總體概括分割資料的技術。
分區是通過指定每個分區的分割界線實現的。例如,假定我們有一個Customers表格,裡麵包含了企業所有的客戶的資訊,客戶資訊以唯一的客戶號進行辨識,客戶號從1到1000000。我們可以運用以下的分區函數(這裡稱之為customer_Partfunc)把這個表格平均分為四個分區:
CREATE PARTITION FUNCTION customer_partfunc (int)
AS RANGE RIGHT
FOR VALUES (250000, 500000, 750000)
這些分割界線指定了四個分區。第一個分區包含所有值小於250000的記錄。第二個分區包含所有值在250000和499999之間的記錄。而第三個分區包含所有值在500000和749999之間的記錄。其他所有大於或等於750000的記錄都包含在第四個分區裡。
注意這個例子中使用了“RANGE RIGHT”從句。這說明分界值是在分區的右邊。同樣,如果使用的是“RANGE LEFT”從句,那麼第一個分區就會包含所有值小於或等於250000的記錄;第二個分區就會包含所有值在250001和500000之間的記錄,如此類推。
第二個步驟:建立資料分割配置
一旦建立完定義如何對資料進行分區的分區函數之後,下一步就是建立一個資料分割配置,定義[u]where[/u],即你想在哪裡對資料進行分區。這是一個很直接明了的過程,例如,如果我有四個檔案組,名稱分別從“fg1”到“fg4”,那麼就可以使用以下資料分割配置:
CREATE PARTITION SCHEME customer_partscheme
AS PARTITION customer_partfunc
TO (fg1, fg2, fg3, fg4)
注意我們現在把一個分區函數串連到了資料分割配置,但是我們還沒有把資料分割配置串連到任何具體的資料庫表格。這就是重複使用功能發揮功能的時候。我們可以通過這個功能把資料分割配置(或者只是分區函數)用於資料庫表格的任何資料上。
第三個步驟:對錶格進行分區
建立好資料分割配置之後,就可以開始對錶格進行分區了。這是最簡單的一個步驟,只需要在表格建立語句中添加“ON”從句,指定表格資料分割配置和要應用該資料分割配置的表列。你不需要指定分區函數,因為資料分割配置已經定義了分區函數。
舉個例子,假設你想要用上述的資料分割配置來建立一個客戶表格,你需要使用以下Transact-SQL語句:
CREATE TABLE customers (FirstName nvarchar(40), LastName nvarchar(40), CustomerNumber int)
ON customer_partscheme (CustomerNumber)...餘下全文>>
資料庫表分區最佳化
對SQL Server資料表進行分區的過程分為三個步驟:
1)建立分區函數
2)建立資料分割配置
3)對錶格進行分區
第一個步驟:建立分區函數
分區函數定義[u]how[/u],即你想要SQL Server如何對資料進行分區。這裡就不以某一個表格作為例子,而是總體概括分割資料的技術。
分區是通過指定每個分區的分割界線實現的。例如,假定我們有一個Customers表格,裡麵包含了企業所有的客戶的資訊,客戶資訊以唯一的客戶號進行辨識,客戶號從1到1000000。我們可以運用以下的分區函數(這裡稱之為customer_Partfunc)把這個表格平均分為四個分區:
CREATE PARTITION FUNCTION customer_partfunc (int)
AS RANGE RIGHT
FOR VALUES (250000, 500000, 750000)
這些分割界線指定了四個分區。第一個分區包含所有值小於250000的記錄。第二個分區包含所有值在250000和499999之間的記錄。而第三個分區包含所有值在500000和749999之間的記錄。其他所有大於或等於750000的記錄都包含在第四個分區裡。
注意這個例子中使用了“RANGE RIGHT”從句。這說明分界值是在分區的右邊。同樣,如果使用的是“RANGE LEFT”從句,那麼第一個分區就會包含所有值小於或等於250000的記錄;第二個分區就會包含所有值在250001和500000之間的記錄,如此類推。
第二個步驟:建立資料分割配置
一旦建立完定義如何對資料進行分區的分區函數之後,下一步就是建立一個資料分割配置,定義[u]where[/u],即你想在哪裡對資料進行分區。這是一個很直接明了的過程,例如,如果我有四個檔案組,名稱分別從“fg1”到“fg4”,那麼就可以使用以下資料分割配置:
CREATE PARTITION SCHEME customer_partscheme
AS PARTITION customer_partfunc
TO (fg1, fg2, fg3, fg4)
注意我們現在把一個分區函數串連到了資料分割配置,但是我們還沒有把資料分割配置串連到任何具體的資料庫表格。這就是重複使用功能發揮功能的時候。我們可以通過這個功能把資料分割配置(或者只是分區函數)用於資料庫表格的任何資料上。
第三個步驟:對錶格進行分區
建立好資料分割配置之後,就可以開始對錶格進行分區了。這是最簡單的一個步驟,只需要在表格建立語句中添加“ON”從句,指定表格資料分割配置和要應用該資料分割配置的表列。你不需要指定分區函數,因為資料分割配置已經定義了分區函數。
舉個例子,假設你想要用上述的資料分割配置來建立一個客戶表格,你需要使用以下Transact-SQL語句:
CREATE TABLE customers (FirstName nvarchar(40), LastName nvarchar(40), CustomerNumber int)
ON customer_partscheme (CustomerNumber)...餘下全文>>