精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

SpringBoot3分庫(kù)分表

數(shù)據(jù)庫(kù) 其他數(shù)據(jù)庫(kù)
按照業(yè)務(wù)拆分的方式稱(chēng)為垂直分片,又稱(chēng)為縱向拆分,它的核心理念是專(zhuān)庫(kù)專(zhuān)用。在拆分之前,一個(gè)數(shù)據(jù)庫(kù)由多個(gè)數(shù)據(jù)表構(gòu)成,每個(gè)表對(duì)應(yīng)著不同的業(yè)務(wù)。而拆分之后,則是按照業(yè)務(wù)將表進(jìn)行歸類(lèi),分布到不同的數(shù)據(jù)庫(kù)中,從而將壓力分散至不同的數(shù)據(jù)庫(kù)。

一、簡(jiǎn)介

分庫(kù)分表的設(shè)計(jì)和實(shí)現(xiàn)方式,在之前的內(nèi)容中總結(jié)過(guò)很多,本文基于SpringBoot3ShardingSphere5框架實(shí)現(xiàn)數(shù)據(jù)分庫(kù)分表的能力;

不得不提ShardingSphere5文檔中描述的兩個(gè)基本概念:

垂直分片

按照業(yè)務(wù)拆分的方式稱(chēng)為垂直分片,又稱(chēng)為縱向拆分,它的核心理念是專(zhuān)庫(kù)專(zhuān)用。在拆分之前,一個(gè)數(shù)據(jù)庫(kù)由多個(gè)數(shù)據(jù)表構(gòu)成,每個(gè)表對(duì)應(yīng)著不同的業(yè)務(wù)。而拆分之后,則是按照業(yè)務(wù)將表進(jìn)行歸類(lèi),分布到不同的數(shù)據(jù)庫(kù)中,從而將壓力分散至不同的數(shù)據(jù)庫(kù)。

水平分片

水平分片又稱(chēng)為橫向拆分。相對(duì)于垂直分片,它不再將數(shù)據(jù)根據(jù)業(yè)務(wù)邏輯分類(lèi),而是通過(guò)某個(gè)字段(或某幾個(gè)字段),根據(jù)某種規(guī)則將數(shù)據(jù)分散至多個(gè)庫(kù)或表中,每個(gè)分片僅包含數(shù)據(jù)的一部分。

下面從案例實(shí)踐中,看看ShardingSphere5框架是如何實(shí)現(xiàn)分庫(kù)分表的原理;

二、工程搭建

1、工程結(jié)構(gòu)

2、依賴(lài)管理

這里只看兩個(gè)核心組件的依賴(lài):shardingsphere-jdbc組件是5.2.1版本,mybatis組件是3.5.13版本,在依賴(lài)管理中還涉及MySQL和分頁(yè)等,并且需要添加很多排除配置,具體見(jiàn)源碼;

<!-- Mybatis組件 -->
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>${mybatis.version}</version>
</dependency>

<!-- ShardingSphere分庫(kù)分表 -->
<dependency>
    <groupId>org.apache.shardingsphere</groupId>
    <artifactId>shardingsphere-jdbc-core-spring-boot-starter</artifactId>
    <version>${shardingsphere.version}</version>
</dependency>

三、配置詳解

1、配置文件

此處只展示分庫(kù)分表的相關(guān)配值,默認(rèn)數(shù)據(jù)源使用db_master庫(kù),注意tb_order庫(kù)表路由的策略和分片算法的關(guān)聯(lián)關(guān)系,其他工程配置詳見(jiàn)源碼倉(cāng)庫(kù);

spring:
  # 分庫(kù)分表配置
  shardingsphere:
    datasource:
      # 默認(rèn)數(shù)據(jù)源
      sharding:
        default-data-source-name: db_master
      names: db_master,db_0,db_1
      db_master:
        type: com.zaxxer.hikari.HikariDataSource
        driver-class-name: com.mysql.cj.jdbc.Driver
        jdbc-url: jdbc:mysql://localhost:3306/shard_db
        username: root
        password: 123456
      db_0:
        type: com.zaxxer.hikari.HikariDataSource
        driver-class-name: com.mysql.cj.jdbc.Driver
        jdbc-url: jdbc:mysql://localhost:3306/shard_db_0
        username: root
        password: 123456
      db_1:
        type: com.zaxxer.hikari.HikariDataSource
        driver-class-name: com.mysql.cj.jdbc.Driver
        jdbc-url: jdbc:mysql://localhost:3306/shard_db_1
        username: root
        password: 123456
    rules:
      sharding:
        tables:
          # tb_order邏輯
          tb_order:
            actual-data-nodes: db_${0..1}.tb_order_${0..2}
            # tb_order庫(kù)路由
            database-strategy:
              standard:
                sharding-column: order_id
                sharding-algorithm-name: database_inline
            # tb_order表路由
            table-strategy:
              standard:
                sharding-column: order_id
                sharding-algorithm-name: table_inline
        sharding-algorithms:
          # tb_order庫(kù)路由算法
          database_inline:
            type: INLINE
            props:
              algorithm-expression: db_${order_id % 2}
          # tb_order表路由算法
          table_inline:
            type: INLINE
            props:
              algorithm-expression: tb_order_${order_id % 3}
    props:
      sql-show: true
      sql-comment-parse-enabled: true

2、配置原理

在配置中需要管理三個(gè)數(shù)據(jù)源,shard_db默認(rèn)庫(kù),在操作不涉及需要路由的表時(shí)默認(rèn)使用該數(shù)據(jù)源,shard_db_0shard_db_1tb_order邏輯表的路由庫(kù);

邏輯表tb_order整體使用兩個(gè)數(shù)據(jù)庫(kù),每個(gè)庫(kù)建3張結(jié)構(gòu)相同相同的表,在操作tb_order數(shù)據(jù)時(shí),會(huì)根據(jù)order_id字段值定位數(shù)據(jù)所屬的分片節(jié)點(diǎn);

  • 庫(kù)路由db_${0..1}采用db_${order_id%2}的算法;
  • 表路由tb_order_${0..2}采用tb_order_${order_id%3}的算法;

四、測(cè)試案例

1、主庫(kù)操作

基于Mybatis持久層框架,實(shí)現(xiàn)對(duì)shard_db默認(rèn)庫(kù)的數(shù)據(jù)操作,注意控制臺(tái)的日志打印,可以看到一系列解析邏輯以及庫(kù)表節(jié)點(diǎn)的定位,分頁(yè)查詢(xún)使用PageHelper組件即可;

public class MasterTest {
    @Autowired
    private BuyerMapper buyerMapper ;
    @Autowired
    private SellerMapper sellerMapper ;
    @Test
    public void testBuyerQuery (){
        // 主鍵查詢(xún)
        Buyer buyer = buyerMapper.selectByPrimaryKey(1) ;
        System.out.println(buyer.getId()+";"+buyer.getBuyerName());
    }
    @Test
    public void testBuyerInsert (){
        // 新增數(shù)據(jù)
        Buyer buyer = new Buyer() ;
        buyer.setBuyerName("買(mǎi)家Three");
        System.out.println(buyerMapper.insert(buyer));
    }
    @Test
    public void testBuyerUpdate (){
        // 更新數(shù)據(jù)
        Buyer buyer = buyerMapper.selectByPrimaryKey(3) ;
        if (buyer != null){
            buyer.setBuyerName("Three買(mǎi)家");
            System.out.println(buyerMapper.updateByPrimaryKey(buyer));
        }
    }
    @Test
    public void testSellerPage (){
        // 1、設(shè)置分頁(yè)和查詢(xún)條件
        PageHelper.startPage(2,2) ;
        SellerExample sellerExample = new SellerExample() ;
        sellerExample.setOrderByClause("id asc");
        // 2、查詢(xún)數(shù)據(jù)
        List<Seller> sellerList = sellerMapper.selectByExample(sellerExample) ;
        // 3、構(gòu)建分頁(yè)實(shí)體對(duì)象
        PageInfo<Seller> pageInfo = new PageInfo<>(sellerList) ;
        System.out.println(pageInfo);
    }
}

2、分庫(kù)操作

在對(duì)tb_order表執(zhí)行增刪改查時(shí),會(huì)根據(jù)order_id的字段值計(jì)算庫(kù)表的路由節(jié)點(diǎn),注意分頁(yè)時(shí)會(huì)查詢(xún)所有的分庫(kù)和分表,然后匯總查詢(xún)的結(jié)果;

public class ShardTest {
    @Autowired
    private OrderMapper orderMapper ;
    /**
     * 寫(xiě)入100條數(shù)據(jù)
     */
    @Test
    public void testOrderInsert (){
        for (int i=1 ; i<= 100 ; i++){
            Order order = new Order(i,i%3+1,i%3+1) ;
            // orderMapper.insert(order) ;
        }
    }
    @Test
    public void testOrderQuery (){
        Order order = orderMapper.selectByPrimaryKey(5) ;
        System.out.println(order);
    }
    @Test
    public void testOrderUpdate (){
        Order order = orderMapper.selectByPrimaryKey(100) ;
        if (order != null){
            // 原數(shù)據(jù):買(mǎi)家和賣(mài)家ID都是2
            order.setBuyerId(1);
            order.setSellerId(3);
            orderMapper.updateByPrimaryKey(order) ;
        }
    }

    @Test
    public void testOrderPage (){
        // 1、設(shè)置分頁(yè)和查詢(xún)條件
        PageHelper.startPage(1,10) ;
        OrderExample orderExample = new OrderExample() ;
        orderExample.createCriteria().andBuyerIdEqualTo(2).andSellerIdEqualTo(2);
        orderExample.setOrderByClause("order_id desc");
        // 2、查詢(xún)數(shù)據(jù)
        List<Order> orderList = orderMapper.selectByExample(orderExample) ;
        // 3、構(gòu)建分頁(yè)實(shí)體對(duì)象
        PageInfo<Order> pageInfo = new PageInfo<>(orderList) ;
        System.out.println(pageInfo);
    }
}

3、綜合查詢(xún)

編寫(xiě)一個(gè)訂單詳情查詢(xún)接口,同時(shí)使用三個(gè)庫(kù)構(gòu)建數(shù)據(jù)結(jié)構(gòu);如果是基于列表數(shù)據(jù)的檢索,比較常規(guī)做法的是構(gòu)建ES索引結(jié)構(gòu),如果沒(méi)有搜索的需求,可以在訂單表分頁(yè)查詢(xún)后去拼接其他結(jié)構(gòu);

@RestController
public class OrderController {

    @Resource
    private BuyerMapper buyerMapper ;
    @Resource
    private SellerMapper sellerMapper ;
    @Resource
    private OrderMapper orderMapper ;

    /**
     * 查詢(xún)訂單詳情
     */
    @GetMapping("/order/info/{orderId}")
    public Map<String,Object> orderInfo (@PathVariable Integer orderId){
        Map<String,Object> orderMap = new HashMap<>() ;
        Order order = orderMapper.selectByPrimaryKey(orderId) ;
        if (order != null){
            orderMap.put("order",order) ;
            orderMap.put("buyer",buyerMapper.selectByPrimaryKey(order.getBuyerId())) ;
            orderMap.put("seller",sellerMapper.selectByPrimaryKey(order.getSellerId())) ;
        }
        return orderMap ;
    }
}

查看SQL語(yǔ)句

db_master ::: select id, buyer_name from tb_buyer where id = ? ::: [1]
db_master ::: select id, seller_name from tb_seller where id = ? ::: [3]
db_0 ::: select order_id, seller_id, buyer_id from tb_order_1 where order_id =


責(zé)任編輯:武曉燕 來(lái)源: 知了一笑
相關(guān)推薦

2019-01-16 14:00:54

數(shù)據(jù)庫(kù)分庫(kù)分表

2020-07-30 17:59:34

分庫(kù)分表SQL數(shù)據(jù)庫(kù)

2019-11-12 09:54:20

分庫(kù)分表數(shù)據(jù)

2024-08-02 15:47:28

數(shù)據(jù)庫(kù)分庫(kù)分表

2022-12-05 07:51:24

數(shù)據(jù)庫(kù)分庫(kù)分表讀寫(xiě)分離

2018-06-01 14:00:00

數(shù)據(jù)庫(kù)MySQL分庫(kù)分表

2022-06-15 07:32:24

數(shù)據(jù)庫(kù)分庫(kù)分表

2019-03-06 14:42:01

數(shù)據(jù)庫(kù)分庫(kù)分表

2021-04-01 05:40:53

分庫(kù)分表數(shù)據(jù)庫(kù)MySQL

2021-08-31 20:21:11

VitessMySQL分庫(kù)

2024-07-10 08:42:39

2022-07-11 08:16:47

NewSQL關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)

2021-01-26 05:37:08

分庫(kù)分表內(nèi)存

2020-07-28 09:04:09

NewSQL分庫(kù)分表

2025-04-01 08:45:00

2024-07-26 00:16:11

2020-11-18 09:39:02

MySQL數(shù)據(jù)庫(kù)SQL

2024-12-04 13:02:34

數(shù)據(jù)庫(kù)分庫(kù)分表

2019-01-29 15:25:11

阿里巴巴數(shù)據(jù)庫(kù)分庫(kù)分表

2022-06-30 07:34:46

分庫(kù)分表外賣(mài)訂單系統(tǒng)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

神马影视一区二区| 日本在线播放一二三区| 国模一区二区三区白浆| 精品中文字幕在线2019| 一级欧美一级日韩片| 国产精欧美一区二区三区蓝颜男同| 国产日产欧美一区| 亚洲自拍小视频免费观看| www欧美在线| 久久久久久久久国产一区| 亚洲国产小视频| 婷婷免费在线观看| 啊啊啊久久久| 中文字幕日本乱码精品影院| 国内一区二区三区在线视频| 亚洲视频中文字幕在线观看| 亚洲激情av| 色婷婷综合久久久久中文字幕1| av天堂一区二区| 欧美成人aaa| 黄色成人av在线| 乱子伦一区二区| 黄色在线网站| 成人黄色一级视频| 91精品久久久久久久久久久| 一级免费在线观看| 欧美1区视频| 亚洲欧美视频在线| 免费日本黄色网址| 日韩精品一区二区三区中文字幕| 91福利区一区二区三区| www.99riav| 欧美尤物美女在线| 久久久国产精品不卡| 成人欧美一区二区三区视频| 天天干天天操天天爱| 日韩午夜高潮| 色综合色综合网色综合| 日本午夜在线观看| 日韩成人激情| 中文字幕精品在线| 天天躁日日躁aaaa视频| 人人香蕉久久| 亚洲第一福利网站| 亚洲国产精品第一页| 国产一区二区三区精品在线观看| 欧美亚洲国产怡红院影院| 国产91美女视频| 国产美女精品写真福利视频| 亚洲一区免费在线观看| 伊人再见免费在线观看高清版| 麻豆免费在线观看| 国产精品伦理在线| 一区精品在线| 国内外激情在线| 18涩涩午夜精品.www| 一本色道久久综合亚洲精品婷婷| www.中文字幕久久久| 日本一二三四高清不卡| 五月婷婷综合色| 男人的天堂在线视频免费观看| 欧美激情一区二区三区在线| 亚洲v日韩v欧美v综合| www在线播放| 国产精品的网站| av中文字幕av| 爱看av在线入口| 激情av一区二区| 国产精品wwwww| 国产成人精品一区二区三区视频 | 日韩精品一区二区久久| 日韩中文av在线| 97精品在线播放| 欧美黄免费看| 海角国产乱辈乱精品视频| 久久午夜免费视频| 日韩制服丝袜先锋影音| 国产欧美日韩专区发布| a视频免费在线观看| 风间由美一区二区三区在线观看| 国产在线精品一区二区三区》| 午夜黄色小视频| 中文字幕精品在线不卡| 一区二区三区一级片| 国产乱码在线| 色屁屁一区二区| www.超碰97.com| 亚洲精品aⅴ| 亚洲精品视频中文字幕| 国产一区在线观看免费| 欧美精品一卡| 日本亚洲欧洲色α| 91黄色在线视频| 成人久久18免费网站麻豆 | 日韩欧美国产中文字幕| 日本超碰在线观看| 精品一区二区男人吃奶| 中文字幕久久久av一区| 免费看一级一片| 日本欧洲一区二区| 成人午夜电影在线播放| 高清日韩av电影| 香蕉av福利精品导航| 亚洲一区二区蜜桃| 成人av资源网址| 菠萝蜜影院一区二区免费| 日本少妇久久久| 精品在线你懂的| 久久艳妇乳肉豪妇荡乳av| 免费观看在线黄色网| 黑人与娇小精品av专区| 男生和女生一起差差差视频| 精品久久网站| 高清欧美性猛交xxxx黑人猛交| 国产又大又黄又爽| 久久久久成人黄色影片| www.亚洲视频.com| 亚洲精品一区av| 亚洲美女在线视频| 免费一级肉体全黄毛片| 久久99精品久久久久久国产越南 | 欧美午夜视频网站| 日韩av无码一区二区三区不卡| 99欧美视频| 国产精品久久久久久亚洲调教| 男人天堂手机在线观看| 亚洲精品日韩综合观看成人91| 天天色综合社区| 九九在线精品| 欧美一区二区三区免费视| 亚洲h视频在线观看| 亚洲三级电影网站| 国产三级三级看三级| 久久99国内| 91黑丝高跟在线| 亚洲精品久久久久久久久久久久久久 | 99久久免费国| 午夜在线激情影院| 91精品国产91热久久久做人人| 最新日韩免费视频| 日av在线不卡| 亚洲激情一区二区三区| 婷婷午夜社区一区| 亚洲天堂第二页| 天堂网视频在线| 久久久久青草大香线综合精品| 国产亚洲综合视频| 亚洲精华一区二区三区| 人人澡人人澡人人看欧美| 五月天福利视频| 天天色图综合网| 免费无码一区二区三区| 一区二区国产精品| 九九九久久久| 人人视频精品| 伊人久久久久久久久久久| 亚洲精品国产无码| 国产精品欧美极品| 999这里有精品| 中文字幕一区二区三区久久网站 | 91爱视频在线| 你懂的视频在线播放| 色94色欧美sute亚洲线路二 | 国产精品免费看久久久香蕉| 成人性爱视频在线观看| 欧美视频在线不卡| 日日噜噜夜夜狠狠久久波多野| 韩国欧美国产1区| av动漫在线播放| 黄色免费大全亚洲| 亲子乱一区二区三区电影| 黄色av免费在线看| 欧美日韩1区2区| 免费在线视频一区二区| 91偷拍与自偷拍精品| 性欧美极品xxxx欧美一区二区| 婷婷亚洲图片| 国产乱码精品一区二区三区卡| 理论不卡电影大全神| 色偷偷偷综合中文字幕;dd| 国产精品国产一区二区三区四区 | 久久伊人中文字幕| 久久国产精品国产精品| 海角社区69精品视频| 欧美极品jizzhd欧美| 亚洲国产天堂| 亚州国产精品久久久| 在线免费看黄| 亚洲黄色在线观看| 中文字幕 视频一区| 亚洲国产精品久久久男人的天堂| 精品人妻少妇嫩草av无码| 久久精品二区亚洲w码| 一本久道高清无码视频| 欧洲激情综合| 国产区一区二区三区| 欧美一级免费| 4438全国成人免费| 成人免费高清| 亚洲天堂网站在线观看视频| 亚洲AV无码成人片在线观看| 欧美影片第一页| 精品在线视频免费| 中文字幕av一区 二区| 欧美日韩一区二区三区四区五区六区| 日韩**一区毛片| 青娱乐自拍偷拍| 91精品一区二区三区综合| 麻豆av一区二区三区| 亚洲国产视频二区| 成人黄色在线播放| 日韩欧美一区二区三区在线观看 | 欧美老熟妇喷水| 国产精品91一区二区三区| 免费99视频| 国产成人夜色高潮福利影视| 91久久精品美女高潮| 黄色精品视频| 日韩美女视频在线观看| 菠萝蜜视频在线观看www入口| 精品国产一区二区三区久久狼黑人 | 日产电影一区二区三区| 亚洲精品国产成人久久av盗摄| 国产午夜精品福利视频| 久久综合久久综合久久| 扒开伸进免费视频| 国产美女一区二区三区| 91人人澡人人爽人人精品| 久久国产毛片| 黄色一级在线视频| 尤物在线精品| 成人短视频在线观看免费| 97精品国产福利一区二区三区| 日本精品一区二区| 亚洲国产欧美日韩在线观看第一区| 国产传媒一区二区| 日韩第一区第二区| 亚洲伊人久久综合| 久久久91麻豆精品国产一区| 国产美女扒开尿口久久久| 成人国产一区二区三区精品麻豆| 奇米影视亚洲狠狠色| 在线精品亚洲欧美日韩国产| 欧美在线欧美在线| 在线女人免费视频| 欧日韩不卡在线视频| 日韩电影免费观| 国产精品久久久久久久7电影| 日韩欧美少妇| 国产欧美日韩免费看aⅴ视频| 岛国一区二区| 91精品视频在线播放| 玖玖玖电影综合影院| 91福利视频导航| 欧洲大片精品免费永久看nba| 成人性生交xxxxx网站| 成人在线分类| 99在线观看| 国产精品男女| 麻豆av一区二区三区| 欧美日韩在线播放视频| 天天做天天爱天天高潮| 欧美日本三区| 久久黄色片视频| 天堂久久一区二区三区| 亚洲不卡视频在线| 国产一区二区剧情av在线| 精品人妻一区二区免费| 99精品久久99久久久久| 六月婷婷七月丁香| 国产精品免费久久久久| wwwav国产| 欧美日韩在线一区| 中文在线字幕免费观| 日韩免费观看高清完整版| 天天干天天干天天干| 国产亚洲日本欧美韩国| 国产激情在线观看| 午夜精品福利在线观看| 欧美性xxx| 亚洲综合最新在线| 日韩激情啪啪| 欧美aaa在线观看| 亚洲区欧美区| 中文字幕22页| 成年人网站91| a资源在线观看| 亚洲已满18点击进入久久| 国产一级一级国产| 欧美一区二区免费观在线| 肉丝一区二区| 美日韩精品视频免费看| 亚洲日本天堂| aa成人免费视频| 国产成人一区| 免费看欧美黑人毛片| 免播放器亚洲一区| 国产精品九九视频| 国产精品国产自产拍高清av| 国产精品99无码一区二区| 欧美视频中文字幕| 天天干天天爱天天操| 久久久国产一区二区| 345成人影院| 国产成人一区二区三区免费看| 欧美午夜精品一区二区三区电影| 国内少妇毛片视频| 久久99久久久欧美国产| 国内精品久久99人妻无码| 亚洲精品高清在线观看| 亚洲视频一区二区三区四区| 亚洲精品网址在线观看| 国产黄色大片在线观看| 91美女高潮出水| 激情婷婷综合| 欧美在线观看www| 国产精品1区2区| 91狠狠综合久久久| 91福利视频在线| 欧美午夜黄色| 91精品国产沙发| 91精品入口| 成人在线免费高清视频| 久久激情五月激情| 妖精视频在线观看免费| 色呦呦网站一区| 视频国产一区二区三区| 992tv在线成人免费观看| 日韩影片在线观看| 欧美性受xxxx黑人猛交88| 美女视频黄频大全不卡视频在线播放| 偷拍女澡堂一区二区三区| 亚洲成人精品一区| 黄频在线免费观看| 久久99久久久久久久噜噜| 成年永久一区二区三区免费视频 | 精品自拍一区| 国产自摸综合网| 亚欧美无遮挡hd高清在线视频| 欧美午夜aaaaaa免费视频| 国产日本欧美一区二区| 中文字幕xxxx| 在线看欧美日韩| 巨大黑人极品videos精品| 亚洲欧美日产图| 精品无码三级在线观看视频| 日本 欧美 国产| 91精品久久久久久久91蜜桃| 高h视频在线观看| 91免费版网站在线观看| 欧美午夜在线视频| 无码国产精品一区二区免费式直播 | 成人黄色片视频| 久久精品网站免费观看| 亚洲国产av一区二区三区| 在线观看国产精品91| 香蕉成人在线| 97av中文字幕| 99视频精品全部免费在线| www毛片com| 中文字幕日韩视频| 另类视频一区二区三区| 人妻无码久久一区二区三区免费| 91一区二区在线观看| 自拍偷拍18p| 久久视频精品在线| 中文字幕一区二区三区四区久久 | wwwav国产| 亚洲黄色在线观看| 另类中文字幕国产精品| 亚洲AV无码成人精品一区| 国产aⅴ综合色| 久久久国产精品成人免费| 在线电影欧美日韩一区二区私密| 少妇精品视频在线观看| 国产一区二区三区乱码| 久久久久久一级片| 国产精品久久欧美久久一区| 久久久人成影片一区二区三区观看 | 日本国产一区| 日韩一级片免费视频| 久久嫩草精品久久久精品| 国产一区二区在线播放视频| 久久久久久成人| 精品美女视频| 免费黄色在线播放| 在线观看视频91| 男女在线观看视频| 手机成人在线| 国产69精品一区二区亚洲孕妇| 五月婷婷六月婷婷| 欧美日韩福利在线观看| 精品美女视频| 日批在线观看视频| 欧美一区二区视频在线观看2020| 日本在线影院| 亚洲av综合色区| 久久久精品黄色| 手机在线精品视频| 成人网中文字幕|