後端開發人員對資料庫分割槽技術的了解

2021-09-02 14:51:15 字數 2011 閱讀 8276

簡要說明本技術是什麼,有什麼用,分類及優勢;可以讓你快速對此技術有個簡而精的了解

資料庫表分割槽是一種物理資料庫設計技術;

就是將乙個資料量比較大的表,用某種方法把資料從物理上分成若干個小表來儲存,從邏輯來看還是乙個大表;

主要目的是為了在特定的sql操作中減少資料讀寫的總量以縮減響應時間。

分割槽主要有兩種形式:水平分割槽(row行),垂直分割槽(column列)

水平分割槽(horizontal partitioning)

對錶的行進行分割槽,表中一行資料是乙個完整的個體,一行或多行資料組成乙個分割槽;

例:乙個包含一年記錄的訂單表可以從時間上分為12個分割槽,每個分割槽包含乙個月的記錄。(通過某個表字段列來分割)

垂直分割槽(vertical partitioning)

通過對錶的垂直(列)劃分來減少目標表的寬度,使某些特定的列被劃分到特定的分割槽;

表中每一列是乙個完整的個體,乙個或多個列組成乙個分割槽。

例:乙個包含了 clob(大文字)字段型別表,而且這個列又不經常被訪問,這時候可以劃分到另乙個分割槽,在保證它們資料相關性的同時還能提高訪問速度。

舉例說明:有張user表中現在有5000w條資料,主鍵id和crt_time建了索引,根據建立時間分成100個分割槽,(假設根據時間均勻分布)每個分割槽約50w資料

insert

update

delete

select

操作新增一條資料,帶id和crt_time

更新一條資料by id

刪除一條資料 by id

查詢  帶crt_time

分割槽前更新全表crt_time索引5000w

根據主鍵id查詢5000,命中後更新

根據主鍵id查詢5000,命中後刪除,更新全表id索引,全表crt_time索引

對5000w資料條件查詢

分割槽後根據crt_time命中分割槽,更新分割槽crt_time索引50w

根據主鍵id查詢5000,命中後更新

根據主鍵id查詢5000,命中後刪除,更新全表id索引,分割槽crt_time索引

根據crt_time命中分割槽,對分割槽的50w條資料條件查詢

提公升crt_time索引更新總數,由5000w減少到50w

無crt_time索引更新總數,由5000w減少到50w

掃瞄資料由5000w收斂到50w

索引維護呈數量級的下降,提高查詢效率

——sql語句一定要帶分割槽字段,這樣資料庫可以根據分割槽欄位把sql快速收斂到目標分割槽,如果不攜帶分割槽字段相當於全表掃瞄

——預設情況下,oracle的分割槽表對於分割槽欄位是不允許進行update操作的,如果有對分割槽字段行進update,就會報錯(參照參考文章)

1、效能的提公升(increased performance)

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

2)降低索引的維護壓力,更新或新增一條資料只需維護其所在分割槽的索引,其他分割槽不做改變;

3) 均衡i/o:可以把不同的分割槽對映到磁碟以平衡i/o,改善整個系統效能;如果把這些分割槽建立在不同的磁碟上,還可以同時對多個分割槽同時io提高效率(單執行緒變多執行緒)。

還有諸如寫操作的鎖操(如果不更新全域性索引欄位如主鍵id,則鎖的是分割槽表,對其他分割槽無影響)作等,都會帶來很多顯然的好處

2、對資料管理的簡化

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

2) 維護方便:如果表的某個分割槽出現故障,需要修復資料,只修復該分割槽即可(分割槽表可以單獨建立維護索引);

優勢總結

參考文章

理論mysql表分割槽

oracle資料庫分區分表以及讀寫分離

ora-14402: 更新分割槽關鍵字列將導致分割槽的更改

資料庫分割槽、分表、分庫、分片

開發人員常用的Oracle技術

參考 1 將資料庫test完全匯出,使用者名稱system 密碼manager 匯出到d daochu.dmp中 expsystem manager test file d daochu.dmp full y 2 將資料庫中system使用者與sys使用者的表匯出 expsystem manager...

java開發人員需要熟知的技術

微服務架構主要有 spring cloud dubbo dubbox等,以 dubbo佔比最高,可達26 使用rpc框架的程式設計師中,使用dubbo的人數佔比最高,其次為 dubbox grpc hessian也具有一定的使用比例。多數程式設計師在工作中使用的開發技術為許可權管理和訊息佇列。1 4...

後端 Java 開發人員使用Redis時的注意事項

後端開發人員在使用redis時的注意事項,我們分為設計階段和使用階段來講,先講設計階段。設計階段 1.快取資料篩選 我們知道redis是乙個快取資料庫,他的資料都是存放在記憶體中的,所以能夠實現高效的訪問和寫入,但記憶體單位的高昂代價注定了其難以取代磁碟,作為資料的最終儲存介質。使用快取最重要的作用...