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

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

共 17713字,需瀏覽 36分鐘

 ·

2021-04-14 17:29


看完本文,你一定會(huì)有所收獲

一、摘要

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

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

對(duì)于這三種方案,我發(fā)現(xiàn)在數(shù)據(jù)量少的情況下,沒(méi)有特別的差異,但是當(dāng)單表的數(shù)據(jù)量達(dá)到百萬(wàn)級(jí)以上時(shí)候,他們的性能有著顯著的區(qū)別,光說(shuō)理論不行,還得看實(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來(lái)實(shí)現(xiàn)插入測(cè)試。

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

以數(shù)據(jù)庫(kù)自增為例,首先編寫(xiě)好各種實(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的雪花算法來(lái)實(shí)現(xiàn)隨機(jī)數(shù)ID的生成,工具類如下:

public class SnowflakeIdWorker {

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

    /**
     * 開(kāi)始時(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í)間戳,說(shuō)明系統(tǒng)時(shí)鐘回退過(guò)這個(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;
        // 移位并通過(guò)或運(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的生成,我們事先也可以將工具類編寫(xiě)好:

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)境搭建完成之后,啥也不說(shuō)了,直接擼起袖子,將單元測(cè)試跑起來(lái)!

首先測(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)來(lái)進(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ì)寫(xiě)入新的頁(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來(lái)說(shuō)是毫無(wú)規(guī)律可言的,新行的值不一定要比之前的主鍵的值要大,所以innodb無(wú)法做到總是把新行插入到索引的最后,而是需要為新行尋找新的合適的位置從而來(lái)分配新的空間。

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

  • 寫(xiě)入的目標(biāo)頁(yè)很可能已經(jīng)刷新到磁盤上并且從緩存上移除,或者還沒(méi)有被加載到緩存中,innodb在插入之前不得不先找到并從磁盤讀取目標(biāo)頁(yè)到內(nèi)存中,這將導(dǎo)致大量的隨機(jī)IO
  • 因?yàn)閷?xiě)入是亂序的,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來(lái)重建表并優(yōu)化頁(yè)的填充,這將又需要一定的時(shí)間消耗。

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

四、總結(jié)

在實(shí)際使用過(guò)程中,推薦使用主鍵自增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é)起來(lái),如果業(yè)務(wù)量小,推薦采用自增ID,如果業(yè)務(wù)量大,推薦采用雪花算法生成的隨機(jī)ID。

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

五、參考

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


1、阿里云盤正式公測(cè)!免費(fèi)領(lǐng)1年云盤擴(kuò)容碼,速來(lái),先到先得!
2、牛逼!IntelliJ IDEA居然支持視頻聊天了~速來(lái)嘗鮮!快來(lái)沖一波
3、微信這些表情包,我可能再也不敢用了!你還用嗎?
4、知名國(guó)產(chǎn)網(wǎng)盤翻車?清空免費(fèi)用戶文件后,又開(kāi)始清理付費(fèi)用戶資源
5、Chrome新功能曝光:你訪問(wèn)的敏感網(wǎng)站可以自動(dòng)隱藏起來(lái)
6、萬(wàn)萬(wàn)沒(méi)想到,“紅孩兒”竟然做了程序員,還是CTO!
7、徒手?jǐn)]一個(gè)Spring Boot中的starter,解密自動(dòng)化配置,超級(jí)棒!

點(diǎn)分享

點(diǎn)收藏

點(diǎn)點(diǎn)贊

點(diǎn)在看

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

手機(jī)掃一掃分享

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

手機(jī)掃一掃分享

分享
舉報(bào)

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

国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频 综合激情视频| 围内精品久久久久久久久久‘变脸| 中文字幕免费一区| 欧美成人视频18| 狠狠穞A片一區二區三區| 日韩免费中文字幕A片| 久操国产视频| 亚洲无码黄色电影| 成人伊人| jk无码| 九九午夜| 久久精彩免费视频| 成人性生交大片免费看小芳| 天堂亚洲AV无码精品成人| 日本黄色视频在线播放| 国产一级婬片A片AAA樱花| 精品国产va久久久久久久| 在线观看黄色| 国产人国产视频成人免费观看… | 亚洲一区二区三| 人人看人人爱| 欧美成人手机在线看片| 天天澡日日久| 99性视频| 国产一区二区三区在线| 天堂中文字幕在线| 波多野结衣高清无码视频| 亚洲V在线| 蜜臂AV| 黄色成人视频网站在线观看| 日本韩国叼嘿片| 一起操在线观看| A级毛片在线观看| 国产高潮在线| 91人妻人人爽人人澡| 亚洲无码少妇| 亚洲欧洲免费看| 亚洲中文视频| 国产AV毛片| 国产最新视频| 久久久黄色视频| 大香蕉综合久久| 特黄无码| 国产日韩欧美久久| 日韩高清精品在线| 国产A片录制现场妹子都很多| 久久黄色视频网站| 51妺嘿嘿午夜福利| 久操视频在线免费观看| 18禁激韩| 亚洲人成小说| 人人做人人做人人做,人人做全句下一 | 黄色工厂这里只有精品| h片无码| 玖玖婷婷| 人人操人人网站| 德国肥妇熟妇BBwBBw| 日本处女性高潮喷水视频| 四虎精品| 人人妻人人澡人人爽人人欧美一区| 性满足BBWBBWBBW| 亚洲精品久久久久avwww潮水| 亚韩av| 无码人妻久久一区二区三区蜜桃| 高清无码视频免费版本在线观看| 伊人久久大香蕉视频| 日日骚中文字幕| 日本爱爱视频| 高清无码免费视频| 奇米影视亚洲春色| 婷婷色在线| av无码网站| 成人特级毛片| 无码不卡在线观看| 人妻熟女一区二区| 日批网站视频| 中国一级黄色毛片| 韩国三级HD久久精品HD| 91超碰免费在线| 老太老熟女城中层露脸60| 在线免费观看成人网站| 18禁AV在线| 一级a爱视频| 日韩电影免费在线观看| 亚洲三级精品| 国产玖玖爱| 国产主播av| 久久久久久无码日韩欧美电影| 国产av资源| 高清无码网站| 一本在线| 色色婷婷五月天| 激情五月天网站| 在线观看91| 山东wBBBB搡wBBBB| 国产日韩精品无码去免费专区国产 | 欧美精品久久久| 美国久久久| 日本黄色三级片| 午夜黄色电影| 亚洲福利片| 一级黄色电影网站| 青娱乐自拍视频| 亚洲网站在线| 日韩一二区| 欧美日韩精品| 一区二区三区视频免费| 天天干天天操天天| 欧美一级在线| 久久免费高清视频| 欧美自拍视频| 久久福利| 欧美精品成人免费片| 日韩中文性受视频| 成人国产精品在线观看| 在线免费小黄片| 成人性生活影视av| 99AV| 亚洲欧洲自拍| 伊人免费视频在线观看| 国产美女自拍| 中文字幕一级A片高清免| 综合AV在线| 亚洲欧洲无码视频| 成人网站欧美| 四川少妇bbbbbbbbb| 亚洲精品中文字幕成人片| 亚洲成年视频| 人人亚洲| 日本不卡在线视频| 自拍AV在线| 中文字幕国产视频| 国产高清无码免费| 欧美精品久久久| 天天做| 一见钟情的韩国电影| 日本操B久久| 国产精品可站18| 毛片黄片| 日韩在线视频二区| 国精自拍| 亚洲成人无码视频在线观看| 在线aaa| 亚洲小视频在线播放| 草久网| 特逼视频| 欧美肏屄| 日韩高清无码一区| 99在线观看| 国产精品怡红院有限公司| 无码人妻丰满熟妇精品区| 欧美精品一区二区三区蜜臀 | 波多野吉衣毛片| 黄色亚洲| 一本一道久久综合狠狠躁牛牛影视| 亚洲AV无码成人精品区天堂小说| 丝袜足交视频在线观看| 麻豆视屏| 久久免费看| 五月丁香婷婷啪啪| 国产伦子伦一级A片在线| 精品国产成人a在线观看| 啪啪毛片| 日韩午夜精品| 国产福利视频在线观看| 狠狠爱av| 91大神精品| 日韩日批视频| 麻豆乱伦视频| 中文字幕无码亚| 乱伦视频网站| 伊人激情网| 天天天天毛片| 91av在线免费播放| 亚洲无码中| 麻豆AV在线播放| 日本一区二区三区免费观看| 婷婷丁香五月激情| 男女啪啪免费| 四虎国产精品成人久久| 手机看片1024久久| 草草影院CCYYCOM屁屁影院合集限制影院 | 日韩无码网站| 91亚色视频| 亚洲综合二区| 在线视频99| 亚洲人妻无码一区| 国产精品秘麻豆免费版现看视频| 懂色av懂色av粉嫩av| 欧美污视频在线观看| 一本大道东京热AV| 日韩高清无码专区| 老熟女痒到不行-ThePorn | 亚洲精品午夜福利| 欧美AAAAAA视频| 欧美日韩国产在线| 国产avwww| 囯产精品一区二区三区线一牛影视1| 大香蕉久久爱| 999一区二区三区| A片网站在线观看| 成人黄网站免费视频| 特黄无码| 91超碰久久在线| 人妻无码在线视频| 亚洲激情小说| a三级片| 黑人aV| 亚洲无码精品一区| 一级欧美视频| 91麻豆精品| 边吃奶边做爱| 午夜偷拍视频| 久久一| 操人人| 天堂VA蜜桃一区二区三区| 91麻豆精品在线| 一级黄色电影免费在线观看| 国产香蕉视频在线观看| 青娱乐91| 北条麻妃无码视频| 成人亚洲精品一区二区三区| 操逼视频电影| 三级片一区二区| 欧美三P囗交做爰| 九九视屏| 撸一撸免费视频| 精品无码三级在线观看视频| 中文字幕国产视频| 操碧一区| 好好的日视频| 在线欧美亚洲| 久久AV片| 人人做人人爽| 综合久久视频| 成人A片免费视频| 先锋资源AV| 国产熟女一区二区久久| 99re99热| 91丝袜一区在线观看| 蝌蚪窝在线观看| 乌克兰xxxx| 欧美99视频| 特级西西444www精品视频 | 蜜芽AV在线| 超碰免费在线观看| 天天日天天干天天操| 丰满的人妻一区二区10| 尤物网站在线播放| 亚洲AV无码电影| 日韩三级AV在线观看| 操B国产| 欧美日韩亚洲中文字幕| 国产成人AV在线| 老熟女AV| 日本久久综合网| 成人AA片| 男人天堂99| 人人操人人妻人人爽| 大茄子熟女AV导航| 一级片免费| 亚洲美女网站| 成人性爱在线播放| 国产在线秘麻豆精品观看| 伊人久久大综合中文无码| 人妻夜夜爽天天爽| 91精品免费视频| 黄色在线观看免费| 黄色A片网址| 日韩爱爱网站| xxx综合网| 国产成人精品亚洲男人的天堂| 免费黄色视频网站大全| 亚洲中文字幕一区二区| 伊人久久AV诱惑悠悠| 国产一级a毛一级a毛观看视频网站www.jn | 成人视频毛片| 69AV视频在线观看| 17.3c一起起草| 蜜芽成人在线视频| 午夜福利影视| 国产激情在线视频| 欧美一区二区三区四| 懂色av蜜臀av粉嫩av分享| 日本三级视频| 成人黄色一级A片| 91人妻综合| 超碰狠狠操| 天堂中文8资源在线8| 99无码人妻| 影音先锋亚洲无码| 五月天久久综合| 成人大香蕉网站精品免费| 免费A片视频| 亚洲区一区二| 久久WW| adn日韩av| 狠狠干2024| 亚洲无码视频网站| 日韩三级在线免费观看| 亚洲精品国产成人AV在线| 中文字幕不卡无码| 欧美视频一区| 影音先锋av成人电影| 欧美AAA视频| 操逼视频观看免费| 国产精品久久久久久久久久久久久久久 | 青青艹在线视频| 美日韩一区二区| 日韩性生活网| 最近中文字幕免费| 69AV网站| 色色爱爱| 亚洲啪啪网站| 色噜噜人妻丝袜无码影院| 黄色片视频网站| 免费观看黄色在线视频| 成人毛片在线播放| 国产一级a毛一级a毛片视频黑人| 三级片男人的天堂| 特级西西444WWW大精品视频| 亚洲欧美在线成人| 欧美日本国产| 黄色成人毛片| 免费观看黄色视频网站| 安徽妇搡BBB搡BBBB户外老太太 | 国产成人精品无码免费| 国产1区在线观看| 国产美女全裸网站| 成人AV在线看| 欧美AAA在线观看| 亚洲第一伊人| 亚洲黄色在线观看视频| 三级精品| 91在线成人视频| 91福利在线视频| 黄色影视不卡| 中文字幕无码成人| 人人色人人| 国产69精品久久| 欧美日韩免费在线观看| AV观看免费| 精品国产一区二区三区久久久蜜月 | 亚洲黄色片| 91性爱视频在线观看| AV无码高清| 人人妻人人躁人人DVD| 麻豆mdapp03.tⅴ| 午夜爽爽视频| 亚洲制服在线观看| 伊人久久大香色综合久久| 激情综合久久| 99热精品免费在线观看| 久久6精品| 中文字幕日韩精品人妻| 亚洲无码内射| 麻豆91麻豆国产传媒| 韩国无码一区二区| www.麻豆网91成人久久久| 2018天天日天天操| 国产AV一级片| 国产成人h| 成人三级在线观看| 人人射人人干| 男女www| 九一成人网| 九九这里有精品| 国产伦精品一区二区三区妓女下载 | 激情五月天av| 日本A∨| 亚洲AV永久无码精品国产精| 欧美级毛片一夜| 精品人妻无码一区二区三区| 天天色天天日天天干| 免费AV黄色| 免费黄色三级片| 久久九九免费视频| 先锋影音麻豆| 91网在线观看| 人妻操逼| 中文字幕在线播放av| 7799精品| 啪啪啪AV| 91在线无码精品秘入口| 欧美日韩在线观看中文字幕| 日韩欧美黄色| 国产免费一级特黄A片| 色色天堂| 天堂在线观看av| 黄色一级电影| 12一15女人A片毛| 日韩人妻精品无码久久边| 五月婷婷六月丁香综合| 操逼无码精品| 亚洲图片欧美另类| 中文字幕成人在线播放| 九九综合久久| 激情小说在线观看| 天堂中文在线观看| www.日韩一区| 懂色中国闺密偷情懂色AV| 日韩在线视频中文字幕| 亚洲国产黄片| 俺去俺来也www色官网cms| 日韩一级在线视频| www.色五月| 青青草原国产视频| 婷婷五月丁香五月| 51AV在线| 久草在在线视频| 羞羞视频com.入口| 黄片视频在线免费播放| A级网站| 三级在线网| 欧美成人一区二区三区| 中文在线免费看视频| 精品久久91| 亚洲一级AV| 日韩精品一区二区三区在线观看免费 | AV电影在线免费观看| 香蕉视频国产| 熟妇熟女一区二区三区| 久久人妻免费视频| 97精品国产97久久久久久免费| 无码任你操| A片视频在线观看| 精品精品精品| 天天操夜夜操| 中国无码视频| 婷婷丁香五月花| 影音先锋男人资源站| 天天综合天天| 亚洲三级视频| 亚洲人妻无码一区| 91人妻人人澡人人爽人人精品一| 大香蕉人人| 亚洲无码色色| 熟女456| 操逼视频无码| 亚洲色图第一页| 在线播放中文字幕| 亚洲AV无码精品成人| 99久久久久久久久久| 中文字幕在线资源| 日韩区在线| 色天堂视频在线观看| 日韩国产中文字幕| 100国产精品人妻无码| 三级免费无限AV| 国产娇小13videos糟蹋| 国产无码一二三区| 一区二区三区久久久| 成人精品电影| 最新中文字幕无码| 欧美老妇另类老屁XXX| 日韩无码高清一区| 久久婷婷青青| 国产精品操逼视频| 亚洲男人的天堂视频网在线观看+720P | 日日干天天射| 特黄一级片| 日本三级片视频不卡| 国产又爽又黄在线看视频| 亚洲天堂国产视频| 夜夜骚精品人妻av一区| 91免费在线看| 午夜老司机福利一二三区| 超碰在线91| 99在线精品视频免费观看20| 91久久超碰| 吴梦梦《女教师时间暂停》 | 牛牛免费视频| 国产性爱一级片| 天天操狠狠操| 亚洲a电影| 国产免费乱伦| 亚洲无码网| 俄罗斯白嫩BBwBBwBBw91| 91九色精品女同系列| 超碰成人免费| 亚洲九区| 探花在线播放| 97爱爱| 口爆吞精在线| 刘玥一级婬片A片AAA| 免费成人AV| 麻豆专区| 狼友视频首页| 国精产品九九国精产品| 色男人的天堂| 亚洲无码一级片| 中文字幕天堂在线| 国产欧美视频在线| 日本草逼| 黄色免费看视频| 黑人精品XXX一区一二区| 91视频免费在线观看| 成人看片黄a免费看视频| 国产一区二三区| 国产A级黄色片| 操B视频网站| 国产三级AV在线| 婷婷亚洲国产| 翔田千里高潮90分钟| 久久久久久成人电影| 麻豆成人网| 一级特黄大片录像i| 国产高清自拍| 九九九成人网| 国产精品久久久久久无码人妻| 9l蝌蚪PORNY中文| 少妇高潮视频| 国产成人av网站| 特级西西444WWW无码视频兔费看 | 91丨九色丨熟女泻火| 亚洲少妇网| 精品秘无码一区二区三区老师| 日本不卡在线视频| 99久久伊人| 欧美黄片在线免费看| 亚洲视频区| 亚洲精品成a人在线观看| 四川BBB搡BBB爽爽爽电影| 怡红院在线观看| 无码网址| 天天视频色| 国产一级片网站| 日韩精品极品视频在线观看免费| 三级无码AV| 你懂的视频在线| 日韩家庭乱伦| 成人网站www污污污网站公司| 天天干天天射天天| 在线观看欧美日韩视频| 亚洲视频免费播放| 久久国产精品一区二区三区| 少妇搡BBBB搡BBB搡小说| 思思热精品在线| 人人看人人摸人人操| 无码爱爱视频| 亚洲秘av无码一区二区| 一级黄在线观看| 天天色伊人| 四虎精品一区二区三区| 熟练中出-波多野结衣| 亚洲综合中文字幕在线| 十八无码成人免费网站| www,操逼| 亚洲影音| 91无码精品国产| 精品成人视频| 亚洲精品观看| 日日骚亚洲| xxx国产精品| 久久久三级| 色婷婷在线视频观看| 草草影院国产第一页| 亚洲一区2区| 国产一区视频在线| 午夜操逼| 黄色在线免费观看| 日韩1区| 亚洲第一视频在线观看| 亚洲日皮| 8050午| 中文字幕免费久久| 男女av在线| 操B网址| 人人看人人摸人人搞| a级片在线观看| 欧美系列在线| 熟妇人妻久久中文字幕| 国产成人片| 天天干天天操天天干| 久久精品一区二区三区蜜芽的特点| 啊啊啊av| 亚洲精品影视| 日本色中文字幕| 国产A片免费视频| 男女日皮视频| 午夜激情视频在线观看| 中文字幕+乱码+中文乱码电影| 91色秘乱码一区二区| 中文字幕天堂在线| 日本wwwwww| 91天天综合在线| 日韩经典视频在线播放| 殴美老妇BBBBBBBBB| 正在播放国产精品| 无码人妻精品一区二区三区蜜臀百度 | 午夜成人无码| 日韩无码内射| 亚洲砖区区免费| 丁香久久婷婷| 九九伊人大香蕉| 婷婷九月色| 99免费视频| 爱干视频| 青青草大香蕉| www.俺来也| 九九碰九九爱97超碰| 蜜桃视频网址| 韩国免费一级a一片在线播放| 五月天操逼网站| 日韩三级片网址| 亚洲V在线观看| 美日韩视频欧美一区二区视频 | 久久国产av| 欧美v日韩| 亚洲激情黄色| 熟女少妇一区二区三区| 国产丰满乱子伦无码| 黄色片久久| 亚洲videos| 亚洲天堂AV2025| 亚洲AV无码国产精品二区| 美女三片| 国产久久久| 亚洲成人国产| 国产精品成人无码免费| 亚洲精品视频在线播放| 亚洲无码影片| 欧美疯狂做受XXXXX高潮| 狠狠操天天干| 美女操B| 在线视频99| A片啪啪| 久久亚洲精品视频| av天堂中文| 免费的a片| 先锋影音一区| 欧美A级黄片| 三级无码AV| 亚洲国产精品久久久久婷婷老年 | 欧美高清视频| 3d动漫精品H区XXXXX区| 一本色道久久综合无码人妻软件 | 性日韩| 国产一级A片久久久免费看快餐 | 婷婷五月无码| 久久精品黄色| 91丨PORNY丨对白| 青春草在线免费视频| 国产中文字幕波多| 国产免费内射| 91热爆TS人妖系列| 日本免费色视频| 粉嫩99精品99久久久久久特污| 蜜桃久久久亚洲| 亚洲视频天天射| xxxxx无码| 日逼高清无码| 亚洲视频观看| 国产无码做爱视频| 思思热免费视频| 五月天久久久久久久| 色婷婷香蕉在线一区二区| 欧美国产日韩视频| 操美女的逼| 大香蕉尹人在线视频| 揄拍成人国产精品视频| 国产无码久久久| 国产精品操逼网站| 日本色中文字幕| 中国熟睡妇BBwBBw| 中文字幕乱在线| 三级影片在线观看性| 午夜精品一区二区三区在线成人| 日韩AV网站在线观看| AV婷婷在线| 色欲色欲一区二区三区| 91婷婷在线| 精品人妻一区二区三区蜜桃| 精品素人在线| 日韩一区二区高清无码| 日本色区| 国产成人精品一区二区三区视频 | gogogo高清在线观看免费直播中国 | 91人妻人人人| 玩弄大荫蒂视频| 特级特黄AAAA免费看| 动漫一区二区三区| 麻豆传媒免费观看| 亚洲精品伦理| 久久蜜桃视频| 777777国产7777777| 俺去啦俺来也| 超碰久操| 亚洲无码一级片| 色综合一区| 天堂网av在线| 911亚洲精品| 夜夜欢天天干| 国产成人亚洲日韩| 成人网肏逼视频| 亚洲精品mv| 国产精品特级毛片| 午夜精品18视频国产| 人人色人人草| 爱搞视频| 日本黄色免费在线观看| 色欲AV网站| 日韩综合在线视频| 亚州无码一区| 国产色色色色| 怡春院av| 91乱子伦国产乱子伦| 五月天婷婷激情| 欧美一级a| 色a视频| 97精品人妻麻豆一区二区| 西西人体BBBBBB| 91天天操| 免费黄色视频网站在线观看| 91熟女乱伦| 国产丝袜无码| 国产又爽又黄免费网站在线看| 亚洲清高毛无码毛片| 毛片内射| 亚洲av网站| 免费无码视频一区二区| 天天夜夜爽| 东北女人毛多又黑A片| 无码秘蜜桃一区二区三区| 欧美午夜激情视频| 久久永久免费视频| 白嫩外女BBwBBwBBw| 亚洲日本视频| 狠狠撸在线视频| www.骚逼| 极品美女扒开粉嫩小泬高潮一| 日韩高清无码免费看| 中国老熟女2老女人| 国产色婷婷精品综合在线播放 | 国产黄色视频在线观看| 五月丁香六月久久| 青青草原视频在线免费观看| 熟女资源网| а中文在线天堂精品| 中文字幕你懂的| 另类小说五月天| 天天噜| 中文久久| 日P免费视频| 人妻免费在线视频| 亚洲AV秘无码不卡在线观看 | 久久伊思人在| 999国产视频| 五月天婷婷综合| 黄片入口| 日韩成人无码全裸视频| 成人蜜臀AV| 亚洲综合二区| 色欲网址| 无码成人AV| 五月综合久久| 亚洲精品91| 丁香五月天色婷婷| 人妻熟女88AⅤ| 黄色在线视频观看| 日韩亚洲欧美在线观看| 神马久久午夜| 成人视频网站在线观看| 北条麻妃一区二区三区在线观看 | 在线观看内射视频| 亚洲色小说| 91丨九色丨东北熟女| 少妇精品无码一区二区免费视频| 亚洲久久色| 特级特黄AAAA免费看| 亚洲成人性爱视频| 丁香婷婷视频| A片一级片| 日本乱伦电影中文字幕| 五月天色色图| 中文字幕va| 蜜桃视频在线入口www| 精品在线免费视频| 狠狠的操| 人人肏人人射| 免费在线观看AV网站| 亚洲区成人777777精品| 亚洲区视频| 婷婷导航| xxxx亚洲| 婷婷婷色| 99热在线观看精品免费| 搡BBBB搡BBB搡五十| 久久永久免费精品人妻专区| 伊人大香蕉在线网| 69Av视频| 国产又爽又黄在线看视频| 99在线免费观看| 无码免费中文字幕| 日韩在线国产| 日本中文在线观看| 韩国无码一区二区三区| 麻豆久久| 欧美精品国产动漫| 人人搞人人操| 蜜桃Av噜噜一区二区三| 无码av网站| 99re6热在线精品视频功能 | 无码三级片在线观看| 亚洲综合免费| 99操99| 黄页网址在线观看| 亚洲日本在线观看| 日本少妇高清视频| 毛片A片免费看| 国产视频在线播放| 黃色一级A一片人与| 亚洲在线视频| 国产一二三四| 超碰在线人人| 久久午夜无码鲁丝片午夜精| 俺去也| 天天日天天综合| 亚洲无吗在线观看| 91小仙女jK白丝袜呻吟| 欧美日韩国产尤物主播精品| 午夜成人精品一区二区三区| 一本大道东京热AV| 日韩骚逼| 久久久精品黄色网址| 无码秘蜜桃一区二区三区| 亚洲日韩视频在线播放| www.狠狠撸| 91羞射短视频在线观看| 久久精品人人| 久久久久久久久久久成人| 亚洲一级Av无码毛片久久精品| 99精品偷自拍| 日韩精品在线视频观看| 免费大黄网站| 国产成人片| 黄色草莓视频| 久久艹网| 黄色毛片视频| 中文字幕在线播放AV| 午夜日逼网站| 国产高清无码一区二区三区| 男人色天堂| 肏屄综合网| 日欧无码| 天堂中文字幕在线观看| AV无码资源| 人妻斩り43歳| 久久午夜福利| 成人一二区| 国产avwww| 欧美熟妇精品黑人巨大一二三区 | 亚洲AⅤ| 国产在线欧美| 天天干国产| 91你懂的| 日本绿色精品视频| 9l视频自拍蝌蚪9l成人| 伊人婷婷| 免费观看成人片| 怡春院久久| 天天操天天拍| 在线免费AV片| 精品一区二区三区免费| 日韩一区无码| 日韩无码二级| 欧美亚洲成人电影| 日日干天天| 亚洲内射网| 少妇bbb搡bbbb搡bbbb| 日本中文字幕无码| 人人妻人人做| 青青草成人电影| 亚洲视频一区二区| 成人五月天黄色电影| 亚洲AV无码精品久久一区二区 | 18禁网站在线看| 色天堂在线观看视频| www香蕉成人片com| 综合激情视频| 国产第一精品| 青青操在线观看| 午夜性爱福利视频| www.狠狠爱| 日韩精品在线播放| 国产精品久久在线| 18禁网站免费| www.国产豆花精品区| 亚洲免费视频一区| 国产AV一区二区三区精品| 成人免费内射视频| 久久精品国产亚洲AV成人婷婷| 欧美一级特黄A片免费看视频小说 东北嫖老熟女一区二区视频网站 国产丨熟女丨国产熟女视频 | H片在线播放| 久在草| 国产嫩苞又嫩又紧AV在线| 中文字幕毛片| 一级a一级a爰片免费免免中国A片 一级一级a免一级a做免费线看内裤 | 操碧一区| 色婷婷久久综合|