資料庫分割槽

2021-10-03 21:04:31 字數 1869 閱讀 7651

分割槽:就是把一張表的資料分成n個區塊

資料分割槽是一種物理資料庫的設計技術,它的目的是為了在特定的sql操作中減少資料讀寫的總量以縮減響應時間。

分割槽並不是生成新的資料表,而是將表的資料均衡分攤到不同的硬碟,系統或是不同伺服器儲存介子中,實際上還是一張表。

特性:分割槽能夠提高併發性和並行性

從而增強系統架構的可伸縮性

迴圈分割槽:不受資料影響的內部機制,分割槽定義為各個磁碟的儲存區域,可以看做是隨意散布資料的機制,保持帶來的磁碟 i/o 操作的平衡

分割槽的實現方式

雜湊分割槽:把不同的列隨機平均的分布到不同的物理環境,達到備份和恢復(寫 undo 和 redo檔案)效率高,降低錯誤回滾壓力(為了管理)

範圍分割槽:把字段的值分布到乙個物理範圍,這個範圍是你在建立分割槽時指定的分割槽鍵決定的。這種分割槽方式是最為常用的

列表分割槽:把不同的列存到不同的物理環境,某列的值只有幾個,容易按值進行分割槽

來自 note :資料越聚集,檢索效率越高,最多的是按時間來進行滑動視窗的分割槽。

小資料量分割槽會降低併發的訪問效能,大資料量 —— 分割槽對併發的影響遠小於查詢帶來的效率。

滑動視窗:按照時間分割槽

可以使得最常使用到的資料被聚集在一起,這樣可以提高檢索效率。絕大部分銀行系統都是針對最近的資料加以訪問

可以把最需要的資料(當月、當前的資料)放到最快的物理裝置當中,通過物理的部署狀況來提高查詢效率

表分割槽:當表中的資料量不斷增大,查詢資料的速度就會變慢,應用程式的效能就會下降,這時就應該考慮對錶進行分割槽。表進行分割槽後,邏輯上表仍然是一張完整的表,只是將表中的資料在物理上存放到多個表空間(物理檔案上),利於高速檢索,查詢資料時,不至於每次都掃瞄整張表。 (注:表空間:是乙個或多個資料檔案的集合,所有的資料物件都存放在指定的表空間中,但主要存放的是表, 所以稱作表空間。)

優點:改善查詢效能:對分割槽物件的查詢可以僅搜尋自己關心的分割槽,高速檢索。

增強可用性:如果表的某個分割槽出現故障,表在其他分割槽的資料仍然可用;

維護方便:如果表的某個分割槽出現故障,需要修復資料,只修復該分割槽即可;

均衡 i/o:可以把不同的分割槽對映到磁碟以平衡 i/o,改善整個系統效能。

分割槽缺點

分割槽表相關:已經存在的表沒有方法可以直接轉化為分割槽表。

除了堆檔案之外的任何儲存方法,都會帶來複雜性

選錯儲存方式會帶來大幅度的效能降低

大資料量的併發寫入更新效率較低

從本質上來說降低了併發的個數,但是在資料量非常龐大的情況下,降低併發所帶來的缺陷遠遠小於分割槽所提高的效能

由於強制的資料聚合可能會導致其他資料的分散,所以不同的查詢請求也可能會形成效能上的矛盾

分割槽的最佳方法

按什麼字段進行分割槽要整體考慮,因為:更新分割槽鍵會引起移動資料,應該避免這麼做。

例如:實現服務佇列,型別(t1..tn),每乙個型別三種狀態(w|p|d)等待,處理,結束狀態

分割槽:按照請求型別分割槽,分成(t1.。tn)個分割槽:如果有 p1--pn 個程序來請求,可以有 n 的併發,併發壓力均勻的分散到不同的分割槽,併發程序數可控制的。

按照狀態來分割槽:資料分成三個區域 w,p,d,允許分割槽鍵的移動,記錄可以跨分割槽移動,提高處理效率。 將所有 w 狀態的放到 w 分割槽, 降低了輪詢的開銷, 沒有併發問題,不需要鎖住某條記錄,讀 w 一條記錄,就刪掉,寫入 p 區分。沒有資源併發衝突。讀的程序和處理程序可以單獨處理。w 分割槽讀取在等待狀態的資料非常快, 不用檢索。

但是分割槽鍵的移動,可以降低每個分割槽對同乙個資源的競爭。

分割槽取決於:伺服器程序的數量、輪詢頻率、資料的相對流量、各型別請求的處理時間、已完成請求的移除頻率

當資料分割槽鍵均勻分布時,分割槽表查詢收益最大

資料驅動分割槽:根據乙個或多個欄位中的值來定義分割槽,是一種手工分割槽,一般叫分割槽檢視,即 mysql 中的merge table

資料庫分割槽

分割槽就是把乙個資料表的檔案和索引分散儲存在不同的物理檔案中。建立乙個user 表 以id進行分割槽 id 小於10的在user 1分割槽id小於20的在user 2分割槽 create table user id int not null auto increment,username varch...

資料庫表分割槽

create database mytest on sql server 資料庫表分割槽由三個步驟來完成 1.建立分割槽函式 2.建立分割槽架構 3.對錶進行分割槽 1.0建立表分割槽函式 create partition function mypartfunc int as range right...

資料庫分割槽操作

背景 當乙個表的資料量到了百萬,千萬級別的時候,資料讀取和資料的插入效率將會十分低下,如果還涉及到多表聯查的話,效率驚人的低下。1,分割槽 1 概念 將資料表中的資料分段劃分在不同的位置存放 位置可以是同一塊磁碟,也可以是不同的磁碟或者不同的mysql伺服器 分割槽之後,表面上還是乙個表,但是資料雜...