資料庫拆分的幾種方式

2022-08-28 22:03:21 字數 736 閱讀 9236

資料庫做拆分的幾種方式:

1.按功能劃分(垂直切分)

將不同功能相關的表放到不同的資料庫中,這樣做的好處是非常直觀。但當某一部分的功能其資料量或效能要求超出了可控的範圍,就需要繼續對其進行深入的再切分。

2.按表中某一字段值的範圍劃分(水平切分)

當伴隨著某乙個表的資料量越來越大,以至於不能承受的時候,就需要對它進行進一步的切分。一種選擇是根據key 的範圍來做切分,譬如id 為 1-10000的放到a上,id 為10000~20000的放到b。這樣的擴充套件就是可預見的。另一種是根據某一字段值來劃分,譬如根據使用者名稱的首字母,如果是a-d,就屬於a,e-h就屬於b。這樣做也存在不均衡性,當某個範圍超出了單點所能承受的範圍就需要繼續切分。還有按日期切分等等。

優點:單錶大小可控,天然水平擴充套件

缺點:無法解決集中寫入瓶頸的問題

3.基於hash的切分

所以採用這種方法推薦採用mod 2^n這種一致性雜湊

以點評統一訂單庫為例,分庫分表的方案是32*32的,即通過userid後四位mod 32分到32個庫中,同時再將userid後四位div 32 mod 32將每個庫分為32個表,共計分為1024張表。其線上部署情況為8個集群(主從),每個集群4個庫

4.基於路由表的切分

前面的幾種方式都是根據應用的資料來決定操作的,基於路由表的切分是一種更加鬆散的方法。它單獨維護一張路由表,根據使用者的某一屬性來查詢路由表決定使用哪個資料庫,這種方式是一種更加通用的方案

缺點:可能引入額外的單點

資料庫遷移幾種方式

我們常常需要對資料進行遷移,遷移到更加高階的主機上 遷移到遠端的機房上 遷移到不同的平台下 一 exp imp 這也算是最常用最簡單的方法了,一般是基於應用的owner級做匯出匯入。操作方法為 在新庫建立好owner和表空間,停老庫的應用,在老庫做exp user pwd owner file ex...

資料庫增量資料的幾種方式

a.觸發器 在要抽取的表上建立需要的觸發器,一般要建立插入 修改 刪除三個觸發器,每當源表中的資料發生變化,就被相應的觸發器將變化的資料寫入乙個臨時表,抽取執行緒從臨時表中抽取資料,臨時表中抽取過的資料被標記或刪除。觸發器方式的優點是資料抽取的效能較高,缺點是要求業務表建立觸發器,對業務系統有一定的...

資料庫的拆分

使用者主表 現在要從裡面每50w資料拆分成乙個新錶,首先查詢符合要求的使用者的資料量 得到需要建表的數量 然後用開始迴圈建表存資料 this sql select count fid from t banlong push regdev where fdevice 0 and ftoken echo...