sharding jdbc 分庫分表

2021-09-26 05:55:38 字數 2895 閱讀 3790

sharding官網:

環境:jdk8,  springboot + jpa +  sharding-jdbc  實現分表分庫

導包:

io.shardingsphere

sharding-jdbc-spring-boot-starter

3.1.0

io.shardingsphere

sharding-jdbc-spring-namespace

3.1.0

重要配置:

注意:這裡的sharding.jdbc.datasource.grouptest0.jdbc-url的資料庫名稱是自己命名的,不能是group_test0,sharding框架本身不支援這樣的命名方式,所以 這裡只能grouptest0的格式

sharding.jdbc.datasource.names=grouptest1,grouptest0

# 第乙個資料庫

sharding.jdbc.datasource.grouptest1.type=com.zaxxer.hikari.hikaridatasource

sharding.jdbc.datasource.grouptest1.driver-class-name=com.mysql.jdbc.driver

sharding.jdbc.datasource.grouptest1.jdbc-url=jdbc:mysql://localhost:3306/grouptest1?characterencoding=utf-8

sharding.jdbc.datasource.grouptest1.username=

sharding.jdbc.datasource.grouptest1.password=

# 第二個資料庫

sharding.jdbc.datasource.grouptest0.type=com.zaxxer.hikari.hikaridatasource

sharding.jdbc.datasource.grouptest0.driver-class-name=com.mysql.jdbc.driver

sharding.jdbc.datasource.grouptest0.jdbc-url=jdbc:mysql://localhost:3306/grouptest0?characterencoding=utf-8

sharding.jdbc.datasource.grouptest0.username=

sharding.jdbc.datasource.grouptest0.password=

# 分庫策略 分庫的維度 定義在那張表 的id來進行分庫 例如:tables.t_clientinfo

sharding.jdbc.config.sharding.tables.t_clientinfo.database-strategy.inline.sharding-column=id

sharding.jdbc.config.sharding.tables.t_clientinfo.database-strategy.inline.algorithm-expression=grouptest$->

# 水平拆分的資料庫(表) 配置分庫 + 分表策略 行表示式分片策略

sharding.jdbc.config.sharding.tables.t_clientinfo.actual-data-nodes=grouptest$->.t_clientinfo_$->

sharding.jdbc.config.sharding.tables.t_clientinfo.table-strategy.inline.sharding-column=connected

sharding.jdbc.config.sharding.tables.t_clientinfo.table-strategy.inline.algorithm-expression=t_clientinfo_$->

實體

@entity

@table(name = "t_clientinfo")

public class clientinfo

public void setid(long id)

public integer getconnected()

public void setconnected(integer connected)

public long getmostsignbits()

public void setmostsignbits(long mostsignbits)

public long getleastsignbits()

public void setleastsignbits(long leastsignbits)

public date getlastconnecteddate()

public void setlastconnecteddate(date lastconnecteddate)

}

介面 dao

注意:這裡寫sql 用邏輯表

@repository

public inte***ce clientinfodao extends jparepository

實現介面

@service

public class clientinfoservice

public clientinfo get(long id)

controller層

@controller

public class clientinfocontroller

@responsebody

public clientinfo get(long id)

}

sharding jdbc分庫分表

1.gradle構建方式載入依賴包 compile group io.shardingsphere name sharding jdbc core version 3.0.0 2.testsourceconfiguration檔案類配置資料庫 configuration public class t...

分庫分表和sharding jdbc

關係型資料庫在大於一定資料量的情況下效能會急劇下降。在面對網際網路海量資料的情況時,所有資料都存於一張表,顯然很容易會達到資料表可承受的資料量閾值。單純分表雖然可以解決資料量過大導致檢索變慢的問題,但無法解決高併發情況下訪問同乙個庫,導致資料庫響應變慢的問題。所以通常水平拆分都至少要採用分庫的方式,...

Sharding JDBC分庫分表使用記錄

官網 data source start sharding.jdbc.datasource.names ds sharding.jdbc.datasource.ds.type com.alibaba.druid.pool.druiddatasource sharding.jdbc.datasourc...