天天看點

Sharding-JDBC分庫分表使用記錄

1 Sharding-JDBC分庫分表使用執行個體

https://blog.csdn.net/u011116672/article/details/78374724

官網:http://shardingjdbc.io/

1.2 分表配置示例

#===================================== 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://127.0.0.1:3306/demo_test?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false
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_$->{0..1}
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_$->{order_id % 2}
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_$->{0..1}
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_$->{order_id % 2}
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=======================================
           

2 支援的sql

http://shardingsphere.io/document/current/cn/features/sharding/usage-standard/sql/

3 分布式主鍵生成

擷取毫秒數,最高1000并發

4 主鍵偶數問題

Sharding-JDBC采用snowflake算法作為預設的分布式分布式自增主鍵政策,用于保證分布式的情況下可以無中心化的生成不重複的自增序列。

是以自增主鍵可以保證遞增,但無法保證連續。而snowflake算法的最後4位是在同一毫秒内的通路遞增值。是以,如果毫秒内并發度不高,最後4位為零的幾率則很大。是以并發度不高的應用生成偶數主鍵的幾率會更高。

5 部落格連接配接-資料分表小結 

https://www.cnblogs.com/wangiqngpei557/p/9347232.html

7 高手問答第 144 期 

輕量級資料庫中間層 Sharding-JDBC 深度解析

https://www.cnblogs.com/yeahwell/p/7920383.html

https://www.oschina.net/question/2720166_2233456?sort=default&p=6

8 本篇主要針對spring-mybatis不分庫隻分表問題收集

https://blog.csdn.net/yangstarss/article/details/80177605

https://www.cnblogs.com/yjmyzz/p/sharding-jdbc-turotial.html

9  sharding-jdbc源碼

https://blog.csdn.net/column/details/22801.html?&page=2

10 sharding-jdbc分庫分表規則(1)-單表查詢流程

https://blog.csdn.net/yanyan19880509/article/details/78008461

11自定義分表分庫-sharding-jdbc—分片政策

https://www.cnblogs.com/mr-yang-localhost/p/8313360.html

12 mycat使用限制、Mycat 不适應場景

https://blog.csdn.net/yangstarss/article/details/80179821

https://blog.csdn.net/luoqinglong850102/article/details/80749228

13 工作深度總結——分庫分表sharding-jdbc實踐路線

https://blog.csdn.net/wangmei4968/article/details/79415300

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

繼續閱讀