資料庫做拆分的幾種方式:
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...