資料庫分庫分表

2021-10-11 16:11:38 字數 2580 閱讀 1612

將字段拆分出多個表

將資料拆分多個表

org.apache.shardingsphere

sharding-jdbc-spring-boot-starter

在執行sql時,按照配置的策略,動態改變表名查詢對應的資料庫表進行操作

# 多個資料庫水平分表配置

# 資料來源名稱,多資料來源以逗號分隔

spring.shardingsphere.datasource.names=datasource1,datasource2

# 資料來源 datasource1

spring.shardingsphere.datasource.datasource1.type=com.alibaba.druid.pool.druiddatasource

spring.shardingsphere.datasource.datasource1.driver-class-name=com.mysql.cj.jdbc.driver

spring.shardingsphere.datasource.datasource1.url=jdbc:mysql://localhost:3306/spring?characterencoding=utf8&usessl=false&servertimezone=gmt%2b8&rewritebatchedstatements=true

spring.shardingsphere.datasource.datasource1.username=root

spring.shardingsphere.datasource.datasource1.password=root

# 資料來源 datasource2

spring.shardingsphere.datasource.datasource2.type=com.alibaba.druid.pool.druiddatasource

spring.shardingsphere.datasource.datasource2.driver-class-name=com.mysql.cj.jdbc.driver

spring.shardingsphere.datasource.datasource2.url=jdbc:mysql://localhost:3306/spring1?characterencoding=utf8&usessl=false&servertimezone=gmt%2b8&rewritebatchedstatements=true

spring.shardingsphere.datasource.datasource2.username=root

spring.shardingsphere.datasource.datasource2.password=root

# 允許乙個實體類對應多張表

spring.main.allow-bean-definition-overriding=true

# 標準分片表配置

# 指定course表分布情況( 配置表在 哪個資料庫 的 哪些表裡 ),一共有兩個資料來源datasource1,datasource2,每個庫中有3張表course_1,course_2,course_2

spring.shardingsphere.rules.sharding.tables.course.actual-data-nodes=datasource$->.course_$->

# 分布式序列策略配置 指定course表裡的主鍵cid生成策略為snowflake

spring.shardingsphere.rules.sharding.tables.course.key-generate-strategy.column=cid # 分布式串行列名稱

spring.shardingsphere.rules.sharding.tables.course.key-generate-strategy.key-generator-name=snowflake # 分布式序列演算法名稱

# 指定分片策略-表 約定 cid%3 取模的值對應存放的表序號

spring.shardingsphere.sharding.tables.course.table-strategy.inline.sharding-column=cid

spring.shardingsphere.sharding.tables.course.table-strategy.inline.algorithm-expression=course_$->

# 指定分片策略-資料庫 約定 (user_id%2 +1) 對應存放的資料來源序號

spring.shardingsphere.sharding.tables.course.database-strategy.inline.sharding-column=user_id

spring.shardingsphere.sharding.tables.course.database-strategy.inline.algorithm-expression=datasource$->

# 開啟sql輸出日誌

spring.shardingsphere.props.sql.show=true

資料庫分庫分表

1 基本思想之什麼是分庫分表?從字面上簡單理解,就是把原本儲存於乙個庫的資料分塊儲存到多個庫上,把原本儲存於乙個表的資料分塊儲存到多個表上。2 基本思想之為什麼要分庫分表?資料庫中的資料量不一定是可控的,在未進行分庫分表的情況下,隨著時間和業務的發展,庫中的表會越來越多,表中的資料量也會越來越大,相...

資料庫分庫 分表

分庫的優點是 實現簡單,庫與庫之間界限分明,便於維護,缺點是不利於頻繁跨庫操作,單錶資料量大的問題解決不了。分表的優點是 能解決分庫的不足點,但是缺點卻恰恰是分庫的優點,分表實現起來比較複雜,特別是分表規則的劃分,程式的編寫,以及後期的 資料庫拆分移植維護。實際應用中,一般網際網路企業的路線都是先分...

資料庫分庫分表

簡單了解資料庫分庫分表,以及資料庫的分片 什麼是分庫分表 原本儲存於乙個庫的資料分塊儲存到多個庫上,把原本儲存於乙個表的資料分塊儲存在到多個表上 為什麼分庫分表 當一張表的資料達到幾千萬時,你查詢一次所花的時間會變多,如果有聯合查詢的花,我想啃根會死在那。分表的目的就在於此,減少資料庫的負擔,縮短查...