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

提升 MySQL 批量更新效率的底層原理與優化策略

網絡 網絡優化 MySQL
? 如果網絡情況良好且 MySQL 連接池資源充分的情況下,筆者更推薦使用并行進行逐條更新。

近期進行項目優化梳理工作時,發現某些功能模塊進行MySQL數據庫批量更新操作比較耗時,對此筆者查閱相關資料比進行壓測后,得出最優解,遂以此文章記錄一下筆者的解決方案。

一、前置準備

為方便演示,筆者先說明一下本文進行實驗的數據表,對應的DDL語句如下,可以看到該表有一個自增的主鍵ID和9個字段以及一個日期字段:

CREATE TABLE `batch_insert_test` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `fileid_1` varchar(100) DEFAULT NULL,
  `fileid_2` varchar(100) DEFAULT NULL,
  `fileid_3` varchar(100) DEFAULT NULL,
  `fileid_4` varchar(100) DEFAULT NULL,
  `fileid_5` varchar(100) DEFAULT NULL,
  `fileid_6` varchar(100) DEFAULT NULL,
  `fileid_7` varchar(100) DEFAULT NULL,
  `fileid_8` varchar(100) DEFAULT NULL,
  `fileid_9` varchar(100) DEFAULT NULL,
  `create_date` datetime DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `batch_insert_test_create_date_IDX` (`create_date`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=19091237 DEFAULT CHARSET=utf8 COMMENT='測試批量插入,一行數據1k左右';

特別注意,讀者在根據本文進行操作時需要對數據庫連接配置上追加如下兩個參數,否則優化方案不會生效:

&rewriteBatchedStatements=true&allowMultiQueries=true

二、三種方案壓測實驗

1. 逐條更新

首先查看逐條更新的解決方案,筆者通過分頁查詢查詢大約3000條數據,然后逐條進行遍歷更新:

 /**
     * 使用foreach進行逐條插入
     */
    @Test
    public void foreachUpdate() {
        //分頁查詢3k的數據
        PageHelper.startPage(PAGE, SIZE);
        List<BatchInsertTest> insertTestList = batchInsertTestMapper.selectByExample(null);

        //逐條更新
        StopWatch stopWatch = new StopWatch("foreachUpdate");
        stopWatch.start();
        for (BatchInsertTest insertTest : insertTestList) {
            batchInsertTestMapper.updateByPrimaryKey(insertTest);
        }
        stopWatch.stop();

        log.info("逐條更新完成,size:{},耗時:{}ms", insertTestList.size(), stopWatch.getLastTaskTimeMillis());


    }

對應耗時結果如下,可以看到耗時花費了1592ms,表現比較遜色,原因很簡單,每條數據操作時都涉及網絡IO,3000次串行的網絡IO+DB更新,執行效率自然上不去:

2025-01-10 09:07:02.920  INFO 19328 --- [           main] c.s.mapper.BatchInsertTestMapperTest     : 逐條更新完成,size:3000,耗時:1592ms

2. 并行運算

不知道讀者是否留意筆者上文所說的串行DB更新,既然串行的網絡IO會降低執行效率,那么我們并行更新呢?

所以筆者將代碼進行進一步的優化:

/**
     * 使用并行流foreach進行逐條插入
     */
    @Test
    public void foreachParallelStreamUpdate() {
        PageHelper.startPage(PAGE, SIZE);

        List<BatchInsertTest> insertTestList = batchInsertTestMapper.selectByExample(null);

        //采用并行流的方式進行并行更新
        StopWatch stopWatch = new StopWatch("foreachUpdate");
        stopWatch.start();
        insertTestList.parallelStream()
                .forEach(i -> {
                    batchInsertTestMapper.updateByPrimaryKey(i);
                });


        stopWatch.stop();

        log.info("逐條更新完成,size:{},耗時:{}ms", insertTestList.size(), stopWatch.getLastTaskTimeMillis());


    }

可以看到3000條數據花費了357ms,執行效率還是很客觀的,但筆者認為這還不是最優解,原因很簡單,每次進行批量更新操作都需要進行多次網絡IO,如果在并發量非常大的場景,比較吃MySQL的連接池資源:

2025-01-10 09:07:00.789  INFO 19328 --- [           main] c.s.mapper.BatchInsertTestMapperTest     : 逐條更新完成,size:3000,耗時:357ms

3. foreach更新

我們再來看看mybatis內置的foreach語法的批量更新:

<update id="updateByPrimaryKeyForeach" parameterType="com.sharkChili.domain.BatchInsertTest">
        <foreach collection="list" item="item" separator=";">
            update batch_insert_test
            set fileid_1 = #{item.fileid1,jdbcType=VARCHAR},
            fileid_2 = #{item.fileid2,jdbcType=VARCHAR},
            fileid_3 = #{item.fileid3,jdbcType=VARCHAR},
            fileid_4 = #{item.fileid4,jdbcType=VARCHAR},
            fileid_5 = #{item.fileid5,jdbcType=VARCHAR},
            fileid_6 = #{item.fileid6,jdbcType=VARCHAR},
            fileid_7 = #{item.fileid7,jdbcType=VARCHAR},
            fileid_8 = #{item.fileid8,jdbcType=VARCHAR},
            fileid_9 = #{item.fileid9,jdbcType=VARCHAR},
            create_date = #{item.createDate,jdbcType=TIMESTAMP}
            where id = #{item.id,jdbcType=INTEGER}
        </foreach>
    </update>

對應測試代碼如下:

@Test
    public void updateByPrimaryKeyForeach() {
        PageHelper.startPage(PAGE, SIZE);

        List<BatchInsertTest> insertTestList = batchInsertTestMapper.selectByExample(null);
        StopWatch stopWatch = new StopWatch("updateByPrimaryKeyForeach");
        stopWatch.start();

        batchInsertTestMapper.updateByPrimaryKeyForeach(insertTestList);

        stopWatch.stop();

        log.info("使用updateByPrimaryKeyForeach更新完成,size:{},耗時:{}ms", insertTestList.size(), stopWatch.getLastTaskTimeMillis());
    }

耗時563ms左右,性能表現也還行,并且foreach操作會因為字符串拼接操導致Packet for query is too large (106,100,142 > 4,194,304). You can change this value on the server by setting the 'max_allowed_packet' variable.即提交的SQL執行數據包過大被拒絕的風險:

2025-01-10 09:10:57.592  INFO 18332 --- [           main] c.s.mapper.BatchInsertTestMapperTest     : 使用updateByPrimaryKeyForeach更新完成,size:3000,耗時:563ms

4. 批處理更新

筆者希望可以一批更新操作可以一個批次的進行提交,所以接下來介紹這種方案就是一次性組裝一批量的更新語句,然后一次性提交。

 /**
     * 使用批處理進行更新
     */
    @Test
    public void updateBatch() {
        PageHelper.startPage(PAGE, SIZE);

        List<BatchInsertTest> insertTestList = batchInsertTestMapper.selectByExample(null);
        StopWatch stopWatch = new StopWatch("updateBatch");
        stopWatch.start();

        //創建一個進行批處理操作的sqlsession組裝一批更新語句
        try (SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH)) {
            BatchInsertTestMapper batchInsertTestMapper = sqlSession.getMapper(BatchInsertTestMapper.class);

            insertTestList.parallelStream()
                    .forEach(i -> {
                        batchInsertTestMapper.updateByPrimaryKey(i);
                    });
            //手動提交
            sqlSession.commit();
            stopWatch.stop();
        } catch (Exception e) {

        }

        log.info("批處理更新完成,size:{},耗時:{}ms", insertTestList.size(), stopWatch.getLastTaskTimeMillis());

    }

最終更新耗時為1s左右,相較于上述方案相對遜色一些,但是網絡IO的開銷以及MySQL的連接池使用都減小了,綜合起來性價比還是蠻高的:

2024-02-22 23:25:05.265  INFO 18844 --- [           main] c.s.mapper.BatchInsertTestMapperTest     : 批處理更新完成,size:3000,耗時:1566ms

5. case-when更新

最后一種case-when更新,語法如下,猛的一看比較復雜,實際理解起來還是蠻簡單的,對每個字段進行set操作,例如:當id等于1時,fileid_1則取id為1的那條數據的值,通過case分支實現一條SQL批量更新多條數據:

update batch_insert_test
  -- 當id=1 則設置fileid_1為aaa
        set fileid_1=
            when 1 then aaa
  ....其余同理
   where id in (本次批處理的id列表)

所以結合mybatis框架的語法,我們得出下面這樣一個SQL語句:

<update id="updateBatch" parameterType="java.util.List">
        update batch_insert_test
        set fileid_1=
        <foreach collection="list" item="item" index="index"
                 separator=" " open="case ID" close="end">
            when #{item.id} then #{item.fileid1,jdbcType=VARCHAR}
        </foreach>,
        fileid_2 =
        <foreach collection="list" item="item" index="index"
                 separator=" " open="case ID" close="end">
            when #{item.id} then #{item.fileid2,jdbcType=VARCHAR}
        </foreach>,
        fileid_3 =
        <foreach collection="list" item="item" index="index"
                 separator=" " open="case ID" close="end">
            when #{item.id} then #{item.fileid3,jdbcType=VARCHAR}
        </foreach>,
        fileid_4 =
        <foreach collection="list" item="item" index="index"
                 separator=" " open="case ID" close="end">
            when #{item.id} then #{item.fileid4,jdbcType=VARCHAR}
        </foreach>,
        fileid_5 =
        <foreach collection="list" item="item" index="index"
                 separator=" " open="case ID" close="end">
            when #{item.id} then #{item.fileid5,jdbcType=VARCHAR}
        </foreach>,
        fileid_6 =
        <foreach collection="list" item="item" index="index"
                 separator=" " open="case ID" close="end">
            when #{item.id} then #{item.fileid6,jdbcType=VARCHAR}
        </foreach>,
        fileid_7 =
        <foreach collection="list" item="item" index="index"
                 separator=" " open="case ID" close="end">
            when #{item.id} then #{item.fileid7,jdbcType=VARCHAR}
        </foreach>,
        fileid_8 =
        <foreach collection="list" item="item" index="index"
                 separator=" " open="case ID" close="end">
            when #{item.id} then #{item.fileid8,jdbcType=VARCHAR}
        </foreach>,
        fileid_9 =
        <foreach collection="list" item="item" index="index"
                 separator=" " open="case ID" close="end">
            when #{item.id} then #{item.fileid9,jdbcType=VARCHAR}
        </foreach>,
        create_date=
        <foreach collection="list" item="item" index="index"
                 separator=" " open="case ID" close="end">
            when #{item.id} then #{item.createDate,jdbcType=TIMESTAMP}
        </foreach>
        where id in
        <foreach collection="list" index="index" item="item"
                 separator="," open="(" close=")">
            #{item.id,jdbcType=INTEGER}
        </foreach>
    </update>

對應的Java代碼如下,比較簡單,筆者這里就不多做贅述了:

@Test
    public void updateDateByWhenCase() {
        PageHelper.startPage(PAGE, SIZE);

        List<BatchInsertTest> insertTestList = batchInsertTestMapper.selectByExample(null);
        StopWatch stopWatch = new StopWatch("updateBatch");
        stopWatch.start();

        batchInsertTestMapper.updateBatch(insertTestList);

        stopWatch.stop();

        log.info("使用when case更新完成,size:{},耗時:{}ms", insertTestList.size(), stopWatch.getLastTaskTimeMillis());
    }

最終可以看到耗時800毫秒左右,相較于批處理更加出色一些,而且網絡和連接池的開銷都是差不多的,但和foreach意義也可能存在數據包過大導致報錯的風險:

2025-01-10 09:17:06.878  INFO 16788 --- [           main] c.s.mapper.BatchInsertTestMapperTest     : 使用when case更新完成,size:3000,耗時:738ms

小結

以上便是筆者本次大量壓測后得出的解決方案,總結如下:

  • 如果網絡情況良好且MySQL連接池資源充分的情況下,筆者更推薦使用并行進行逐條更新。
  • 如果網絡情況不好或者MySQL資源緊張,筆者更推薦使用foreach更新,相較于同等一次性更新多條語句的when-case語法,它語法更簡單且執行性能更好一些。
  • 當然如果一次性要更新比較大基數的數據,考慮到MySQL的傳輸packet size我們還是優先考慮批處理這個性能和穩定性處于折中的方案。
責任編輯:趙寧寧 來源: 寫代碼的SharkChili
相關推薦

2024-11-21 08:33:29

2025-09-05 09:31:23

2024-11-06 08:13:28

2024-03-14 10:10:03

MySQL優化事務

2023-11-01 09:44:21

MySQLJava

2024-09-19 08:09:37

MySQL索引數據庫

2021-12-21 14:00:25

WebpackDevServer的開發

2010-04-25 23:39:42

2023-10-10 08:52:36

射與分析相開源

2020-01-13 10:45:35

JavaScript解析前端

2025-02-26 07:59:47

2023-09-19 10:31:09

算法數據

2015-11-16 11:17:30

PHP底層運行機制原理

2012-06-12 09:46:20

虛擬化

2021-07-23 13:34:50

MySQL存儲InnoDB

2021-12-24 08:01:44

Webpack優化打包

2024-09-04 14:28:20

Python代碼

2025-01-15 12:48:30

2023-10-12 07:29:24

MySQL分頁數據量

2023-12-08 13:30:23

點贊
收藏

51CTO技術棧公眾號

亚洲美女视频网| 中文字幕人成不卡一区| 96精品视频在线| 国产麻豆天美果冻无码视频| 松下纱荣子在线观看| 久久精品欧美日韩精品 | 欧美熟妇激情一区二区三区| 香蕉视频亚洲一级| 综合色天天鬼久久鬼色| 国产视频在线观看一区| 日本精品入口免费视频| 一个色综合网| 精品视频—区二区三区免费| 一本一道久久a久久综合蜜桃| 色www永久免费视频首页在线| 99re这里只有精品视频首页| 成人精品视频久久久久| wwwxxx亚洲| 99热在线成人| 亚洲人a成www在线影院| 精品国产乱码久久久久久1区二区| 欧美a级在线观看| 亚洲视频在线一区观看| 欧美日韩国产综合视频在线| 亚洲a视频在线观看| 日韩国产精品91| 国产69精品久久久| 色偷偷www8888| 午夜a一级毛片亚洲欧洲| 欧美一区午夜精品| 国产精品人人妻人人爽人人牛| 2024短剧网剧在线观看| 国产精品丝袜一区| 欧美日产一区二区三区在线观看| 成人毛片在线精品国产| 精品一区二区免费视频| 国产精品91久久久久久| 国产成人无码精品| 亚洲一区二区| 日韩在线国产精品| 国产毛片欧美毛片久久久| 欧美日韩夜夜| 精品福利一二区| 加勒比av中文字幕| 另类一区二区| 在线观看91视频| 国产偷人视频免费| 国产精品原创| 午夜精品久久一牛影视| 国产一区 在线播放| 成人免费在线| 亚洲欧美另类图片小说| 在线亚洲美日韩| 一本一道波多野毛片中文在线| 国产日产欧美一区二区视频| 欧美一进一出视频| 韩国福利在线| 欧美激情一区二区三区蜜桃视频| 日本精品二区| 国产在线免费观看| 久久久久久久电影| 日本一区二区三区www| 欧美精品久久久久久久久久丰满| 91网上在线视频| 久久精品一区二区三区不卡免费视频 | 亚洲免费成人在线视频| 亚洲国产91视频| 欧美电影影音先锋| 四虎国产精品永久免费观看视频| 精品一区二区三区中文字幕在线| 日韩欧美在线1卡| xxxxwww一片| 久久亚洲道色| 亚洲欧美日韩国产精品| 久久久久久国产免费a片| 久久亚洲国产| 欧美成人第一页| 黄网站免费在线| 午夜在线一区| 国产精品电影久久久久电影网| 特级西西444www高清大视频| 麻豆精品在线视频| 99九九电视剧免费观看| 天堂在线中文网| 日本一二三不卡| 中国黄色录像片| 1234区中文字幕在线观看| 日韩欧美国产高清91| 色婷婷综合网站| 7m精品国产导航在线| 精品无人国产偷自产在线| 久久亚洲AV无码专区成人国产| 欧美高清视频手机在在线| 久久久精品五月天| 丁香五六月婷婷久久激情| 国产福利一区视频| gogo大尺度成人免费视频| 精品三级av在线| 天堂久久精品忘忧草| 亚洲精品a级片| 午夜精品理论片| 在线播放精品视频| 成人精品国产一区二区4080| 日韩欧美一区二区视频在线播放| 久做在线视频免费观看| 都市激情亚洲色图| 最新av免费在线观看| 久久影院资源站| 日韩在线观看视频免费| 日韩在线视频免费播放| 精品一区二区三区免费| 牛人盗摄一区二区三区视频 | 日韩有码在线视频| 黄色一级片在线| 蜜桃一区二区三区在线| 国产福利一区二区三区在线观看| 高清福利在线观看| 亚洲国产精品久久久久婷婷884 | 巨胸喷奶水www久久久免费动漫| 日韩一区二区高清| 免费看91的网站| 亚洲理论在线| 亚洲最大av在线| wwwxxx在线观看| 性久久久久久久久久久久| 性欧美在线视频| 精品国产一区二区三区四区| 国产综合在线看| 国产人妻精品一区二区三| 久久久精品人体av艺术| 日本福利视频在线观看| 亚洲男男av| 中文字幕在线观看亚洲| 日本熟妇一区二区三区| 91香蕉视频黄| 我的公把我弄高潮了视频| 欧美成人一级| 久久这里只有精品视频首页| 在线观看国产小视频| 国产亚洲欧洲997久久综合 | 免费av成人在线| 欧美大陆一区二区| av在线播放资源| 欧美精品一区二区三| 欧美三级小视频| 国产一二精品视频| 99re99热| 国产精品美女久久久久| 不用播放器成人网| 国产女人高潮时对白| 日韩美女视频19| 久久久久久久久久久久久久久国产 | 欧美激情视频二区| 日韩中文字幕av电影| 欧美一区1区三区3区公司 | аⅴ资源新版在线天堂| 色综合咪咪久久| 国产又粗又猛又爽视频| 久久一综合视频| 日韩欧美第二区在线观看| 91精品影视| 中文字幕亚洲无线码在线一区| a片在线免费观看| 国产精品美女久久久久久久网站| 91激情视频在线| 久久精品播放| 亚洲最大的网站| 国精一区二区三区| 亚洲精美色品网站| 无码人妻精品一区二区50| 国产人成一区二区三区影院| 久久99999| 亚洲天天影视网| 成人蜜桃视频| 亚洲天堂导航| 中文字幕精品一区二区精品| 一区二区国产欧美| 一区二区三区四区高清精品免费观看| 黑森林av导航| 久久国产精品毛片| 天堂v在线视频| 大奶在线精品| 97色在线播放视频| jizzjizz在线观看| 日韩欧美亚洲国产另类| 久久久久久久久久影院| 国产精品女主播av| 日本50路肥熟bbw| 久久久精品日韩| 成人在线免费观看网址| 久久精品亚洲成在人线av网址| 国产成人小视频在线观看| 毛片网站在线免费观看| 欧美精品一区二区三区蜜臀| 成人一级免费视频| 亚洲综合视频在线观看| 国产女主播喷水高潮网红在线| 韩国欧美国产一区| 免费av观看网址| 久久久久av| 久久久免费看| 久久wwww| 国产精品丝袜久久久久久不卡| 日本无删减在线| 一区二区亚洲欧洲国产日韩| 亚洲av综合色区无码一二三区| 色欧美日韩亚洲| 久视频在线观看| 国产精品国产精品国产专区不片| 星空大象在线观看免费播放| 久草在线在线精品观看| 女人天堂av手机在线| 亚洲91精品| 欧洲精品亚洲精品| 91精品国产自产精品男人的天堂| 国产精品欧美一区二区| 成年女人在线看片| 欧美成人sm免费视频| 在线观看麻豆| 亚洲男人av电影| 欧美一级视频免费| 欧美一区二区视频网站| 最近中文字幕在线视频| 精品免费在线观看| 麻豆亚洲av成人无码久久精品| 欧美国产一区在线| 成人免费毛片日本片视频| 国产美女娇喘av呻吟久久| 天天色综合社区| 免费看黄裸体一级大秀欧美| 可以看毛片的网址| 欧美精品一级| 熟女熟妇伦久久影院毛片一区二区| 国产麻豆精品久久| 久久av一区二区三区漫画| 成人爽a毛片| 91在线看网站| 日韩一区二区三区精品| 国产免费一区视频观看免费 | 欧美羞羞免费网站| 久久青青草原亚洲av无码麻豆| 亚洲福利视频一区| 久久午夜无码鲁丝片| 亚洲综合在线第一页| 丰满少妇高潮久久三区| 亚洲精品视频在线观看网站| 免费高清在线观看电视| **欧美大码日韩| 亚洲人与黑人屁股眼交| 中文字幕一区二区三区av| 国产精品成人69xxx免费视频| 中文字幕中文在线不卡住| 少妇愉情理伦三级| 国产精品沙发午睡系列990531| 日本理论中文字幕| 国产精品欧美一级免费| 女性裸体视频网站| 亚洲欧美日韩国产另类专区| 伊人在线视频观看| 一区二区三区高清| 日产精品久久久久| 色综合久久中文字幕| 无码人妻丰满熟妇区bbbbxxxx| 欧美性猛交xxxxxx富婆| 91成人一区二区三区| 这里只有精品电影| www.黄色片| 亚洲精品99久久久久| 精品av中文字幕在线毛片| 国产小视频国产精品| 欧美成年黄网站色视频| 欧美日韩高清在线观看| 高潮在线视频| 国产精品久久精品| 成人国产精品一区二区网站| 成人高清在线观看| 亚洲bt欧美bt精品777| 亚洲精品在线免费看| 欧美成人国产| 久草资源站在线观看| 蜜桃视频在线观看一区二区| 国产欧美激情视频| av在线这里只有精品| 精品无码人妻一区二区免费蜜桃| 亚洲人成网站影音先锋播放| 国产精品成人网站| 欧美性生活大片视频| 亚洲第一第二区| 亚洲欧美日韩高清| 尤物视频在线看| 日韩暖暖在线视频| 欧美午夜在线播放| 欧美在线播放一区| 国模大胆一区二区三区| 免费观看成人网| 国产成人欧美日韩在线电影| 亚洲激情视频小说| 亚洲精品乱码久久久久久| 国语对白永久免费| 欧美一区二区三区四区久久| 欧美黄色小说| 欧美国产第一页| 日本在线中文字幕一区二区三区| 99视频在线播放| 青草国产精品| 男女超爽视频免费播放| 久久精品二区亚洲w码| 先锋资源av在线| 日韩毛片一二三区| 久久国产乱子伦精品| 精品日产卡一卡二卡麻豆| jizz在线观看中文| 91精品成人久久| 亚洲国产欧美在线观看| 午夜欧美性电影| 国产农村妇女精品一区二区| 初高中福利视频网站| 国产精品免费看片| 国产精品一区无码| 亚洲国产成人一区| 在线观看中文| 成人中文字幕+乱码+中文字幕| 久久99国内| 欧美爱爱视频免费看| 国产成人精品aa毛片| 成人信息集中地| 在线一区二区三区| 黄色av网站在线看| 欧美专区在线视频| 欧洲亚洲一区二区三区| 真实国产乱子伦对白视频| 国产在线视频一区二区三区| jizz日本在线播放| 欧美自拍丝袜亚洲| 成人三级黄色免费网站| 欧洲成人在线观看| 欧美大奶一区二区| 精品久久久久久无码中文野结衣| 国产一区二区调教| 波多野结衣喷潮| 欧美喷潮久久久xxxxx| av色图一区| 国产精品中文在线| 欧美jizz| 福利视频999| 亚洲欧洲成人自拍| 国产又爽又黄免费软件| yellow中文字幕久久| 欧洲美女精品免费观看视频| 日韩一区二区电影在线观看| 日本一区中文字幕| 国产又粗又长又硬| 欧美猛男gaygay网站| 精品黄色免费中文电影在线播放| 成人免费网站在线| 亚洲久久久久| 最好看的中文字幕| 亚洲综合偷拍欧美一区色| 免费观看黄色av| 9.1国产丝袜在线观看| 网红女主播少妇精品视频| 中国丰满人妻videoshd| 26uuu精品一区二区| 无码视频在线观看| 国产亚洲精品美女| 国产在视频一区二区三区吞精| 一区二区三区在线视频看| 极品少妇xxxx精品少妇| 欧美性猛交xxxxx少妇| 亚洲精品在线观看网站| 亚洲美女久久精品| 翔田千里亚洲一二三区| 国产一区在线精品| 国产精品第56页| 亚洲无av在线中文字幕| 先锋影音一区二区| 日韩精品一区二区在线视频| 99精品欧美一区| 中文字幕乱码视频| 久久99精品国产99久久6尤物| 欧美爱爱网站| 黄色国产小视频| 亚洲精选免费视频| av女名字大全列表| 国产精品一区二区三区免费视频| 亚洲天堂一区二区三区四区| 欧美一级片黄色| 欧美性大战久久久久久久| 天堂成人av| 日本成人三级电影网站| 国产成人综合在线播放| 三级视频在线观看| 久久久国产精品x99av| 欧美日韩破处| 手机av在线网站| 色综合久久中文综合久久牛| 国产盗摄在线观看| 欧美一区亚洲二区| 成人午夜在线视频| 夜夜躁很很躁日日躁麻豆|