国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

springboot~對(duì)應(yīng)sharding-jdbc實(shí)現(xiàn)分庫(kù)分表

這篇具有很好參考價(jià)值的文章主要介紹了springboot~對(duì)應(yīng)sharding-jdbc實(shí)現(xiàn)分庫(kù)分表。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

原因

當(dāng)mysql數(shù)據(jù)庫(kù)單表大于1千萬(wàn)以后,查詢的性能就不能保證了,我們必須考慮分庫(kù),分表的方案了,還好,sharding-jdbc可以很優(yōu)雅的與springboot對(duì)接,完成對(duì)mysql的分庫(kù)和分表。

依賴(lài)整理

為了不影響其它小容量的表,所有添加了動(dòng)態(tài)數(shù)據(jù)源,只對(duì)需要分庫(kù)分表的進(jìn)行配置即可

  • com.baomidou:dynamic-datasource-spring-boot-starter:3.3.1
  • org.apache.shardingsphere:sharding-jdbc-spring-boot-starter:4.1.1
  • com.baomidou:dynamic-datasource-spring-boot-starter:3.3.1
  • com.baomidou:mybatis-plus-boot-starter:3.4.1
    <dependency>
        <groupId>org.apache.shardingsphere</groupId>
        <artifactId>sharding-jdbc-spring-boot-starter</artifactId>
    </dependency>
    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
    </dependency>
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid-spring-boot-starter</artifactId>
    </dependency>
    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-boot-starter</artifactId>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
    </dependency>

配置整理

spring:
  application.name: sharding-jdbc
  datasource:
    dynamic:
      primary: master0
      datasource:
        master0:
          url: jdbc:mysql://192.168.4.xx:3306/sharding0?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false
          username: root
          password: xxx
          driver-class-name: com.mysql.jdbc.Driver
        master1:
          url: jdbc:mysql://192.168.4.xx:3306/sharding1?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false
          username: root
          password: xxx
          driver-class-name: com.mysql.jdbc.Driver

  shardingsphere:
    datasource:
      names: ds0,ds1
      ds0:
        driver-class-name: com.mysql.cj.jdbc.Driver
        jdbc-url: jdbc:mysql://192.168.4.xx:3306/sharding0?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false
        username: root
        password: xxx
        type: com.zaxxer.hikari.HikariDataSource
      ds1:
        driver-class-name: com.mysql.cj.jdbc.Driver
        jdbc-url: jdbc:mysql://192.168.4.xx:3306/sharding1?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false
        username: root
        password: xxx
        type: com.zaxxer.hikari.HikariDataSource #必須個(gè)type,否則報(bào)錯(cuò)
    sharding:
      tables:
        t_order:
          #key-generator:
          #  column: id
          #  type: SNOWFLAKE
          actual-data-nodes: ds$->{0..1}.t_order_$->{0..1} #需要開(kāi)發(fā)人員手動(dòng)按規(guī)則建立數(shù)據(jù)表
          database-strategy:
            inline:
              sharding-column: id
              algorithm‐expression: ds$->{id % 2}
          table-strategy:
            inline:
              sharding-column: id
              algorithm‐expression: t_order_$->{id % 2}
    props:
      sql:
        show: true   # 日志顯示SQL

mybatis:
  mapperLocations: classpath:mapper/*.xml
  typeAliasesPackage: com.lind.shardingjdbc.entity
  configuration:
    mapUnderscoreToCamelCase: true

提前建立表分庫(kù)和分表

springboot~對(duì)應(yīng)sharding-jdbc實(shí)現(xiàn)分庫(kù)分表文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-457178.html

測(cè)試代碼整理

  • 配置類(lèi)
@Configuration
@AutoConfigureBefore({ DynamicDataSourceAutoConfiguration.class, SpringBootConfiguration.class })
public class DataSourceConfiguration {

	// 分表數(shù)據(jù)源名稱(chēng)
	private static final String SHARDING_DATA_SOURCE_NAME = "sharding";
	/**
	 * shardingjdbc有四種數(shù)據(jù)源,需要根據(jù)業(yè)務(wù)注入不同的數(shù)據(jù)源
	 *
	 * <p>
	 * 1. 未使用分片, 脫敏的名稱(chēng)(默認(rèn)): shardingDataSource;
	 * <p>
	 * 2. 主從數(shù)據(jù)源: masterSlaveDataSource;
	 * <p>
	 * 3. 脫敏數(shù)據(jù)源:encryptDataSource;
	 * <p>
	 * 4. 影子數(shù)據(jù)源:shadowDataSource
	 */
	@Lazy
	@Resource(name = "shardingDataSource")
	AbstractDataSourceAdapter shardingDataSource;
	// 動(dòng)態(tài)數(shù)據(jù)源配置項(xiàng)
	@Autowired
	private DynamicDataSourceProperties properties;

	@Bean
	public DynamicDataSourceProvider dynamicDataSourceProvider() {
		Map<String, DataSourceProperty> datasourceMap = properties.getDatasource();
		return new AbstractDataSourceProvider() {
			@Override
			public Map<String, DataSource> loadDataSources() {
				Map<String, DataSource> dataSourceMap = createDataSourceMap(datasourceMap);
				// 將 shardingjdbc 管理的數(shù)據(jù)源也交給動(dòng)態(tài)數(shù)據(jù)源管理
				dataSourceMap.put(SHARDING_DATA_SOURCE_NAME, shardingDataSource);
				return dataSourceMap;
			}
		};
	}

	/**
	 * 將動(dòng)態(tài)數(shù)據(jù)源設(shè)置為首選的 當(dāng)spring存在多個(gè)數(shù)據(jù)源時(shí), 自動(dòng)注入的是首選的對(duì)象 設(shè)置為主要的數(shù)據(jù)源之后,就可以支持shardingjdbc原生的配置方式了
	 */
	@Primary
	@Bean
	public DataSource dataSource(DynamicDataSourceProvider dynamicDataSourceProvider) {
		DynamicRoutingDataSource dataSource = new DynamicRoutingDataSource();
		dataSource.setPrimary(properties.getPrimary());
		dataSource.setStrict(properties.getStrict());
		dataSource.setStrategy(properties.getStrategy());
		dataSource.setProvider(dynamicDataSourceProvider);
		dataSource.setP6spy(properties.getP6spy());
		dataSource.setSeata(properties.getSeata());
		return dataSource;
	}

}
  • 實(shí)體類(lèi)和mapper類(lèi)
@Data
@TableName("t_order")
public class Order {

	@TableId(type = IdType.ASSIGN_ID)
	Long orderId;

	double amount;

	Integer userId;

}
@Mapper
public interface OrderMapper extends BaseMapper<Order> {

}
  • 分表的測(cè)試
    @GetMapping("insert")
	@DS("sharding")
	public ResponseEntity test() {
		Order order = new Order();
		order.setAmount(100);
		order.setUserId(1);
		orderMapper.insert(order);
		return ResponseEntity.ok("success");
	}

  • 不進(jìn)行分表的測(cè)試
    @GetMapping("insert-not-sharding")
	public ResponseEntity testNotSharding() {
		Order order = new Order();
		order.setAmount(101);
		order.setUserId(2);
		orderMapper.insert(order);
		return ResponseEntity.ok("success");
	}

到了這里,關(guān)于springboot~對(duì)應(yīng)sharding-jdbc實(shí)現(xiàn)分庫(kù)分表的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Sharding-JDBC分庫(kù)分表四種分片算法

    Sharding-JDBC分庫(kù)分表四種分片算法

    精確分片算法(PreciseShardingAlgorithm)精確分片算法(=與IN語(yǔ)句),用于處理使用單一鍵作為分片鍵的=與IN進(jìn)行分片的場(chǎng)景。需要配合StandardShardingStrategy使用 范圍分片算法(RangeShardingAlgorithm)用于處理使用單一鍵作為分片鍵的BETWEEN AND進(jìn)行分片的場(chǎng)景。需要配合StandardShardingS

    2024年02月10日
    瀏覽(18)
  • Sharding-JDBC分庫(kù)分表-自動(dòng)配置與分片規(guī)則加載原理-3

    Sharding JDBC自動(dòng)配置的原理 與所有starter一樣,shardingsphere-jdbc-core-spring-boot-starter也是通過(guò)SPI自動(dòng)配置的原理實(shí)現(xiàn)分庫(kù)分表配置加載,spring.factories文件中的自動(dòng)配置類(lèi)shardingsphere-jdbc-core-spring-boot-starter功不可沒(méi),他主要是自動(dòng)創(chuàng)建了模式bean、事務(wù)類(lèi)型bean和數(shù)據(jù)源bean,配置加載

    2024年02月10日
    瀏覽(25)
  • SpringBoot+Sharding-jdbc+mybatis-plus實(shí)現(xiàn)水平分表

    這塊我就不演示了

    2024年02月12日
    瀏覽(19)
  • Sharding-JDBC分庫(kù)連接數(shù)優(yōu)化

    Sharding-JDBC分庫(kù)連接數(shù)優(yōu)化

    一、背景 配運(yùn)平臺(tái)組的快遞訂單履約中心(cp-eofc)及物流平臺(tái)履約中心(jdl-uep-ofc)系統(tǒng)都使用了ShardingSphere生態(tài)的sharding-jdbc作為分庫(kù)分表中間件, 整個(gè)集群采用只分庫(kù)不分表的設(shè)計(jì),共16個(gè)MYSQL實(shí)例,每個(gè)實(shí)例有32個(gè)庫(kù),集群共512個(gè)庫(kù). 當(dāng)每增加一臺(tái)客戶端主機(jī),一個(gè)MYSQl實(shí)例最少要增加

    2024年02月14日
    瀏覽(21)
  • Sharding-JDBC(十)如何解決根據(jù)ID更新時(shí)掃描全部分表

    我們?cè)谑褂?ShardingJDBC 作為分片工具的時(shí)候,會(huì)在配置中指定分片鍵,例如根據(jù) create_time 創(chuàng)建時(shí)間來(lái)按月分片是比較常用的操作。當(dāng)分片表中需要 根據(jù)主鍵 ID 來(lái)進(jìn)行更新的時(shí)候 ,由于不確定數(shù)據(jù)的 create_time 具體是多少,ShardingJDBC 就會(huì)在選擇使用分片表的時(shí)候,就會(huì)默認(rèn)選

    2024年02月07日
    瀏覽(23)
  • Sharding JDBC 分庫(kù)分表(一致性Hash + 虛擬節(jié)點(diǎn))

    Sharding JDBC 分庫(kù)分表(一致性Hash + 虛擬節(jié)點(diǎn))

    一、背景 傳統(tǒng)的將數(shù)據(jù)集中存儲(chǔ)至單一數(shù)據(jù)節(jié)點(diǎn)的解決方案,在性能、可用性和運(yùn)維成本這三方面已經(jīng)難于滿足互聯(lián)網(wǎng)的海量數(shù)據(jù)場(chǎng)景。 從 性能 方面來(lái)說(shuō),由于關(guān)系型數(shù)據(jù)庫(kù)大多采用B+樹(shù)類(lèi)型的索引,在數(shù)據(jù)量超過(guò)閾值的情況下,索引深度的增加也將使得磁盤(pán)訪問(wèn)的IO次數(shù)

    2024年02月10日
    瀏覽(30)
  • SpringBoot整合ShardingSphere-JDBC 5.3.2 實(shí)現(xiàn)讀寫(xiě)分離、分庫(kù)分表。

    SpringBoot整合ShardingSphere-JDBC 5.3.2 實(shí)現(xiàn)讀寫(xiě)分離、分庫(kù)分表。

    ???????個(gè)人主頁(yè):阿木木AEcru ?? 系列專(zhuān)欄:《Docker容器化部署系列》 《Java每日面筋》 ??每一次技術(shù)突破,都是對(duì)自我能力的挑戰(zhàn)和超越。 Docker部署MYSQL主從詳細(xì)教程-阿木木AEcru-CSDN 那天寫(xiě)了 部署mysql主從后,想了想,還是有必要出多一篇關(guān)于ShardingSphere-JDBC 讀寫(xiě)分離

    2024年04月13日
    瀏覽(17)
  • springboot第55集:思維導(dǎo)圖Sharding-JDBC,事務(wù),微服務(wù)分布式架構(gòu)周刊

    事務(wù)定義 在數(shù)據(jù)庫(kù)管理系統(tǒng)中,事務(wù)是單個(gè)邏輯或工作單元,有時(shí)由多個(gè)操作組成,在數(shù)據(jù)庫(kù)中以一致模式完成的邏輯處理稱(chēng)為事務(wù)。一個(gè)例子是從一個(gè)銀行賬戶轉(zhuǎn)賬到另一個(gè)賬戶:完整的交易需要減去從一個(gè)賬戶轉(zhuǎn)賬的金額,然后將相同的金額添加到另一個(gè)賬戶。 事務(wù)特

    2024年02月19日
    瀏覽(34)
  • Sharding-JDBC 自定義一致性哈希算法 + 虛擬節(jié)點(diǎn) 實(shí)現(xiàn)數(shù)據(jù)庫(kù)分片策略

    分片操作是分片鍵 + 分片算法,也就是分片策略。目前Sharding-JDBC 支持多種分片策略: 標(biāo)準(zhǔn)分片策略 對(duì)應(yīng)StandardShardingStrategy。提供對(duì)SQL語(yǔ)句中的=, IN和BETWEEN AND的分片操作支持。 復(fù)合分片策略 對(duì)應(yīng)ComplexShardingStrategy。復(fù)合分片策略。提供對(duì)SQL語(yǔ)句中的=, IN和BETWEEN AND的分片操作

    2024年02月02日
    瀏覽(97)
  • Sharding-JDBC(六)5.1.0版本,實(shí)現(xiàn)按月分表、自動(dòng)建表、自動(dòng)刷新節(jié)點(diǎn)

    Sharding-JDBC(六)5.1.0版本,實(shí)現(xiàn)按月分表、自動(dòng)建表、自動(dòng)刷新節(jié)點(diǎn)

    官網(wǎng)地址: https://shardingsphere.apache.org/ GitHub: https://github.com/apache/shardingsphere 官方示例: https://github.com/apache/shardingsphere/tree/master/examples 中文社區(qū): https://community.sphere-ex.com/ 5.1.0 官方文檔: https://shardingsphere.apache.org/document/5.1.0/cn/overview/ 背景: 項(xiàng)目用戶數(shù)據(jù)庫(kù)表量太大,對(duì)

    2024年02月02日
    瀏覽(21)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包