MySQL系列--分庫分表

其他網址

MySQL面試題(六)數據庫的分庫分表原理詳解_數據庫_weixin_38399962的博客-CSDN博客
分庫分表實戰 - 簡書
分庫分表(1) --- 理論 - 雨點的名字 - 博客園

徹底搞清分庫分表(垂直分庫,垂直分表,水平分庫,水平分表)_數據庫_攀博分享-CSDN博客

mysql 垂直分表 實踐記錄_數據庫_NRGAGA的專欄-CSDN博客

一條數據中的字段太多,200多個,嘗試將字段全部建在一張表內,出現錯誤:

Mysql [Err] 1118 - Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535.

嘗試了網上各種辦法後依然無效,無奈考慮到垂直分表,將字段分別建立在兩張表內。
其中有幾點值得記錄:【數據持久化使用 Mybatis】

  1. 創建表:兩張表有一個取值相同的字段id:字段名可相同,也可不同,但字段值要相同;以此確定兩張表中的一條數據,
  2. 查詢時:第1 張表 Table1  左外連接(Left  Outer Join ) 第2 張表 Table2  on Table1.id = Table2.id 
  3. 新增時,判斷字段屬於哪一個表,根據字段所屬表,將數據插入到對應表內。
    (1)、要插入的數據 ,全部封裝在 一個  PG內(我自己代碼裏寫的一個鍵值對 Map,鍵:字段名,值:字段值) 
    (2)、在 Mapper 內明確好 每個表的表名,所包含的字段
    (3)、拼接好 每個表 新增數據的 SQL語句
    (4)、PG 傳入後,自動匹配字段,從而自動插入到不同的表

=============================分割線==============================    
另一個需求:由於我的數據是分批上傳,需要保留每一批上傳數據的歷史記錄,因此::

  1. 在兩個表內 都增加一個 “recordid” 字段,每一批數據一個唯一的 recordid (實質上只需要第一個表有這個字段就行,兩個表數據根據相同的 ID 關聯 ,這裏第二個表也存了recordid,有數據冗餘,只是感覺到以後會用到)。
  2. 新增一個 record 表,表內至少有一個 recordid 字段,create_time 字段,  還有其他業務的自定義字段,保存每次上傳信息。
  3. 查詢上傳記錄時,首先查詢  record 表,再從  record 表 內提取 recordid  去數據表內查詢 該批次數據。

原來沒有分庫分表,後期如何分庫分表?

現在有一個未分庫分表的系統,未來要分庫分表,如何設計纔可以讓系統從未分庫分表**動態切換**到分庫分表上? - 簡書

分庫分表的全局ID如何維護一致性?

Sharding-jdbc分庫分表實例

其他網址:

sharding-jdbc之——分庫分表實例_數據庫_冰河的專欄-CSDN博客

springboot+jpa分庫分表項目實例 - 森林木馬 - 博客園

Sharding-JDBC分庫分表從入門到精通-10-綜合案例-數據庫設計-傳智的在線視頻教程-CSDN學院

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章