分庫分表引起的問題

2021-10-10 17:36:15 字數 476 閱讀 5788

1)按照新舊分片規則,對新舊資料庫進行雙寫。

2)將雙寫前按照舊分片規則寫入的歷史資料,根據新分片規則遷移寫入新的資料庫。

3)將按照舊的分片規則查詢改為按照新分片規則查詢;

4)將雙寫資料庫邏輯從**中下線,只按照新的分片規則寫入資料。

5)刪除按照舊分片規則寫入的歷史資料。

常見的解決方式:

1)在多個分片表查詢後合併資料集,這種方式的效率很低。

2)記錄兩份資料,乙份按照買家維度分表,一分按照商品維度分表。

3)通過搜尋引擎解決,但如果實時性要求很高,就需要實現實時搜尋。(大資料方式來提供聚合查詢)

要避免在乙個事務中同時修改資料庫db0和資料庫db1中的表,因為操作起來很複雜,對效率也會有一定的影響。

要盡量把同一組資料放到同一臺資料庫伺服器上,不但在某些場景下可以利用本地事務的強一致性,還可以使這組資料自治。

也就是說,要避免資料庫中的資料依賴另一資料庫中的資料。

分庫分表實戰問題

1.分庫分表中水平拆分和垂直拆分的區別?水平拆分 將表資料拆分到不同的資料資料庫中。垂直拆分 把乙個大表拆成多個小表。字段進行拆分。分表 是指的是把表資料拆分到多張表裡面。range分發 每個月生成乙個新錶。如果訪問新的資料還好,但是訪問舊的資料就麻煩一些。hash分發 平均分配,但是擴容的話會比較...

mysql分表分庫實現 MySql分表分庫思路

一.資料庫瓶頸 1.1io瓶頸 第一種 磁碟讀io瓶頸,熱點資料太多,資料庫快取放不下,每次查詢時會產生大量的io 分庫和垂直分表 第二種 網路io瓶頸,請求的資料太多,網路頻寬不夠 分庫 1.2cpu瓶頸 第一種 sql問題,如sql中包含join,group by,order by,非索引字段條...

MySQL範圍分表分庫 mysql 分表分庫策略

唯一id的生成 下面列舉幾種常見的唯一id生成方案,需要滿足兩大核心需求 1.全域性唯一 2趨勢有序 1.用資料庫的auto increment 自增id 來生成,每次通過寫入資料庫一條記錄,利用資料庫id自增的特性獲取唯一,有序的id。優點 使用資料庫原有的功能,相對簡單 能夠保證唯一 能夠保證遞...