国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频

使用uuid作為數(shù)據(jù)庫(kù)主鍵,被技術(shù)總監(jiān)懟了!

共 17456字,需瀏覽 35分鐘

 ·

2021-05-12 15:11

一、前言

在日常開發(fā)中,數(shù)據(jù)庫(kù)中主鍵id的生成方案,主要有三種

  • 數(shù)據(jù)庫(kù)自增ID
  • 采用隨機(jī)數(shù)生成不重復(fù)的ID
  • 采用jdk提供的uuid

對(duì)于這三種方案,我發(fā)現(xiàn)在數(shù)據(jù)量少的情況下,沒有特別的差異,但是當(dāng)單表的數(shù)據(jù)量達(dá)到百萬(wàn)級(jí)以上時(shí)候,他們的性能有著顯著的區(qū)別,光說理論不行,還得看實(shí)際程序測(cè)試,今天就帶著大家一探究竟!

二、程序?qū)嵗?/span>

首先,我們?cè)诒镜財(cái)?shù)據(jù)庫(kù)中創(chuàng)建三張單表tb_uuid_1、tb_uuid_2tb_uuid_3,同時(shí)設(shè)置tb_uuid_1表的主鍵為自增長(zhǎng)模式,腳本如下:

CREATE TABLE `tb_uuid_1` (
  `id` bigint(20unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(20DEFAULT NULL,
  PRIMARY KEY (`id`)
ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='主鍵ID自增長(zhǎng)';
CREATE TABLE `tb_uuid_2` (
  `id` bigint(20unsigned NOT NULL,
  `name` varchar(20DEFAULT NULL,
  PRIMARY KEY (`id`)
ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='主鍵ID隨機(jī)數(shù)生成';
CREATE TABLE `tb_uuid_3` (
  `id` varchar(50)  NOT NULL,
  `name` varchar(20DEFAULT NULL,
  PRIMARY KEY (`id`)
ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='主鍵采用uuid生成';

下面,我們采用Springboot + mybatis來實(shí)現(xiàn)插入測(cè)試。

2.1、數(shù)據(jù)庫(kù)自增

以數(shù)據(jù)庫(kù)自增為例,首先編寫好各種實(shí)體、數(shù)據(jù)持久層操作,方便后續(xù)進(jìn)行測(cè)試

/**
 * 表實(shí)體
 */

public class UUID1 implements Serializable {

    private Long id;

    private String name;
  
  //省略set、get
}
/**
 * 數(shù)據(jù)持久層操作
 */

public interface UUID1Mapper {

    /**
     * 自增長(zhǎng)插入
     * @param uuid1
     */

    @Insert("INSERT INTO tb_uuid_1(name) VALUES(#{name})")
    void insert(UUID1 uuid1);
}
/**
 * 自增ID,單元測(cè)試
 */

@Test
public void testInsert1(){
    long start = System.currentTimeMillis();
    for (int i = 0; i < 1000000; i++) {
        uuid1Mapper.insert(new UUID1().setName("張三"));
    }
    long end = System.currentTimeMillis();
    System.out.println("花費(fèi)時(shí)間:" +  (end - start));
}

2.2、采用隨機(jī)數(shù)生成ID

這里,我們采用twitter的雪花算法來實(shí)現(xiàn)隨機(jī)數(shù)ID的生成,工具類如下:

public class SnowflakeIdWorker {

    private static SnowflakeIdWorker instance = new SnowflakeIdWorker(0,0);

    /**
     * 開始時(shí)間截 (2015-01-01)
     */

    private final long twepoch = 1420041600000L;
    /**
     * 機(jī)器id所占的位數(shù)
     */

    private final long workerIdBits = 5L;
    /**
     * 數(shù)據(jù)標(biāo)識(shí)id所占的位數(shù)
     */

    private final long datacenterIdBits = 5L;
    /**
     * 支持的最大機(jī)器id,結(jié)果是31 (這個(gè)移位算法可以很快的計(jì)算出幾位二進(jìn)制數(shù)所能表示的最大十進(jìn)制數(shù))
     */

    private final long maxWorkerId = -1L ^ (-1L << workerIdBits);
    /**
     * 支持的最大數(shù)據(jù)標(biāo)識(shí)id,結(jié)果是31
     */

    private final long maxDatacenterId = -1L ^ (-1L << datacenterIdBits);
    /**
     * 序列在id中占的位數(shù)
     */

    private final long sequenceBits = 12L;
    /**
     * 機(jī)器ID向左移12位
     */

    private final long workerIdShift = sequenceBits;
    /**
     * 數(shù)據(jù)標(biāo)識(shí)id向左移17位(12+5)
     */

    private final long datacenterIdShift = sequenceBits + workerIdBits;
    /**
     * 時(shí)間截向左移22位(5+5+12)
     */

    private final long timestampLeftShift = sequenceBits + workerIdBits + datacenterIdBits;
    /**
     * 生成序列的掩碼,這里為4095 (0b111111111111=0xfff=4095)
     */

    private final long sequenceMask = -1L ^ (-1L << sequenceBits);
    /**
     * 工作機(jī)器ID(0~31)
     */

    private long workerId;
    /**
     * 數(shù)據(jù)中心ID(0~31)
     */

    private long datacenterId;
    /**
     * 毫秒內(nèi)序列(0~4095)
     */

    private long sequence = 0L;
    /**
     * 上次生成ID的時(shí)間截
     */

    private long lastTimestamp = -1L;
    /**
     * 構(gòu)造函數(shù)
     * @param workerId     工作ID (0~31)
     * @param datacenterId 數(shù)據(jù)中心ID (0~31)
     */

    public SnowflakeIdWorker(long workerId, long datacenterId) {
        if (workerId > maxWorkerId || workerId < 0) {
            throw new IllegalArgumentException(String.format("worker Id can't be greater than %d or less than 0", maxWorkerId));
        }
        if (datacenterId > maxDatacenterId || datacenterId < 0) {
            throw new IllegalArgumentException(String.format("datacenter Id can't be greater than %d or less than 0", maxDatacenterId));
        }
        this.workerId = workerId;
        this.datacenterId = datacenterId;
    }
    /**
     * 獲得下一個(gè)ID (該方法是線程安全的)
     * @return SnowflakeId
     */

    public synchronized long nextId() {
        long timestamp = timeGen();
        // 如果當(dāng)前時(shí)間小于上一次ID生成的時(shí)間戳,說明系統(tǒng)時(shí)鐘回退過這個(gè)時(shí)候應(yīng)當(dāng)拋出異常
        if (timestamp < lastTimestamp) {
            throw new RuntimeException(
                    String.format("Clock moved backwards.  Refusing to generate id for %d milliseconds", lastTimestamp - timestamp));
        }
        // 如果是同一時(shí)間生成的,則進(jìn)行毫秒內(nèi)序列
        if (lastTimestamp == timestamp) {
            sequence = (sequence + 1) & sequenceMask;
            // 毫秒內(nèi)序列溢出
            if (sequence == 0) {
                //阻塞到下一個(gè)毫秒,獲得新的時(shí)間戳
                timestamp = tilNextMillis(lastTimestamp);
            }
        }
        // 時(shí)間戳改變,毫秒內(nèi)序列重置
        else {
            sequence = 0L;
        }
        // 上次生成ID的時(shí)間截
        lastTimestamp = timestamp;
        // 移位并通過或運(yùn)算拼到一起組成64位的ID
        return ((timestamp - twepoch) << timestampLeftShift) //
                | (datacenterId << datacenterIdShift) //
                | (workerId << workerIdShift) //
                | sequence;
    }
    /**
     * 阻塞到下一個(gè)毫秒,直到獲得新的時(shí)間戳
     * @param lastTimestamp 上次生成ID的時(shí)間截
     * @return 當(dāng)前時(shí)間戳
     */

    protected long tilNextMillis(long lastTimestamp) {
        long timestamp = timeGen();
        while (timestamp <= lastTimestamp) {
            timestamp = timeGen();
        }
        return timestamp;
    }
    /**
     * 返回以毫秒為單位的當(dāng)前時(shí)間
     * @return 當(dāng)前時(shí)間(毫秒)
     */

    protected long timeGen() {
        return System.currentTimeMillis();
    }

    public static SnowflakeIdWorker getInstance(){
        return instance;
    }


    public static void main(String[] args) throws InterruptedException {
        SnowflakeIdWorker idWorker = SnowflakeIdWorker.getInstance();
        for (int i = 0; i < 10; i++) {
            long id = idWorker.nextId();
            Thread.sleep(1);
            System.out.println(id);
        }
    }
}

其他的操作,與上面類似。

2.3、uuid

同樣的,uuid的生成,我們事先也可以將工具類編寫好:

public class UUIDGenerator {

    /**
     * 獲取uuid
     * @return
     */

    public static String getUUID(){
        return UUID.randomUUID().toString();
    }
}

最后的單元測(cè)試,代碼如下:

@RunWith(SpringRunner.class)
@SpringBootTest()
public class UUID1Test 
{

    private static final Integer MAX_COUNT = 1000000;

    @Autowired
    private UUID1Mapper uuid1Mapper;

    @Autowired
    private UUID2Mapper uuid2Mapper;

    @Autowired
    private UUID3Mapper uuid3Mapper;

    /**
     * 測(cè)試自增ID耗時(shí)
     */

    @Test
    public void testInsert1(){
        long start = System.currentTimeMillis();
        for (int i = 0; i < MAX_COUNT; i++) {
            uuid1Mapper.insert(new UUID1().setName("張三"));
        }
        long end = System.currentTimeMillis();
        System.out.println("自增ID,花費(fèi)時(shí)間:" +  (end - start));
    }

    /**
     * 測(cè)試采用雪花算法生產(chǎn)的隨機(jī)數(shù)ID耗時(shí)
     */

    @Test
    public void testInsert2(){
        long start = System.currentTimeMillis();
        for (int i = 0; i < MAX_COUNT; i++) {
            long id = SnowflakeIdWorker.getInstance().nextId();
            uuid2Mapper.insert(new UUID2().setId(id).setName("張三"));
        }
        long end = System.currentTimeMillis();
        System.out.println("花費(fèi)時(shí)間:" +  (end - start));
    }

    /**
     * 測(cè)試采用UUID生成的ID耗時(shí)
     */

    @Test
    public void testInsert3(){
        long start = System.currentTimeMillis();
        for (int i = 0; i < MAX_COUNT; i++) {
            String id = UUIDGenerator.getUUID();
            uuid3Mapper.insert(new UUID3().setId(id).setName("張三"));
        }
        long end = System.currentTimeMillis();
        System.out.println("花費(fèi)時(shí)間:" +  (end - start));
    }
}

三、性能測(cè)試

程序環(huán)境搭建完成之后,啥也不說了,直接擼起袖子,將單元測(cè)試跑起來!

首先測(cè)試一下,插入100萬(wàn)數(shù)據(jù)的情況下,三者直接的耗時(shí)結(jié)果如下:

在原有的數(shù)據(jù)量上,我們繼續(xù)插入30萬(wàn)條數(shù)據(jù),三者耗時(shí)結(jié)果如下:

可以看出在數(shù)據(jù)量 100W 左右的時(shí)候,uuid的插入效率墊底,隨著插入的數(shù)據(jù)量增長(zhǎng),uuid 生成的ID插入呈直線下降!

時(shí)間占用量總體效率排名為:自增ID > 雪花算法生成的ID >> uuid生成的ID。

在數(shù)據(jù)量較大的情況下,為什么uuid生成的ID遠(yuǎn)不如自增ID呢?

關(guān)于這點(diǎn),我們可以從 mysql 主鍵存儲(chǔ)的內(nèi)部結(jié)構(gòu)來進(jìn)行分析。

3.1、自增ID內(nèi)部結(jié)構(gòu)

自增的主鍵的值是順序的,所以 Innodb 把每一條記錄都存儲(chǔ)在一條記錄的后面。

當(dāng)達(dá)到頁(yè)面的最大填充因子時(shí)候(innodb默認(rèn)的最大填充因子是頁(yè)大小的15/16,會(huì)留出1/16的空間留作以后的修改),會(huì)進(jìn)行如下操作:

  • 下一條記錄就會(huì)寫入新的頁(yè)中,一旦數(shù)據(jù)按照這種順序的方式加載,主鍵頁(yè)就會(huì)近乎于順序的記錄填滿,提升了頁(yè)面的最大填充率,不會(huì)有頁(yè)的浪費(fèi)
  • 新插入的行一定會(huì)在原有的最大數(shù)據(jù)行下一行,mysql定位和尋址很快,不會(huì)為計(jì)算新行的位置而做出額外的消耗

3.2、使用uuid的索引內(nèi)部結(jié)構(gòu)

uuid相對(duì)順序的自增id來說是毫無(wú)規(guī)律可言的,新行的值不一定要比之前的主鍵的值要大,所以innodb無(wú)法做到總是把新行插入到索引的最后,而是需要為新行尋找新的合適的位置從而來分配新的空間。

這個(gè)過程需要做很多額外的操作,數(shù)據(jù)的毫無(wú)順序會(huì)導(dǎo)致數(shù)據(jù)分布散亂,將會(huì)導(dǎo)致以下的問題:

  • 寫入的目標(biāo)頁(yè)很可能已經(jīng)刷新到磁盤上并且從緩存上移除,或者還沒有被加載到緩存中,innodb在插入之前不得不先找到并從磁盤讀取目標(biāo)頁(yè)到內(nèi)存中,這將導(dǎo)致大量的隨機(jī)IO
  • 因?yàn)閷懭胧莵y序的,innodb不得不頻繁的做頁(yè)分裂操作,以便為新的行分配空間,頁(yè)分裂導(dǎo)致移動(dòng)大量的數(shù)據(jù),一次插入最少需要修改三個(gè)頁(yè)以上
  • 由于頻繁的頁(yè)分裂,頁(yè)會(huì)變得稀疏并被不規(guī)則的填充,最終會(huì)導(dǎo)致數(shù)據(jù)會(huì)有碎片

在把值載入到聚簇索引(innodb默認(rèn)的索引類型)以后,有時(shí)候會(huì)需要做一次OPTIMEIZE TABLE來重建表并優(yōu)化頁(yè)的填充,這將又需要一定的時(shí)間消耗。

因此,在選擇主鍵ID生成方案的時(shí)候,盡可能別采用uuid的方式來生成主鍵ID,隨著數(shù)據(jù)量越大,插入性能會(huì)越低!

四、總結(jié)

在實(shí)際使用過程中,推薦使用主鍵自增ID和雪花算法生成的隨機(jī)ID。

但是使用自增ID也有缺點(diǎn):

  1. 別人一旦爬取你的數(shù)據(jù)庫(kù),就可以根據(jù)數(shù)據(jù)庫(kù)的自增id獲取到你的業(yè)務(wù)增長(zhǎng)信息,很容易進(jìn)行數(shù)據(jù)竊取。

  2. 其次,對(duì)于高并發(fā)的負(fù)載,innodb在按主鍵進(jìn)行插入的時(shí)候會(huì)造成明顯的鎖爭(zhēng)用,主鍵的上界會(huì)成為爭(zhēng)搶的熱點(diǎn),因?yàn)樗械牟迦攵及l(fā)生在這里,并發(fā)插入會(huì)導(dǎo)致間隙鎖競(jìng)爭(zhēng)。

總結(jié)起來,如果業(yè)務(wù)量小,推薦采用自增ID,如果業(yè)務(wù)量大,推薦采用雪花算法生成的隨機(jī)ID。

本篇文章主要從實(shí)際程序?qū)嵗霭l(fā),討論了三種主鍵ID生成方案的性能差異, 鑒于筆者才疏學(xué)淺,可能也有理解不到位的地方,歡迎網(wǎng)友們批評(píng)指出!

五、參考

1、方志明 - 使用雪花id或uuid作為Mysql主鍵,被老板懟了一頓!



瀏覽 36
點(diǎn)贊
評(píng)論
收藏
分享

手機(jī)掃一掃分享

分享
舉報(bào)
評(píng)論
圖片
表情
推薦
點(diǎn)贊
評(píng)論
收藏
分享

手機(jī)掃一掃分享

分享
舉報(bào)

感谢您访问我们的网站,您可能还对以下资源感兴趣:

国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频 91狠狠综合久久久久久| 欧美激情色色| 一本道高清无码视频| 日韩在线中文字幕视频| 影音先锋国产AV| 亚洲成人在线免费| 男人的天堂色琪琪| 亚洲精品字幕久久久久| 黄色视频在线免费看| 中国熟妇XXXX18| 18禁网站免费| 日本高清不卡视频| 尤物网站在线播放| 久色婷婷| 无码秘蜜桃一区二区三区| 国产精品免费麻豆| 永久免费看片视频5355| 国产A√| 婷婷在线观看视频| 日韩欧美中文| 亚洲高清无码一区二区三区| 免费国产A片| 又黄又爽视频| 99国产一区| 色噜噜狠狠一区二区三区| 超碰自拍99| 国产91人| 人人摸人人摸| www.狠狠操| 国产一区二区在线视频| 超碰人人艹| av午夜福利| 国产色呦呦| 国产三级片AV| 国产小电影在线观看| 91天天操| 友田真希一级婬片A片| 伊人久久大香色综合久久| 一级大黄色毛片| 91白浆| 欧美性爱一区二区| 99这里只有精品视频| 成人AA片| 久久久久婷婷| av天堂中文在线| 中文字幕一区二区三区日本在线| 亚洲国产无码在线观看| 一级大片免费看| 18害羞勿进网站国产| 成人无码影院日韩,成人年…| 大香蕉尹人在线视频| 蜜臀久久99精品久久一区二区| 亚洲AⅤ欧美AⅤ| 国产成人电影免费在线观看| av一区二区三区| 在线播放你懂的| 一起操在线观看| 成人三级在线观看| 免费看黄色视频| 人人操免费| 日本免费高清视频| 色色毛片| 一级片免费视频| 2018天天干天天操| 熟女91视频| av无码中文| 青草草在线| 国产不卡视频| 丝瓜av| 精品欧美一区二区三区久久久| 一级片免费网站| 亚洲色,天堂网| 日韩一区二区三| 国产AV播放| 久久大鸡巴| 在线播放内射| 成人A片免费视频| 天天操人人| 中国黄色学生妹一级片| 大陆一级片| 色婷婷六月天| 日本精品中文字幕| 欧美大香蕉在线视频| 中文国产字幕| 成人午夜毛片| 日本久久久| 人人妻人人爽人人精品| 久草中文视频| 精品人妻一区二区| 操逼逼网| 国产精品成人电影| 中文字幕久久播放| 久操伊人大香蕉| 日本精品久久| 国产午夜精品视频| 苏妲己一级婬片A片| 午夜成人免费福利| 黄色草莓视频| 黄色大片在线播放| 日韩中文字幕av在线| 黄色视频免费在线观看网站| 人成免费在线视频| 国产成人无码精品久在线观看| 国产在线网址| 久久国产黄色视频| 波多野在线视频| 91黄色电影| 加勒比精品| 大香蕉国产精品| 成人免费视频在线观看| 成人AV免费| 91色视频在线观看| 人人操人人爱人人摸| 91色人妻| 蜜桃视频无码区在线观看| 国产高清小视频| 日韩在线成人视频| 九九热re99re6在线精品| 亚洲成人AⅤ| 91网址| 欧美日韩一级视频| 超碰在线中文字幕| 成人视频网站18| 男人AV网| 日韩av一级| 亚洲丁香五月天| 精品啪啪| 熟女老阿V8888AV| 久久久久久久久久国产| 免费无码婬片AAAA片直播| 丁香成人五月天| 六月婷婷综合| 天天日天天干天天操| 手机看片久草| 黄色一级片在线看| 日本无码视频在线| 天堂a√在线8| 做爰视频毛片下载蜜桃视频。| 日韩高清无码专区| 婷婷一区二区三区| 久久久久久国产| 男人午夜AV| 久久综合加勒比| 国产熟女自拍| 日韩欧美一级二级| 激情五月婷婷丁香| 日本高清一区| 五月天婷婷色| 加勒比无码人妻| 91精品国产人妻| 成人在线18| 在线亚洲AV| 91碰碰| 7777影视电视剧在线观看官网| 水果派AV| 亚洲乱伦| 国产精品午夜在线观看| 国产区在线视频| 免看一级a毛片一片成人不卡| 在线看91| 无码精品人妻一区二区三区漫画| 这里有精品| 久久黄色网络| 国产一级A片免费播放| 亚洲精品国产精品国自产A片同性 丰满人妻一区二区三区四区不卡 国产1级a毛a毛1级a毛1级 | 欧美性爱福利| 亚洲AV无码乱码精品| 一级国产黄色视频| 亚洲视频偷拍| 波多野结衣一级| 麻豆亚洲AV成人无码久久精品| 无码视频在线观看免费| 日韩一区二区三区在线观看| 佐山爱人妻无码蜜桃| 中文字幕在线视频无码| 国产毛片毛片| 中文字幕免费在线播放| 深爱五月婷婷| 中文字幕在线观看福利视频| 午夜福利免费在线观看| 日本AⅤ电影| 欧美五月激情| 日本黄色视频免费观看| 欧美成人一区免费视频| 大香蕉玖玖| 国产一级片免费| ww久久| 免费操逼视频网站| 欧美毛视频| 国产黄色电影在线| 大学生一级特黄大片| 国产美女av| 91色色色| AⅤ视频在线观看| 91麻豆国产福利在线观看| 狠狠干婷婷| 操逼网站在线观看| 国内精品一区二区| 东京热网站在线观看| 色777网站| 丝袜足交在线| 伊人在线观看视频| 天天操夜夜操视频免费高清| 婷婷69| 免费观看黄色电影| 精品福利在线观看| 电家庭影院午夜| 国产欧美成人在线| 豆花网| 操东北老女人| 亚洲AV无码成人精品久久久| 免费作爱视频| 天天干天天日天天色| 国产高清在线视频| 亚洲精品无码在线播放| 最新日韩在线| 亚洲中文字幕免费观看视频| BBB搡BBB搡BBB搡BBB| 亚洲无码小电影| 久久九九99| 天天干夜夜操| 亚洲高清成人| 日韩一区无码| 18SAV| 老司机精品| 在线免费毛片| 国产精品福利在线| 国产一级AA片| 国产做受91一片二片老头| 国产AⅤ| 欧美大香蕉伊人网| 啊啊啊啊啊在线观看| 天天操天天撸| 色交视频| 岛国无码AV在线观看| 久久嫩草国产成人一区| 广东BBW搡BBBB搡| 爱爱视频日韩| 色婷婷久综合久久一本国产AV| 最新AV在线| 亚洲中文字幕久久日| 日本爱爱片| 五月天婷婷丁香综合视频| 国产无遮挡又黄又爽又色学生软件| 麻豆精品在线播放| а中文在线天堂精品| 爆操91| 人妻少妇91精品一区黑人| 欧美日在线观看| 狼友视频在线免费观看| 麻豆三级片| 国产黄色Av| 99东京热| www.亚洲无码| 好男人一区二区三区在线观看| 99免费在线观看视频| 蜜臀AV在线| 黄色av网站免费| 国产91网| 欧美中文字幕| 成年人视频网| 久久国产性爱| 天天爽夜夜爽AA片免费| 欧美成人看片黄a免费看| 婷婷伊人綜合中文字幕| TokyoKot大交乱无码| 翔田千里91| 国产精品你懂的| 国产91黄色| 黄片51| 在线观看中文字幕av| 久久久久久久极品内射| 浮力影院欧美| 亚洲三级视频| 久久AA| 日韩精品一二三区| 乱子伦一区二区三区视频在线观看| 在线看片av| 青青草97国产精品麻豆| 五香丁香天堂网| 国产精品成人一区二区| 欧美日韩视频在线| 免费人成视频在线播放| 躁BBB躁BBB添BBBBBB| 激情五月天小说网| 天天射天天操天天干| 亚洲成人av在线| 看免费黄色录像| 亚洲1区2区| 不卡无码中文字幕一区| 色天堂污| 清清草视频| 五月天久久久久久久| 四虎永久在线精品| 欧洲黑人成人A版免费视频| 最近日本中文字幕中文翻译歌词| av无码网站| 久热中文在线观看精品视频| 免费一级A片在线播放| 在线观看免费完整版中文字幕视频| 婷婷五月中文| 国产伦子伦一级A片免费看小说| 黑人在线播放| 人妻操逼| 国产精品一级二级三级| 国产欧美在线视频| 色婷婷在线视频| 成人在线一区二区三区| 大香蕉日韩| 囯产精品久久| 五月丁香花| 怡春院日韩| 99视频精品全部免费看| 免费观看色情视频| 亚洲色五月天| 日韩做爱视频| 婷婷69| 欧美性网| 九七在线视频| 一区二区三区无码在线观看| 福利视频免费观看| 免费视频二区| 成人久操| 91免费在线看| 爱搞在线观看wwww| 日韩A片免费看| 大屌探花| 波多野结衣亚洲视频| 国产激情在线| 国产午夜激情视频| 高清无码黄片| 国产剧情一区二区三区| 韩国AV在线| 欧美成人免费在线| 91av电影| 国产91在线一区| 五月天丁香社区| 欧美精品久久久久久久久| 69人妻人人澡人人爽人人精品| 天天干狠狠| 国内老熟妇对白HDXXXX| 120分钟婬片免费看| A在线| 夜夜夜久久久| 操东北女人逼| 欧美性爱日韩| 99色色网| 1024香蕉视频| 亚洲一区二区三| 黃色毛片A片AAAA级20| 亚洲一区二区三区在线| 欧美男女交配视频| 91精品国产综合久久久蜜臀九色 | 亚洲无码三级片在线观看| 一区二区无码免费| 狠狠大香蕉| 亚洲欧美激情小说| 丁香花在线高清完整版视频 | 国产精品视频久久| 丰满人妻一区二区三区四区53| 精品在线播放| 日韩啪啪啪网站| 国产99热| 99久久99久久精品免费看小说。| 操比一区| 奇米影视狠狠干| 国产人成视频免费观看| 91草视频| 欧美特黄AAAAAA| 久久视频精品| 国产精品在线看| 亚洲无码性爱| 99久久伊人| 插菊花综合| 久久黄色视频免费观看| 青青草免费在线视| av在线资源观看| 日韩高清无码成人| 亚洲精品成人无码毛片| 亚洲无码少妇| 777777国产77777777| 国产精品一色哟哟哟| 亚洲成人中文字幕| 久久99久久99| 強暴人妻一区二区三区| 人妻人人澡| 51嘿嘿嘿国产精品伦理| 99这里只有精品视频| 中文字幕免费无码| 91成人免费视频| 操逼逼综合网| 在线99精品| 色婷婷在线视频观看| 18精品爽视频| 亚洲久久视频| 天堂久久久久| 久久亚洲日韩天天做日日做综合亚洲| 欧美日韩国产精品成人| 欧美日韩一区二区三区四区五区六区| 日韩av免费在线观看| 午夜福利在线播放| 亚洲色图15P| 成人午夜福利视频| 在线播放日韩| 亚洲无码精品在线| 欧美性生交18XXXXX无码| 综合+++夜夜| 亚洲黄色成人| 亚洲AV片一区二区三区| www.黄色在线观看| 国产ts| 久久中文字幕综合| 亚洲中文字幕免费视频| 高清无码视频免费版本在线观看| 日韩无码国产精品| 精品久久一区二区三区四区| 成人免费无码毛片| 丰满少妇在线观看网站| 玖玖综合网| 高清中字无码| 亚洲av男人天堂| 强行征服邻居人妻HD高清日本| 免费黄色av| 亚洲女人视频| 国产精品99久久免费黑人人妻| 99无码视频| 中文字幕亚洲视频在线观看| 欧美大香蕉伊人网| 亚洲天天| 国产中文字幕av| 2019中文字幕在线| 蜜桃91精品秘成人取精库| 国产精品久久久久久久久借妻 | 91抽插| 男人操女人视频网站| 亚洲视频网| 欧美日韩免费在线| 成人亚洲天堂| 东京热这里只有精品| 北条麻妃精品在线| 久久久久久99| 97国产在线视频| 熟妇槡BBBB槡BBBB图| 免费观看高清无码视频| 尻屄视频在线观看| 国产不卡在线视频| 欧美性猛交XXXX乱大交| 成人黄片18| 俺去俺来也| 少妇在线视频| 人妻视频在线| 性无码一区二区三区在线观看 | 日韩久久中文字幕| 黄色A片网| 蜜桃传媒一区二区亚洲AV| 尤物在线免费视频| 思思热在线视频播放| 黄网在线看| 懂色av懂色av粉嫩av无码| 久久久偷拍视频| 二区无码| 3p绿帽黑人看自己老婆| 五月婷在线视频| 无码成人视频| 黄色片A片| 国产免费无码视频| 99视频在线免费| www色色| 日韩无码操逼视频| 亚洲美女网站免费观看网址| 看操b视频| 亚洲无码一二三区| 国产91视频在线观看| 国产欧美一| 波多野结衣黄色视频| 北条麻妃被躁57分钟视频在线 | 91伊人久热精品| www.亚洲无码| 成人视频无码| 五月激情六月| 成人精品亚洲人成在线| 一级免费毛片| 日韩免费黄色电影| 中文字幕VA| 99久操| 欧美精品久久久| 精品成人无码| 五月婷视频| 国产成人综合亚洲| 爽好紧别夹喷水无码| 三级片在线网站| 国产亚洲成人综合| 亚洲无码一卡| 色老板在线观看| 国产精品视频福利| 欧一美一婬一伦一区二区三区黑人-亚| 日韩性无码| 伊人在线观看视频| 69国产精品| 天堂av在线免费观看| 亚洲午夜影院在线| 搡BBB搡BBBB搡BBBB| 超碰人人射| 亚洲男人天堂视频| AV国产精品| www.青青草视频| A片免费网站| 日韩有码一区| 一级a片免费| 麻豆精品一区二区三区| 综合伊人| 97超碰在| 97天天干| 韩国无码视频在线观看| 精品乱子伦一区二区三区毛| 婷婷五月天影院| av黄色在线| 亚洲无码在线播放视频| 久久无码人妻精品一区二区三区| 一本一道vs波多野结衣| 亚洲精品一区二区三区| 好色婷婷| 在线观看视频亚洲| 自慰喷水在线观看| 18成人毛片| 国产成人在线播放| 一级黄色片在线观看| 人人干天天操| 国产a片免费观看| 99精品欲| 五月丁香六月激情| 亚洲无码视频免费在线观看| 欧一美一色一伦一A片| 91久久精品日日躁夜夜躁欧美| 色哟哟视频在线观看| 国产激情在线观看| 婷婷中文字幕| 最新中文字幕免费MV第一季歌词| 四川BBB搡BBB爽爽爽电影| 高清在线无码视频| 黄色片免费视频网站| 强伦轩一区二区三区四区播放方式 | 欧美性爱a视频| 激情淫荡少妇| 亚洲三级片在线播放| 91探花视频| 无码欧洲| 中文字幕牛牛婷婷| 国产精品国产三级国产专区52| 神马午夜av| 日本不卡在线| 91超碰在线免费观看| 国产三级片自拍| 久久偷看各类wc女厕嘘嘘偷窃| 四虎亚洲无码| 狠狠撸狠狠撸| 午夜操逼| 一本大道东京热av无码| 自拍av在线| 69婷婷国产精品| av超碰在线| 日韩中文字幕专区| 亚洲经典免费视频| 毛片69| 免费视频一区| 91久久国产| 亚洲综合视频在线| 密臀av在线| 婷婷毛片| 超碰在线人人爱| 国内精品人妻无码久久久影院蜜桃| 日韩无码人妻一区二区三区| 黄色大片免费看| 久久国产av| 欧美在线色图| 精品久久久国产| 日韩天堂在线观看| 免费成人视频在线观看| 一本久久综合亚洲鲁鲁五月天| 成人欧美一区二区三区白人| 操逼影片| 国产—a毛—a毛A免费看图| 熟妇一区二区| 91蝌蚪91九色| 99re这里只有精品6| 大香蕉伊人网视频| 无码人妻丰满熟妇精品区| 性爱一区| 久久久麻豆| 丁香五月天视频| 成人亚洲AV日韩AV无码| 中文字幕在线网址| 婷婷丁香一区二区三区| 一本色道久久| 国内视频一区| 人人操人人妻人人看| 91AV久久| 丁香五月天婷婷久久| 成人播放视频| 久久福利导航| 日韩黄色电影在线观看| 成人乱妇无码AV在线| www.一区二区三区| 91欧美精品| 黄色电影网站在线观看| 奇米影视77777| 久久久久久久久久国产精品| 国产在线播放av| 精品视频免费在线| 婷婷V亚洲V丁香月天V日韩V | 精品黄色毛片| 麻豆天美传媒AV果冻传媒| 日韩人妻丰满无码区A片| 看毛片的网站| 蜜桃传媒一区二区亚洲AV| 国产成人在线免费视频| 欧美l∨视| 夜夜夜影院| 日韩亚洲欧美在线观看| 在线看91| 永久免费黄色视频| 人成免费在线视频| 无码AV动漫| 停停六综合| 特级西西人体444www高清 | 欧美成人黄色A片| 日本女人牲交视频| 中文子幕免费毛片| 免费黄色视频在线| 一级欧美黑人大战白妞| chinese搡老熟老妇人| 欧美久操| 91爱爱·com| www.五月天.con| 特级444www| 在线观看欧美黄片| 乱伦一区二区三区| 一本色道久久综合亚洲怎么玩| 骚BBBB槡BBB槡BBB| 国产嫩草影院| AAA亚洲| 好吊妞操| 国产操逼图片| 日欧一级片| 久热中文在线观看精品视频| 亚洲无码你懂的| 国产在线色视频| 亚洲AV资源在线| 久热中文在线观看精品视频 | 裸体黄色一极大片| 日韩人妻精品一区二区| AV无码资源| 国产一毛a一毛a在线观看| 免费观看黄色成人网站| 中文字幕一二三| av日韩在线播放| 免费看V片| 大香蕉尹人在线视频| 嫩BBB槡BBBB槡BBBB| 午夜一区二区三区免费| 水果派红桃AV解说| 国产成人小电影| 国产一区二区波多野结衣| 中文资源在线a| 操屄在线视频| 免费涩涩无遮挡18国产| 影音先锋色AV| 亚洲一卡二卡三卡四卡免| 99精品视频国产| 久久偷看各类wc女厕嘘嘘偷窃 | 国产精品乱草| 日韩无码精品AV| 大香蕉伊人网在线| 国产成人电影一区二区| 欧美日韩色视频| 揉BBB搡BBB搡BBB| 日韩成人AV毛片| 欧美午夜激情视频| 黄色在线视频观看| 日韩免费黄色视频| 久久久精品午夜人成欧洲亚洲韩国| 日皮视频在线| 青春草免费视频| 免费乱伦视频| 色婷婷亚洲综合| 91无码电影| 欧美成人无码片免费看A片秀色| 成人无码精品| 俺去操| 中国乱伦视频| 国产伊人自拍| 99在线观看视频在线高清| 热re99久久精品国产99热 | 西西人体大胆裸体A片| 自拍三级片| 国产精品一线| 西西人体WW大胆无码| 人人看人人摸人人操| 五月丁香啪啪啪| 国精产品秘一区二区| 亚洲区无码| 日皮视频在线观看免费| 手机看片欧美+日韩+国产| 青春草在线播放| 成人性爱在线视频| 黄色免费看| 国产激情视频在线播放| 最近中文字幕免费MV第一季歌词怀孕 | 免费中文字幕| 亚洲日韩中文字幕无码| 神马午夜影院| 国产1级片| 午夜福利视频网站| 国产乱子伦精品免费,| 内射91| 日韩人妻无码一区| 水蜜桃视频在线观看| 亚洲口味重一级黄片| 在线观看免费欧美操逼视频| 久久性爱免费视频| 欧美色爽| 777中文字幕| 91福利在线视频| 亚洲AV电影网| 天天插天天干| 高清无码视频在线观看| 操逼视频观看免费| 欧美一级操逼视频| 在线黄色视频网站| 天堂a在线| 你懂的网址在线观看| 欧美日韩一级视频| 中文字幕无码av| 麻豆天美传媒AV果冻传媒| 国产精品成人69| 天天操人人操| 大炕上公让我高潮了六次| 操在线视频| 爱爱黄色视频| 日本不卡二区| 全部免费黄色视频| 亲子乱婬-一级A片| 久久综合17p| 男人资源网| 中文字幕人成人乱码亚洲电影| 欧美69视频| 久久精品美臀| 伊人影院麻豆| 亚洲国产精品VA在线看黑人| 亚洲AV播放| 在线视频免费观看| 自拍偷拍视频网址| 羞羞色院91蜜桃| 中文原创麻豆传媒md0052| 亚洲成人高清在线| av无码一区二区| 国产一级a毛一级a做免费图片| 毛片毛片毛片毛片| 午夜福利高清在线观看| 一级黄色影院| 久9精品| 日韩AV无码一区二区三区| 免费v片在线观看| 中国女人操逼视频| 国产一级精品视频| 黑种人配中国少妇HD| 一区二区三区精品无码| 亚洲欧美国产毛片在线| 欧美日韩国产一区二区三区| adn日韩av| 亚洲插逼视频| 免费人成视频在线| 日本在线视频一区二区| 91在线小视频| 欧美性受XXXX黑人XYX性爽| 亚洲无码在线高清| 国产精品码ls字幕影视| 成年女人免费视频| 狠狠干2018| 欧美三级在线| 成人黄色视频网| 亚洲成人不卡| 四lll少妇BBBB槡BBBB| 一道本在线观看| 亚洲欧美熟妇久久久久久久久 | 日韩视频成人| 国产做爰XXXⅩ久久久骚妇| 亚洲高清无码免费观看| 成人电影91| 人妻精品一二三| 日韩AⅤ无码一区二区三区| 三p视频| 五月天伊人| 欧美黄网站| 动漫日逼| 人操人操人操| 香蕉视频亚洲| GOGO人体做爰大胆视频| 久久婷婷久久| 国产成人精品久久二区二区91| 日本中文字幕不卡| 四虎黄色网| 日韩大尺度Av| 日韩午夜在线观看| 日韩亚洲中文字幕| 色香蕉视频| 色a视频| 成人自拍电影| 国产高清色| 日日精品| 黄色视频免费观看| 欧美群交videotv群交| 亚洲欧美日韩电影| www.操逼| 亚洲av二区| 2014av天堂网| 黄页网站免费观看| 在线观看AV91| 香蕉中文在线| 骚熟妇| 足浴小少妇-88AX| 伊人久久大香色综合久久| 夜色88V精品国产亚洲| 中文无码一区| 亚洲一级无码| 日韩精品人妻| 性爱一级| 精品自拍视频| 一级黄色在线观看| 国产无码AV| 无码囯无精品毛片大码| 免费v片| 亚洲欧美日韩免费| 国产成人黄色| 五月伊人网| 丁香五月天婷婷久久| www.97av| 蜜桃秘av一区二区三区安全| 色高清无码免费视频| 欧美一区二区三区系列电影| 北条麻妃中文字幕在线观看| 四川w搡BBB搡wBBB搡| 亚洲国产av一区| 久久偷看各类wc女厕嘘嘘偷窃 | 亲子伦一区二区三区观看方式| 国产麻豆三级片| 中文字幕在线观看一区| 天堂中文在线a| 国产黄色视频在线免费看| 蜜桃免费视频| 牛牛久久| 亚洲视频在线视频| 国产91在线播放| 久久A√一区二区| 亚洲欧美不卡| 足交在线观看| 久久国产精| 大香蕉尹人在线观看| 亚洲自拍偷拍视频| 亚洲AV综合色区无码国产播放| 日中文字幕| 亚洲中文无码字幕| 欧美性猛交XXXX乱大交| h片在线免费观看视频| 中文字幕人妻日韩在线| 亚洲精品乱码久久久久久蜜桃欧美 | 你懂的在线观看| 天天操天天谢| 国产黄色小视频在线观看| 日本精品二区| 亚洲无码A片在线| 草莓av| 91丨九色丨东北熟女| 手机在线看片av| 精品乱子伦一区二区三区在线播放| 伊人久久久| 老女人操屄| 成人福利午夜A片公司| 欧美在线天堂| 亚洲AV无码成人精品区www| 亚洲美女一区| 欧美99| 亚洲AⅤ无码一区二区波多野按摩| 97成人人妻一区二区三区| 人人干人人操人人爱| 五月婷视频| 九九超碰| 国产美女被| 蜜桃精品视频在线观看| 久久AV电影| av官网| 国产精品无码白浆高潮| 日韩激情无码视频精选| 国产日韩一区二区三区| 一区二区三区在线观看视频| 亚洲视频精选| 2025av天堂网| 东京热综合影院| 国产乱伦AV网站| jizzjizzjizzjizz|