<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      使用sharding-jdbc做分庫分表記錄

            項目中要使用分庫分表來解決上億數據的存儲以及查詢問題,最開始使用的是硬編碼的方式,根據用戶id的hash值做分表,保證同一個用戶落在一張表里面。后面有同事說 使用shardingsphere有現成的解決方案,于是轉成了使用shardingsphere。

       首先引入shardingjdbc的pom依賴

        

              <dependency>
                  <groupId>org.apache.shardingsphere</groupId>
                  <artifactId>sharding-jdbc-spring-boot-starter</artifactId>
                  <version>4.0.1</version>
              </dependency>

      版本比較低,主要是其他項目使用的是這個版本。

      yaml配置:

         

      server:
        port: 8166
         
      spring:
         #多數據源 uc以及community 僅僅適用于數據同步腳本
        datasource:
          dynamic:
            #設置嚴格模式,默認false不啟動. 啟動后在未匹配到指定數據源時候回拋出異常,不啟動會使用默認數據源.
            strict: true  
            primary: super_community
            datasource:
              orapickup_uc:
                url: url
                username: username
                password: password
                driver-class-name: com.mysql.jdbc.Driver
                type: com.alibaba.druid.pool.DruidDataSource        
              super_community:
                url: url_1
                username: username1
                password: password1
                driver-class-name: com.mysql.jdbc.Driver
                type: com.alibaba.druid.pool.DruidDataSource        
              orapickup_community:
                url: url2
                username: username2
                password: password2
                driver-class-name: com.mysql.jdbc.Driver  
                type: com.alibaba.druid.pool.DruidDataSource        
        # 配置Sharding-JDBC讀寫分離規則
        shardingsphere:
          # 指定數據源
          dataSource:
            names:
              master,slave  # 一主一從
            # 配置主庫數據源
            master: # 必須跟上面names對應
              type: com.alibaba.druid.pool.DruidDataSource
              driver-class-name: com.mysql.jdbc.Driver
              url:  url_master
              username: username_master
              password: password_master
            # 配置從庫數據源
            slave: # 必須跟上面names對應
              type: com.alibaba.druid.pool.DruidDataSource
              driver-class-name: com.mysql.jdbc.Driver
              url: url_read
              username: username_read
              password: password_read
          props:
            sql:
              show: true  # 開啟SQL顯示,默認false
          sharding:
              # 默認數據源
              default-data-source-name: master
              #讀寫分離 注意 分庫分表的讀寫分離和非分庫分表讀寫分離不同
              master-slave-rules:                 # 在使用數據分片功能情況下,配置讀寫分離功能
                master:                              # 自定義一個虛擬數據源名字,用于自動路由下方主從數據源
                  masterDataSourceName: master    # 指定主數據源
                  slaveDataSourceNames: slave       # 指定從數據源
                  loadBalanceAlgorithmType: round_robin
              tables:
                bbs_collect:
                 #收藏表根據用戶id分100張表
                  actualDataNodes: master.bbs_collect_$->{1..100}
                  tableStrategy:
                      inline:
                        shardingColumn: create_by
                        #shardingColumn: is_enable
                        #分表規則:createBy hash后取模
                        algorithmExpression: bbs_collect_$->{Math.abs(create_by.hashCode())%100 + 1} 
                bbs_like:
                  #真實表#分100張表
                  actualDataNodes: master.bbs_like_$->{1..100}
                  tableStrategy:
                      inline:
                        shardingColumn: create_by
                        #shardingColumn: is_enable
                        #分表規則:createBy hash后取模
                        algorithmExpression: bbs_like_$->{Math.abs(create_by.hashCode())%100 + 1} 
                       
        application:
          name: gwm-community-interactive-server
        jackson:
          date-format: yyyy-MM-dd HH:mm:ss
          time-zone: GMT+8
        servlet:
          multipart:
            maxFileSize: 5MB
            maxRequestSize: 500MB
      
      gwm:
        mq:
          topics:
            bbsLikeTopics: bbslike-dev
        
      
      rocketmq:
        name-server: 127.0.0.1:9876
        producer:
          group: marketing-interactive-dev
      
            

          中間遇到的幾個問題,首先是 分庫分表和讀寫分離的配置問題。由于另外一個項目使用的是讀寫分離+多數據源,我使用了他們的那個配置,發現不行。分庫分表和讀寫分離共用的話,需要另外配置。參考:

      https://blog.csdn.net/qq_33763772/article/details/137401086

      第二個是 當項目使用了事務的時候,分庫分表會不生效。類似下面的格式會導致分庫分表失效

      @Service("bbsCollectServiceImpl")
      @Transactional(propagation= Propagation.REQUIRED,rollbackFor = Exception.class) todo 使用事務會導致數據源切換失效
      public class BbsCollectServiceImpl implements BbsCollectService {
        //
      }

       

      posted @ 2024-06-03 09:54  Doyourself!  閱讀(77)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 亚洲av本道一区二区| 另类 专区 欧美 制服| 日本边添边摸边做边爱| 性饥渴少妇AV无码毛片| 亚洲av精选一区二区| 精品国产乱子伦一区二区三区| 亚洲男人天堂2018| 激情影院内射美女| 一本色道久久综合熟妇人妻| 成人午夜av在线播放| 疯狂做受XXXX高潮国产| 国产精品熟女亚洲av麻豆| 亚洲国产日韩欧美一区二区三区| 日本一区二区三区四区黄色| 亚洲精品中文字幕无码蜜桃| 国产av一区二区三区综合| 亚洲熟妇精品一区二区| 亚洲自偷自拍另类小说| 亚洲性一交一乱一伦视频| 九九九精品成人免费视频小说| 国产v综合v亚洲欧美大天堂| 精品无码久久久久国产电影| 好先生在线观看免费播放| 国产精品天天看天天狠| 国产一区二区三区不卡视频| 精品亚洲国产成人av| 延安市| 国产成人精品亚洲资源| 亚洲人妻精品中文字幕| 北辰区| 999国产精品一区二区| √天堂资源地址在线官网| 中文毛片无遮挡高潮免费| 乱人伦人妻系列| 亚洲国产美女精品久久久久| 猫咪社区免费资源在线观看| 日本福利一区二区精品| 精品亚洲国产成人痴汉av| 亚洲欧美日韩人成在线播放| 一区二区三区四区黄色片| 国产一精品一av一免费|