Sharding JDBC分庫分表使用記錄

2021-08-25 11:48:13 字數 3246 閱讀 6765

官網:

#***********************************== data-source start*************************====

sharding.jdbc.datasource.names=ds

sharding.jdbc.datasource.ds.type=com.alibaba.druid.pool.druiddatasource

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

sharding.jdbc.datasource.ds.url=jdbc:mysql:

sharding.jdbc.datasource.ds.username=admin

sharding.jdbc.datasource.ds.password=123456

# 初始化大小,最小,最大

sharding.jdbc.datasource.ds.initialsize=1

sharding.jdbc.datasource.ds.minidle=1

sharding.jdbc.datasource.ds.maxactive=20

# 配置獲取連線等待超時的時間

sharding.jdbc.datasource.ds.maxwait=60000

# 配置乙個連線在池中最小生存的時間,單位是毫秒

sharding.jdbc.datasource.ds.validationquery=select 1 from dual

sharding.jdbc.datasource.ds.testonborrow=false

sharding.jdbc.datasource.ds.testonreturn=false

sharding.jdbc.datasource.ds.testwhileidle=true

sharding.jdbc.datasource.ds.minevictableidletimemillis=25200000

# 配置間隔多久才進行一次檢測,檢測需要關閉的空閒連線,單位是毫秒

sharding.jdbc.datasource.ds.timebetweenevictionrunsmillis=60000

sharding.jdbc.datasource.ds.removeabandoned=true

.removeabandonedtimeout=1800

# 開啟pscache,並且指定每個連線上pscache的大小

sharding.jdbc.datasource.ds.poolpreparedstatements=true

sharding.jdbc.datasource.ds.maxpoolpreparedstatementperconnectionsize=20

sharding.jdbc.datasource.ds.logabandoned=true

# 配置監控統計攔截的filters,去掉後監控介面sql無法統計,'wall'用於防火牆

sharding.jdbc.datasource.filters=stat,wall,log4j

#***********************************== data-source end*************************====

#***********************************== 分表 start***********************************==

# t_order 根據order_id分表

sharding.jdbc.config.sharding.tables.t_order.actual-data-nodes=ds.t_order_$->

sharding.jdbc.config.sharding.tables.t_order.table-strategy.inline.sharding-column=order_id

sharding.jdbc.config.sharding.tables.t_order.table-strategy.inline.algorithm-expression=t_order_$->

sharding.jdbc.config.sharding.tables.t_order.key-generator-column-name=order_id

# t_order_item 根據order_id欄位分表

sharding.jdbc.config.sharding.tables.t_order_item.actual-data-nodes=ds.t_order_item_$->

sharding.jdbc.config.sharding.tables.t_order_item.table-strategy.inline.sharding-column=order_id

sharding.jdbc.config.sharding.tables.t_order_item.table-strategy.inline.algorithm-expression=t_order_item_$->

sharding.jdbc.config.sharding.tables.t_order_item.key-generator-column-name=order_item_id

#未配置分片規則的表將通過預設資料來源定位

sharding.jdbc.config.sharding.default-data-source-name=ds

#列印sql

sharding.jdbc.config.sharding.props.sql.show=true

spring.profiles.active=sharding

#***********************************== 分表 end***********************************====

獲取毫秒數,最高1000併發

sharding-jdbc採用snowflake演算法作為預設的分布式分布式自增主鍵策略,用於保證分布式的情況下可以無中心化的生成不重複的自增序列。

因此自增主鍵可以保證遞增,但無法保證連續。而snowflake演算法的最後4位是在同一毫秒內的訪問遞增值。因此,如果毫秒內併發度不高,最後4位為零的機率則很大。因此併發度不高的應用生成偶數主鍵的機率會更高。

輕量級資料庫中間層 sharding-jdbc 深度解析

總結:該分表框架使用簡單,無**侵入性,當前使用的是分表功能,未使用分庫功能,因為分庫後跨庫join不支援,未找到有效的解決方案。

sharding jdbc 分庫分表

sharding官網 環境 jdk8,springboot jpa sharding jdbc 實現分表分庫 導包 io.shardingsphere sharding jdbc spring boot starter 3.1.0 io.shardingsphere sharding jdbc sp...

sharding jdbc分庫分表

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

分庫分表和sharding jdbc

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