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

100000行級(jí)別數(shù)據(jù)的 Excel 導(dǎo)入優(yōu)化之路

開發(fā) 前端
逐步分析和優(yōu)化了導(dǎo)入的代碼,使之在百秒內(nèi)完成(最終性能瓶頸在數(shù)據(jù)庫的處理速度上,測(cè)試服務(wù)器 4g 內(nèi)存不僅放了數(shù)據(jù)庫,還放了很多微服務(wù)應(yīng)用。處理能力不太行)。具體的過程如下,每一步都有列出影響性能的問題和解決的辦法。

今天分享一篇大數(shù)據(jù)量Excel導(dǎo)入如何優(yōu)化的文章,非常不錯(cuò)。

需求說明

項(xiàng)目中有一個(gè) Excel 導(dǎo)入的需求:繳費(fèi)記錄導(dǎo)入

由實(shí)施 / 用戶 將別的系統(tǒng)的數(shù)據(jù)填入我們系統(tǒng)中的 Excel 模板,應(yīng)用將文件內(nèi)容讀取、校對(duì)、轉(zhuǎn)換之后產(chǎn)生欠費(fèi)數(shù)據(jù)、票據(jù)、票據(jù)詳情并存儲(chǔ)到數(shù)據(jù)庫中。

在接手之前可能由于之前導(dǎo)入的數(shù)據(jù)量并不多沒有對(duì)效率有過高的追求。但是到了 4.0 版本,預(yù)估導(dǎo)入時(shí)Excel 行數(shù)會(huì)是 10w+ 級(jí)別,而往數(shù)據(jù)庫插入的數(shù)據(jù)量是大于 3n 的,也就是說 10w 行的 Excel,則至少向數(shù)據(jù)庫插入 30w 行數(shù)據(jù)。因此優(yōu)化原來的導(dǎo)入代碼是勢(shì)在必行的。逐步分析和優(yōu)化了導(dǎo)入的代碼,使之在百秒內(nèi)完成(最終性能瓶頸在數(shù)據(jù)庫的處理速度上,測(cè)試服務(wù)器 4g 內(nèi)存不僅放了數(shù)據(jù)庫,還放了很多微服務(wù)應(yīng)用。處理能力不太行)。具體的過程如下,每一步都有列出影響性能的問題和解決的辦法。

導(dǎo)入 Excel 的需求在系統(tǒng)中還是很常見的,優(yōu)化辦法可能不是最優(yōu)的,歡迎讀者在評(píng)論區(qū)留言交流提供更優(yōu)的思路

一些細(xì)節(jié)

  • 數(shù)據(jù)導(dǎo)入:導(dǎo)入使用的模板由系統(tǒng)提供,格式是 xlsx (支持 65535+行數(shù)據(jù)) ,用戶按照表頭在對(duì)應(yīng)列寫入相應(yīng)的數(shù)據(jù)
  • 數(shù)據(jù)校驗(yàn):數(shù)據(jù)校驗(yàn)有兩種:
  • 字段長(zhǎng)度、字段正則表達(dá)式校驗(yàn)等,內(nèi)存內(nèi)校驗(yàn)不存在外部數(shù)據(jù)交互。對(duì)性能影響較小
  • 數(shù)據(jù)重復(fù)性校驗(yàn),如票據(jù)號(hào)是否和系統(tǒng)已存在的票據(jù)號(hào)重復(fù)(需要查詢數(shù)據(jù)庫,十分影響性能)
  • 數(shù)據(jù)插入:測(cè)試環(huán)境數(shù)據(jù)庫使用 MySQL 5.7,未分庫分表,連接池使用 Druid

迭代記錄

1. 第一版:POI + 逐行查詢校對(duì) + 逐行插入

這個(gè)版本是最古老的版本,采用原生 POI,手動(dòng)將 Excel 中的行映射成 ArrayList 對(duì)象,然后存儲(chǔ)到 List,代碼執(zhí)行的步驟如下:

  1. 手動(dòng)讀取 Excel 成 List
  2. 循環(huán)遍歷,在循環(huán)中進(jìn)行以下步驟

檢驗(yàn)字段長(zhǎng)度

一些查詢數(shù)據(jù)庫的校驗(yàn),比如校驗(yàn)當(dāng)前行欠費(fèi)對(duì)應(yīng)的房屋是否在系統(tǒng)中存在,需要查詢房屋表

寫入當(dāng)前行數(shù)據(jù)

返回執(zhí)行結(jié)果,如果出錯(cuò) / 校驗(yàn)不合格。則返回提示信息并回滾數(shù)據(jù)

顯而易見的,這樣實(shí)現(xiàn)一定是趕工趕出來的,后續(xù)可能用的少也沒有察覺到性能問題,但是它最多適用于個(gè)位數(shù)/十位數(shù)級(jí)別的數(shù)據(jù)。存在以下明顯的問題:

  • 查詢數(shù)據(jù)庫的校驗(yàn)對(duì)每一行數(shù)據(jù)都要查詢一次數(shù)據(jù)庫,應(yīng)用訪問數(shù)據(jù)庫來回的網(wǎng)絡(luò)IO次數(shù)被放大了 n 倍,時(shí)間也就放大了 n 倍
  • 寫入數(shù)據(jù)也是逐行寫入的,問題和上面的一樣
  • 數(shù)據(jù)讀取使用原生 POI,代碼十分冗余,可維護(hù)性差。

2. 第二版:EasyPOI + 緩存數(shù)據(jù)庫查詢操作 + 批量插入

針對(duì)第一版分析的三個(gè)問題,分別采用以下三個(gè)方法優(yōu)化

緩存數(shù)據(jù),以空間換時(shí)間

逐行查詢數(shù)據(jù)庫校驗(yàn)的時(shí)間成本主要在來回的網(wǎng)絡(luò)IO中,優(yōu)化方法也很簡(jiǎn)單。將參加校驗(yàn)的數(shù)據(jù)全部緩存到 HashMap 中。直接到 HashMap 去命中。關(guān)注公號(hào):碼猿技術(shù)專欄,回復(fù)關(guān)鍵詞:1111 獲取阿里內(nèi)部Java調(diào)優(yōu)手冊(cè)

例如:校驗(yàn)行中的房屋是否存在,原本是要用 區(qū)域 + 樓宇 + 單元 + 房號(hào) 去查詢房屋表匹配房屋ID,查到則校驗(yàn)通過,生成的欠單中存儲(chǔ)房屋ID,校驗(yàn)不通過則返回錯(cuò)誤信息給用戶。而房屋信息在導(dǎo)入欠費(fèi)的時(shí)候是不會(huì)更新的。并且一個(gè)小區(qū)的房屋信息也不會(huì)很多(5000以內(nèi))因此我采用一條SQL,將該小區(qū)下所有的房屋以 區(qū)域/樓宇/單元/房號(hào) 作為 key,以 房屋ID 作為 value,存儲(chǔ)到 HashMap 中,后續(xù)校驗(yàn)只需要在 HashMap 中命中

自定義 SessionMapper

Mybatis 原生是不支持將查詢到的結(jié)果直接寫人一個(gè) HashMap 中的,需要自定義 SessionMapper

SessionMapper 中指定使用 MapResultHandler 處理 SQL 查詢的結(jié)果集

@Repository
public class SessionMapper extends SqlSessionDaoSupport {

    @Resource
    public void setSqlSessionFactory(SqlSessionFactory sqlSessionFactory) {
        super.setSqlSessionFactory(sqlSessionFactory);
    }

    // 區(qū)域樓宇單元房號(hào) - 房屋ID
    @SuppressWarnings("unchecked")
    public Map<String, Long> getHouseMapByAreaId(Long areaId) {
        MapResultHandler handler = new MapResultHandler();

 this.getSqlSession().select(BaseUnitMapper.class.getName()+".getHouseMapByAreaId", areaId, handler);
        Map<String, Long> map = handler.getMappedResults();
        return map;
    }
}

MapResultHandler 處理程序,將結(jié)果集放入 HashMap

public class MapResultHandler implements ResultHandler {
    private final Map mappedResults = new HashMap();

    @Override
    public void handleResult(ResultContext context) {
        @SuppressWarnings("rawtypes")
        Map map = (Map)context.getResultObject();
        mappedResults.put(map.get("key"), map.get("value"));
    }

    public Map getMappedResults() {
        return mappedResults;
    }
}

示例 Mapper

@Mapper
@Repository 
public interface BaseUnitMapper {
    // 收費(fèi)標(biāo)準(zhǔn)綁定 區(qū)域樓宇單元房號(hào) - 房屋ID
    Map<String, Long> getHouseMapByAreaId(@Param("areaId") Long areaId);
}

示例 Mapper.xml

<select id="getHouseMapByAreaId" resultMap="mapResultLong">
    SELECT
        CONCAT( h.bulid_area_name, h.build_name, h.unit_name, h.house_num ) k,
        h.house_id v
    FROM
        base_house h
    WHERE
        h.area_id = ##{areaId}
    GROUP BY
        h.house_id
</select>
            
<resultMap id="mapResultLong" type="java.util.HashMap">
    <result property="key" column="k" javaType="string" jdbcType="VARCHAR"/>
    <result property="value" column="v" javaType="long" jdbcType="INTEGER"/>
</resultMap>

之后在代碼中調(diào)用 SessionMapper 類對(duì)應(yīng)的方法即可。

使用 values 批量插入

MySQL insert 語句支持使用 values (),(),() 的方式一次插入多行數(shù)據(jù),通過 mybatis foreach 結(jié)合 java 集合可以實(shí)現(xiàn)批量插入,代碼寫法如下:

<insert id="insertList">
    insert into table(colom1, colom2)
    values
    <foreach collection="list" item="item" index="index" separator=",">
     ( ##{item.colom1}, ##{item.colom2})
    </foreach>
</insert>

使用 EasyPOI 讀寫 Excel

http://doc.wupaas.com/docs/easypoi/easypoi-1c0u4mo8p4ro8 采用基于注解的導(dǎo)入導(dǎo)出,修改注解就可以修改Excel,非常方便,代碼維護(hù)起來也容易。

3. 第三版:EasyExcel + 緩存數(shù)據(jù)庫查詢操作 + 批量插入

第二版采用 EasyPOI 之后,對(duì)于幾千、幾萬的 Excel 數(shù)據(jù)已經(jīng)可以輕松導(dǎo)入了,不過耗時(shí)有點(diǎn)久(5W 數(shù)據(jù) 10分鐘左右寫入到數(shù)據(jù)庫)不過由于后來導(dǎo)入的操作基本都是開發(fā)在一邊看日志一邊導(dǎo)入,也就沒有進(jìn)一步優(yōu)化。但是好景不長(zhǎng),有新小區(qū)需要遷入,票據(jù) Excel 有 41w 行,這個(gè)時(shí)候使用 EasyPOI 在開發(fā)環(huán)境跑直接就 OOM 了,增大 JVM 內(nèi)存參數(shù)之后,雖然不 OOM 了,但是 CPU 占用 100% 20 分鐘仍然未能成功讀取全部數(shù)據(jù)。故在讀取大 Excel 時(shí)需要再優(yōu)化速度。莫非要我這個(gè)渣渣去深入 POI 優(yōu)化了嗎?別慌,先上 GITHUB 找找別的開源項(xiàng)目。這時(shí)阿里 EasyExcel 映入眼簾:

圖片圖片

emmm,這不是為我量身定制的嗎!趕緊拿來試試。EasyExcel 采用和 EasyPOI 類似的注解方式讀寫 Excel,因此從 EasyPOI 切換過來很方便,分分鐘就搞定了。也確實(shí)如阿里大神描述的:41w行、25列、45.5m 數(shù)據(jù)讀取平均耗時(shí) 50s,因此對(duì)于大 Excel 建議使用 EasyExcel 讀取。

4. 第四版:優(yōu)化數(shù)據(jù)插入速度

在第二版插入的時(shí)候,我使用了 values 批量插入代替逐行插入。每 30000 行拼接一個(gè)長(zhǎng) SQL、順序插入。整個(gè)導(dǎo)入方法這塊耗時(shí)最多,非常拉跨。后來我將每次拼接的行數(shù)減少到 10000、5000、3000、1000、500 發(fā)現(xiàn)執(zhí)行最快的是 1000。結(jié)合網(wǎng)上一些對(duì) innodb_buffer_pool_size 描述我猜是因?yàn)檫^長(zhǎng)的 SQL 在寫操作的時(shí)候由于超過內(nèi)存閾值,發(fā)生了磁盤交換。關(guān)注公號(hào):碼猿技術(shù)專欄,回復(fù)關(guān)鍵詞:1111 獲取阿里內(nèi)部Java調(diào)優(yōu)手冊(cè);限制了速度,另外測(cè)試服務(wù)器的數(shù)據(jù)庫性能也不怎么樣,過多的插入他也處理不過來。所以最終采用每次 1000 條插入。

每次 1000 條插入后,為了榨干數(shù)據(jù)庫的 CPU,那么網(wǎng)絡(luò)IO的等待時(shí)間就需要利用起來,這個(gè)需要多線程來解決,而最簡(jiǎn)單的多線程可以使用 并行流 來實(shí)現(xiàn),接著我將代碼用并行流來測(cè)試了一下:

10w行的 excel、42w 欠單、42w記錄詳情、2w記錄、16 線程并行插入數(shù)據(jù)庫、每次 1000 行。插入時(shí)間 72s,導(dǎo)入總時(shí)間 95 s。

圖片圖片

并行插入工具類

并行插入的代碼我封裝了一個(gè)函數(shù)式編程的工具類,也提供給大家

/**
 * 功能:利用并行流快速插入數(shù)據(jù)
 *
 * @author Keats
 * @date 2020/7/1 9:25
 */
public class InsertConsumer {
    /**
     * 每個(gè)長(zhǎng) SQL 插入的行數(shù),可以根據(jù)數(shù)據(jù)庫性能調(diào)整
     */
    private final static int SIZE = 1000;

    /**
     * 如果需要調(diào)整并發(fā)數(shù)目,修改下面方法的第二個(gè)參數(shù)即可
     */
    static {
        System.setProperty("java.util.concurrent.ForkJoinPool.common.parallelism", "4");
    }

    /**
     * 插入方法
     *
     * @param list     插入數(shù)據(jù)集合
     * @param consumer 消費(fèi)型方法,直接使用 mapper::method 方法引用的方式
     * @param <T>      插入的數(shù)據(jù)類型
     */
    public static <T> void insertData(List<T> list, Consumer<List<T>> consumer) {
        if (list == null || list.size() < 1) {
            return;
        }

        List<List<T>> streamList = new ArrayList<>();

        for (int i = 0; i < list.size(); i += SIZE) {
            int j = Math.min((i + SIZE), list.size());
            List<T> subList = list.subList(i, j);
            streamList.add(subList);
        }
        // 并行流使用的并發(fā)數(shù)是 CPU 核心數(shù),不能局部更改。全局更改影響較大,斟酌
        streamList.parallelStream().forEach(consumer);
    }
}

這里多數(shù)使用到很多 Java8 的API,不了解的朋友可以翻看我之前關(guān)于 Java 的博客。方法使用起來很簡(jiǎn)單

InsertConsumer.insertData(feeList, arrearageMapper::insertList);

其他影響性能的內(nèi)容

日志

避免在 for 循環(huán)中打印過多的 info 日志

在優(yōu)化的過程中,我還發(fā)現(xiàn)了一個(gè)特別影響性能的東西:info 日志,還是使用 41w行、25列、45.5m 數(shù)據(jù),在 開始-數(shù)據(jù)讀取完畢 之間每 1000 行打印一條 info 日志,緩存校驗(yàn)數(shù)據(jù)-校驗(yàn)完畢 之間每行打印 3+ 條 info 日志,日志框架使用 Slf4j 。打印并持久化到磁盤。下面是打印日志和不打印日志效率的差別

打印日志

圖片圖片

不打印日志

圖片圖片

我以為是我選錯(cuò) Excel 文件了,又重新選了一次,結(jié)果依舊

圖片圖片

緩存校驗(yàn)數(shù)據(jù)-校驗(yàn)完畢 不打印日志耗時(shí)僅僅是打印日志耗時(shí)的 1/10 !

總結(jié)

提升Excel導(dǎo)入速度的方法:

  • 使用更快的 Excel 讀取框架(推薦使用阿里 EasyExcel)
  • 對(duì)于需要與數(shù)據(jù)庫交互的校驗(yàn)、按照業(yè)務(wù)邏輯適當(dāng)?shù)氖褂镁彺妗S每臻g換時(shí)間
  • 使用 values(),(),() 拼接長(zhǎng) SQL 一次插入多行數(shù)據(jù)
  • 使用多線程插入數(shù)據(jù),利用掉網(wǎng)絡(luò)IO等待時(shí)間(推薦使用并行流,簡(jiǎn)單易用)
  • 避免在循環(huán)中打印無用的日志
責(zé)任編輯:武曉燕 來源: 碼猿技術(shù)專欄
相關(guān)推薦

2022-09-01 08:42:36

SQL數(shù)據(jù)項(xiàng)目

2023-06-29 08:22:43

數(shù)據(jù)Excel模板

2012-04-25 09:24:17

Java

2020-08-06 08:00:51

數(shù)據(jù)分頁優(yōu)化

2020-09-01 17:19:36

數(shù)據(jù)監(jiān)控建模

2023-12-07 07:46:21

MySQL寫入點(diǎn)LSN

2020-12-18 10:40:00

ExcelJava代碼

2010-04-14 09:24:29

在Oracle數(shù)據(jù)庫

2024-11-08 09:34:54

2025-10-28 01:55:00

2019-05-22 15:57:11

面試ES性能數(shù)據(jù)

2016-05-23 13:50:23

UberHadoopSpark

2022-05-11 09:02:27

Python數(shù)據(jù)庫Excel

2013-02-27 15:48:05

自動(dòng)化備份FacebookPB級(jí)別數(shù)據(jù)庫

2012-08-06 14:02:09

萬國數(shù)據(jù)數(shù)據(jù)中心GDS

2010-08-23 16:55:53

SharePoint

2011-03-10 10:50:01

excelsql數(shù)據(jù)庫

2020-07-08 13:46:25

Python數(shù)據(jù)分析預(yù)處理

2011-07-12 13:01:11

ExcelOracleSql Server

2020-10-06 18:57:14

PostgreSQL數(shù)據(jù)庫數(shù)據(jù)導(dǎo)入
點(diǎn)贊
收藏

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

国产一区二区三区中文| 久久久久久一二三区| 久久久精品电影| 精产国品一区二区三区| 成人三级高清视频在线看| 久久免费精品国产久精品久久久久| 国产精品第三页| 一区二区成人免费视频| 欧美有码在线| 欧美久久久久久久久中文字幕| 欧美大黑帍在线播放| 久蕉依人在线视频| 成人在线一区二区三区| 国产精品久久激情| 伊人国产在线观看| 99re66热这里只有精品8| 亚洲成人网久久久| 99精品999| 日韩精品不卡| 最新中文字幕av| 天堂av一区| 在线观看日韩电影| 少妇高潮毛片色欲ava片| 午夜在线视频| 久久久久久久综合狠狠综合| 亚洲影院在线看| 一区二区乱子伦在线播放| 亚洲国产片色| 日韩一区二区三区国产| 人妻少妇一区二区| 精品国产乱子伦一区二区| 91精品国产入口| 超碰在线97免费| av日韩亚洲| 亚洲成人av电影在线| 9l视频自拍9l视频自拍| √天堂资源地址在线官网| 久久综合色综合88| 国产在线观看一区| 亚洲av色香蕉一区二区三区| 精久久久久久久久久久| 国产噜噜噜噜久久久久久久久| 少妇高潮av久久久久久| 亚洲一区二区三区高清| 国外成人免费在线播放 | 毛片毛片女人毛片毛片| 影音先锋久久| 欧美精品电影在线| 免费一级a毛片夜夜看| 香蕉精品视频在线观看| 俺去啦;欧美日韩| 少妇视频一区二区| 久久一区91| 日韩在线小视频| 国产中文字幕久久| 91亚洲国产高清| 日韩最新中文字幕电影免费看| 自拍偷拍你懂的| 三级电影一区| 久久伊人精品视频| 国产精品九九九九九九| 欧美激情第8页| 欧美黄色免费网站| 九九热国产视频| 亚洲精选久久| 日本乱人伦a精品| 波多野结衣日韩| 青青草国产精品亚洲专区无| 国产欧美日韩亚洲精品| 国产视频手机在线观看| 成人中文字幕电影| 免费在线观看一区二区| a天堂在线资源| 亚洲人成影院在线观看| 国产视频在线观看网站| 国产在线看片免费视频在线观看| 黑人巨大精品欧美一区二区| 妓院一钑片免看黄大片| 国精品产品一区| 日韩亚洲欧美中文三级| av在线播放网址| 国产九一精品| 操日韩av在线电影| 91浏览器在线观看| 欧美aa在线视频| 97se在线视频| 四虎影院在线播放| 中文字幕在线不卡| 国产曰肥老太婆无遮挡| 色尼玛亚洲综合影院| 欧美精品久久99久久在免费线| 丰满少妇一区二区三区专区| 香蕉久久夜色精品国产使用方法| 亚洲午夜色婷婷在线| 亚洲怡红院在线观看| 亚洲激情专区| 国产精品一区二区在线| 色呦呦中文字幕| 国产精品午夜久久| 日韩精品―中文字幕| 成人全视频在线观看在线播放高清 | 久久人人爽亚洲精品天堂| 国产亚洲欧美精品久久久久久| 久久精品一区二区国产| 99中文视频在线| 国产一级片在线| 亚洲一区二区五区| 中文字幕第17页| 女同另类激情重口| 久久成人精品视频| 亚洲色成人www永久网站| 国产成人欧美日韩在线电影| 日韩一区二区电影在线观看| 韩国日本一区| 欧美一区二区免费视频| 国产123在线| 一本色道久久| 岛国视频一区免费观看| 色影院视频在线| 欧美午夜无遮挡| 女性生殖扒开酷刑vk| 国产精品久久久久久麻豆一区软件| 欧美一级电影久久| 丰满人妻妇伦又伦精品国产| 亚洲欧美综合色| 国产视频一区二区三区在线播放| 国产成人精品福利| 欧美激情精品久久久久久黑人 | 免费在线观看av网址| 久久精品国产99| 日本中文不卡| 自拍偷拍欧美视频| 日韩av在线免费| 精品少妇久久久久久888优播| 蜜臀av性久久久久蜜臀aⅴ四虎| 欧美成人dvd在线视频| 都市激情久久综合| 日韩精品一区二区三区swag | 国产一区二区三区不卡在线| 欧美日韩激情视频| 一本加勒比波多野结衣| 精品91久久久久| 国产伦精品一区二区| 制服丝袜中文字幕在线| 51午夜精品国产| 国产免费美女视频| 国产在线一区二区| 色呦呦网站入口| 99视频有精品高清视频| 久久久国产在线视频| 国产精品久久久久久久一区二区| 国产精品视频免费看| 亚洲一区在线不卡| 93在线视频精品免费观看| 国产精品三级美女白浆呻吟| 91免费在线| 777午夜精品免费视频| 成人做爰视频网站| 国产乱码精品一区二区三| 免费看污污视频| 日韩三级av高清片| 欧美精品videos另类日本| 丰满少妇一级片| 天天av天天翘天天综合网| 中文在线一区二区三区| 丝袜亚洲另类欧美| 亚洲一区二区在线免费观看| 国产亚洲观看| 性色av一区二区三区在线观看 | 亚洲精品在线播放| 国内精品久久久久久久| 青青草视频免费在线观看| 日本高清不卡aⅴ免费网站| 中文字幕有码在线播放| 奇米影视一区二区三区| 韩国黄色一级大片| 农村少妇一区二区三区四区五区| 国产精品69av| 国产在线高清视频| 亚洲级视频在线观看免费1级| 国产精品久久久久久人| 亚洲欧洲日韩在线| 稀缺小u女呦精品呦| 麻豆成人精品| 中文字幕第50页| 视频福利一区| 国产一区玩具在线观看| 久久电影网站| 亚洲午夜av电影| 亚洲国产999| 日本高清视频一区二区| 欧美日韩亚洲国产另类| 91视视频在线观看入口直接观看www | 黄色片在线观看免费| 国产精品自在在线| 18禁网站免费无遮挡无码中文| 精品国产一区探花在线观看| 91久久精品www人人做人人爽 | 色综合久久久久久久久| 91嫩草|国产丨精品入口| 久久综合五月天婷婷伊人| 天天做天天干天天操| 午夜一级久久| 青青草视频国产| heyzo久久| 久久精品二区| 精品久久久久久久久久岛国gif| 2020久久国产精品| av免费在线观| 色老头一区二区三区| 头脑特工队2免费完整版在线观看| 欧美男男青年gay1069videost | 久久丁香综合五月国产三级网站| 给我免费播放片在线观看| 久久在线电影| 日本不卡在线观看| 欧美a大片欧美片| 91成人免费视频| 美女视频一区| 国产成+人+综合+亚洲欧洲| 国产网红女主播精品视频| www.午夜精品| porn亚洲| 亚洲欧美中文另类| 天堂在线观看免费视频| 日韩一区二区三免费高清| 人妻中文字幕一区二区三区| 欧美性色视频在线| 在线观看 中文字幕| 一区二区三区四区五区视频在线观看 | 国产图片一区| 岛国视频一区| 国产成人aa在线观看网站站| 肥熟一91porny丨九色丨| 成人国产精品久久| 国产日韩欧美视频在线| ww久久综合久中文字幕| 国产精品av网站| 日韩福利一区| 国产精品av在线播放| 欧美特黄aaaaaaaa大片| 欧美一区第一页| 色吧亚洲日本| 欧美一区二区三区精品电影| 九色porny自拍视频在线观看| 久久久久久久久久久成人| av中文字幕在线看| 国内偷自视频区视频综合| 国产精品高颜值在线观看| 91国内在线视频| av日韩亚洲| 国产噜噜噜噜噜久久久久久久久 | 高清电影在线免费观看| 久久久久久有精品国产| 波多野结衣乳巨码无在线观看| 欧美国产日韩一区二区在线观看| 婷婷丁香在线| 国内精品久久久久久中文字幕| 乱馆动漫1~6集在线观看| 欧美一区二区三区免费观看| 自拍偷自拍亚洲精品被多人伦好爽 | 国产不卡免费视频| 国产精品伦子伦| 久久夜色精品国产欧美乱极品| 美女爆乳18禁www久久久久久| 久久久精品黄色| 婷婷激情四射网| 一个色综合av| 中国一级免费毛片| 在线看日本不卡| 国产日韩欧美一区二区东京热| 日韩一区二区在线看片| 欧美一级特黄aaaaaa| 日韩精品久久久久久福利| 福利在线视频导航| 大胆人体色综合| 国产拍在线视频| 国产精品美女视频网站| 国产一区二区| 精品久久久久久一区二区里番| 国产精品中文字幕亚洲欧美| 日韩最新中文字幕| 中文在线不卡| 在线观看av网页| 国产v日产∨综合v精品视频| 成人免费网站黄| 自拍偷拍欧美激情| 成年人免费高清视频| 欧美日韩视频在线一区二区 | 99re8精品视频在线观看| 国产亚洲福利社区| 日韩av密桃| 黄网站欧美内射| 久99久精品视频免费观看| 秘密基地免费观看完整版中文 | 大桥未久av一区二区三区中文| 少妇特黄一区二区三区| 亚洲三级免费观看| 日本视频免费观看| 日韩免费视频一区二区| 国产福利在线看| 国内外成人免费激情在线视频网站| 美女色狠狠久久| 国产九区一区在线| 亚洲欧美偷拍自拍| 日韩福利视频在线| k8久久久一区二区三区| 无码人妻精品中文字幕 | 国产女人高潮时对白| 国产视频久久久久| 日韩av官网| 国产一区二区在线免费视频| 亚洲毛片免费看| av片在线免费| 韩国三级在线一区| 黄色片在线观看免费| 欧美网站在线观看| 亚洲狼人综合网| 久久国产精品久久久| 亚洲承认视频| 欧美大香线蕉线伊人久久国产精品| 亚洲一区在线| 狠狠干狠狠操视频| 欧美激情在线看| 69亚洲精品久久久蜜桃小说| 亚洲国产精品va在线| 青草av在线| 91在线播放视频| 欧美黄免费看| 日韩欧美中文在线视频| 国产精品五月天| 国产精品成人久久久| 亚洲欧美制服另类日韩| 性欧美freesex顶级少妇| 国严精品久久久久久亚洲影视 | 小说区图片区色综合区| 男女啪啪免费视频网站| 成人精品视频一区二区三区| 极品盗摄国产盗摄合集| 91精品国产丝袜白色高跟鞋| 黄网站在线免费看| 91久久国产综合久久91精品网站 | 国产调教精品| 黄色网页免费在线观看| 成年人午夜久久久| 日本三级视频在线| 亚洲国产91色在线| 无遮挡爽大片在线观看视频| 久久久久久九九九九| 西西人体一区二区| 人妻av无码一区二区三区| 色老头久久综合| av免费观看一区二区| 成人av在线天堂| 欧美激情第二页| 粉嫩av懂色av蜜臀av分享| 五月婷婷综合网| 日本大臀精品| 国产精品视频999| 91精品一区国产高清在线gif | 亚洲国产最新| www.色偷偷.com| 综合中文字幕亚洲| 午夜精品久久久久久久爽| 久久久久久亚洲精品中文字幕| 网友自拍一区| 日本xxxx黄色| 伊人性伊人情综合网| 欧美在线 | 亚洲| 日本精品va在线观看| 成人a'v在线播放| 午夜激情影院在线观看| 亚洲成人久久影院| 大乳在线免费观看| 97netav| 快she精品国产999| 日本精品在线免费观看| 精品国产百合女同互慰| 成人爽a毛片免费啪啪| 亚洲午夜精品一区二区三区| 国产成人在线视频播放| 久久久久亚洲av成人毛片韩| 中国china体内裑精亚洲片| 欧美高清hd| 成年人免费大片| 亚洲激情图片一区| 国产三级在线观看| 亚洲最大av网| 日韩中文字幕麻豆| 久久久全国免费视频| 亚洲天堂av在线免费| 精品国产三级| 十八禁视频网站在线观看| 亚洲精品欧美在线| 黄视频在线观看免费| www 成人av com| 美国十次了思思久久精品导航 | 欧美日韩精品一区视频| 大桥未久在线播放| 国产高清精品软男同|