成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識庫 > MSSQL批量插入數(shù)據(jù)優(yōu)化詳細(xì)

MSSQL批量插入數(shù)據(jù)優(yōu)化詳細(xì)

熱門標(biāo)簽:400電話辦理泰安 安卡拉地圖標(biāo)注app 我要地圖標(biāo)注數(shù)量有限制嗎 家庭農(nóng)場地圖標(biāo)注名稱怎樣起名 電話機器人怎么代理商 互聯(lián)網(wǎng)電話外呼系統(tǒng) 電銷需要外呼系統(tǒng)嗎 零成本地圖標(biāo)注賺錢 千呼電話機器人可以試用嗎

需求

 現(xiàn)在有一個需求是將10w條數(shù)據(jù)插入到MSSQL數(shù)據(jù)庫中,表結(jié)構(gòu)如下,你會怎么做,你感覺插入10W條數(shù)據(jù)插入到MSSQL如下的表中需要多久呢?

或者你的批量數(shù)據(jù)是如何插入的呢?我今天就此問題做個探討。

壓測mvc的http接口看下數(shù)據(jù)

首先說下這里只是做個參照,來理解插入數(shù)據(jù)庫的性能狀況,與開篇的需求無半毛錢關(guān)系。

mvc接口代碼如下:

public bool Add(CustomerFeedbackEntity m)
    {
      using (var conn=Connection)
      {
        string sql = @"INSERT INTO [dbo].[CustomerFeedback]
                      ([BusType]
                      ,[CustomerPhone]
                      ,[BackType]
                      ,[Content]
                     )
                   VALUES
                      (@BusType
                      ,@CustomerPhone
                      ,@BackType
                      ,@Content
                      )";
        return conn.Execute(sql, m) > 0;
      }
    }

壓測的此mvc接口單條數(shù)據(jù)插入數(shù)據(jù)庫的聚合數(shù)據(jù)圖。

用例這樣的:5000個請求分500個線程執(zhí)行post請求接口。

這個圖告訴我們,最慢的請求只用啦4毫秒。那么我們做個算法。

如開篇的需求來看,我們用最小的響應(yīng)時間來計算。

那么插入10w條數(shù)據(jù)到數(shù)據(jù)庫需用時=100000*4毫秒,大致是6.67分鐘。那么我們奔著這個目標(biāo)來做出插入方案。

最常見的insert做法

首先我們的工程師拿到需求后這樣寫啦段代碼,如下:

//執(zhí)行數(shù)據(jù)條數(shù)
    int cnt = 10 * 10000;
    //要插入的數(shù)據(jù)
    CustomerFeedbackEntity m = new CustomerFeedbackEntity() { BusType = 1, CustomerPhone = "1888888888", BackType = 1, Content = "123123dagvhkfhsdjk肯定會撒嬌繁華的撒嬌防護等級劃分噶哈蘇德高房價盛大開放" };
    //第一種
    public void FristWay()
    {
      using (var conn = new SqlConnection(ConnStr))
      {
        conn.Open();
        Stopwatch sw = new Stopwatch();
        sw.Start();
        StringBuilder sb = new StringBuilder();
        Console.WriteLine("從:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss fff") + "開始循環(huán)執(zhí)行:" + cnt + "條sql語句 ...");
        for (int i = 0; i = cnt; i++)
        {
          sb.Clear();
          sb.Append(@"INSERT INTO [dbo].[CustomerFeedback]
                      ([BusType]
                      ,[CustomerPhone]
                      ,[BackType]
                      ,[Content]
                     )
                   VALUES(");
          sb.Append(m.BusType);
          sb.Append(",'");
          sb.Append(m.CustomerPhone);
          sb.Append("',");
          sb.Append(m.BackType);
          sb.Append(",'");
          sb.Append(m.Content);
          sb.Append("')");
          using (SqlCommand cmd = new SqlCommand(sb.ToString(), conn))
          {
            cmd.CommandTimeout = 0;
            cmd.ExecuteNonQuery();
          }
        }
        Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss fff") + "時,執(zhí)行:" + cnt + "條sql語句完成 ! 耗時:" + sw.ElapsedMilliseconds + "毫秒。");
      }
    }

執(zhí)行結(jié)果如下:

10w條數(shù)據(jù),693906毫秒,11分鐘,有沒有感覺還行,或者還可以接受的。親們,我是吐血狀不說話,繼續(xù)寫,你們看MSSQL數(shù)據(jù)庫與.Net配合插入止于哪里?

點評下:

1、不停的創(chuàng)建與釋放sqlcommon對象,會有性能浪費。

2、不停的與數(shù)據(jù)庫建立連接,會有很大的性能損耗。

此2點還有執(zhí)行結(jié)果告訴我們,此種方式不可取,即便這是我們最常見的數(shù)據(jù)插入方式。

那么我們針對以上兩點做優(yōu)化,1、創(chuàng)建一次sqlcommon對象,只與數(shù)據(jù)庫建立一次連接。優(yōu)化改造代碼如下:

public void SecondWay()
    {
      using (var conn = new SqlConnection(ConnStr))
      {
        conn.Open();
        Stopwatch sw = new Stopwatch();
        sw.Start();
        StringBuilder sb = new StringBuilder();
        Console.WriteLine("從:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss fff") + "開始循環(huán)拼接:" + cnt + "條sql語句 ...");
        for (int i = 0; i = cnt; i++)
        {
          sb.Append(@"INSERT INTO [dbo].[CustomerFeedback]
                      ([BusType]
                      ,[CustomerPhone]
                      ,[BackType]
                      ,[Content]
                     )
                   VALUES(");
          sb.Append(m.BusType);
          sb.Append(",'");
          sb.Append(m.CustomerPhone);
          sb.Append("',");
          sb.Append(m.BackType);
          sb.Append(",'");
          sb.Append(m.Content);
          sb.Append("')");
        }
        var result = sw.ElapsedMilliseconds;
        Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss fff") + "時,循環(huán)拼接:" + cnt + "條sql語句完成 ! 耗時:" + result + "毫秒。");
        using (SqlCommand cmd = new SqlCommand(sb.ToString(), conn))
        {
          cmd.CommandTimeout = 0;
          Stopwatch sw1 = new Stopwatch();
          sw1.Start();
          Console.WriteLine("從:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss fff") + "開始執(zhí)行:" + cnt + "條sql語句 ...");
          cmd.ExecuteNonQuery();
          Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss fff") + "時,執(zhí)行:" + cnt + "條sql語句完成 ! 耗時:" + sw1.ElapsedMilliseconds + "毫秒。");
        }
      }
    }

執(zhí)行結(jié)果如下:

呀,好奇怪啊,為什么跟上一個方案沒有多大區(qū)別呢?

首先我們看下拼接這么長的sql語句是怎么在數(shù)據(jù)庫中是怎么執(zhí)行的。

1、查看數(shù)據(jù)庫的連接情況

select * from sysprocesses where dbid in (select dbid from sysdatabases where name='dbname')
--或者
SELECT * FROM
[Master].[dbo].[SYSPROCESSES] WHERE [DBID] IN ( SELECT 
  [DBID]
FROM 
  [Master].[dbo].[SYSDATABASES]
WHERE 
  NAME='dbname'
)

2、查看數(shù)據(jù)庫正在執(zhí)行的sql語句

SELECT [Spid] = session_id ,
      ecid ,
      [Database] = DB_NAME(sp.dbid) ,
      [User] = nt_username ,
      [Status] = er.status ,
      [Wait] = wait_type ,
      [Individual Query] = SUBSTRING(qt.text,
                      er.statement_start_offset / 2,
                      ( CASE WHEN er.statement_end_offset = -1
                         THEN LEN(CONVERT(NVARCHAR(MAX), qt.text))
                            * 2
                         ELSE er.statement_end_offset
                       END - er.statement_start_offset )
                      / 2) ,
      [Parent Query] = qt.text ,
      Program = program_name ,
      hostname ,
      nt_domain ,
      start_time
  FROM  sys.dm_exec_requests er
      INNER JOIN sys.sysprocesses sp ON er.session_id = sp.spid
      CROSS APPLY sys.dm_exec_sql_text(er.sql_handle) AS qt
  WHERE  session_id > 50 -- Ignore system spids.
      AND session_id NOT IN ( @@SPID ) -- Ignore this current statement.
ORDER BY  1 ,

點評:雖然看似得到啦優(yōu)化,其實與上一個解決方案的執(zhí)行過程幾乎是一樣的,所以就不用多說什么啦。

利于MSSQL數(shù)據(jù)庫的用戶自定義表類型做優(yōu)化
依舊先上代碼,或許這樣你才能對用戶自定義表類型產(chǎn)生興趣。

CREATE TYPE CustomerFeedbackTemp AS TABLE(
BusType int NOT NULL,
CustomerPhone varchar(40) NOT NULL,
BackType int NOT NULL,
Content nvarchar(1000) NOT NULL
)
public void ThirdWay()
    {
      Stopwatch sw = new Stopwatch();
      Stopwatch sw1 = new Stopwatch();
      DataTable dt = GetTable();
      using (var conn = new SqlConnection(ConnStr))
      {
        string sql = @"INSERT INTO[dbo].[CustomerFeedback]
                      ([BusType]
                      ,[CustomerPhone]
                      ,[BackType]
                      ,[Content]
                     ) select BusType,CustomerPhone,BackType,[Content] from @TempTb";
        using (SqlCommand cmd = new SqlCommand(sql, conn))
        {
          cmd.CommandTimeout = 0;
          SqlParameter catParam = cmd.Parameters.AddWithValue("@TempTb", dt);
          catParam.SqlDbType = SqlDbType.Structured;
          catParam.TypeName = "dbo.CustomerFeedbackTemp";
          conn.Open();
          Console.WriteLine("從:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss fff") + "開始循環(huán)插入內(nèi)存表中:" + cnt + "條數(shù)據(jù) ...");
          sw.Start();
          for (int i = 0; i  cnt; i++)
          {
            DataRow dr = dt.NewRow();
            dr[0] = m.BusType;
            dr[1] = m.CustomerPhone;
            dr[2] = m.BackType;
            dr[3] = m.Content;
            dt.Rows.Add(dr);
          }
          Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss fff") + "時,循環(huán)插入內(nèi)存表:" + cnt + "條數(shù)據(jù)完成 ! 耗時:" + sw.ElapsedMilliseconds + "毫秒。");
          sw1.Start();
          if (dt != null  dt.Rows.Count != 0)
          {
            cmd.ExecuteNonQuery();
            sw.Stop();
          }
          Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss fff") + "時,執(zhí)行:" + cnt + "條數(shù)據(jù)的datatable的數(shù)據(jù)進數(shù)據(jù)庫 ! 耗時:" + sw1.ElapsedMilliseconds + "毫秒。");
        }
      }
    }

運行結(jié)果:

哇抓Q,不到2秒,不到2秒,怎么比每條4毫秒還快,不敢相信,是不是運行出問題啦。

再來一遍

再來一遍

是的你沒有看錯,10w條數(shù)據(jù),不到2秒。是不是迫不及待的要知道為什么?迫不及待的想知道我們用到的用戶自定義表類型是什么?

用戶自定義表類型

首先類型大家應(yīng)該很容易理解,像int,varchar,bit等都是類型,那么這個表類型是個毛線呢?

其實他就是用戶可以自己定義一個表結(jié)構(gòu)然后把他當(dāng)作一個類型。

創(chuàng)建自定義類型的詳細(xì)文檔:https://msdn.microsoft.com/zh-cn/library/ms175007.aspx

其次自定義類型也有一些限制,安全性:https://msdn.microsoft.com/zh-cn/library/bb522526.aspx

然后就是如何用這個類型,他的使用就是作為表值參數(shù)來使用的。

使用表值參數(shù),可以不必創(chuàng)建臨時表或許多參數(shù),即可向 Transact-SQL 語句或例程(如存儲過程或函數(shù))發(fā)送多行數(shù)據(jù)。

表值參數(shù)與 OLE DB 和 ODBC 中的參數(shù)數(shù)組類似,但具有更高的靈活性,且與 Transact-SQL 的集成更緊密。 表值參數(shù)的另一個優(yōu)勢是能夠參與基于數(shù)據(jù)集的操作。

Transact-SQL 通過引用向例程傳遞表值參數(shù),以避免創(chuàng)建輸入數(shù)據(jù)的副本。 可以使用表值參數(shù)創(chuàng)建和執(zhí)行 Transact-SQL 例程,并且可以使用任何托管語言從 Transact-SQL 代碼、托管客戶端以及本機客戶端調(diào)用它們。

優(yōu)點

就像其他參數(shù)一樣,表值參數(shù)的作用域也是存儲過程、函數(shù)或動態(tài) Transact-SQL 文本。 同樣,表類型變量也與使用 DECLARE 語句創(chuàng)建的其他任何局部變量一樣具有作用域。 可以在動態(tài) Transact-SQL 語句內(nèi)聲明表值變量,并且可以將這些變量作為表值參數(shù)傳遞到存儲過程和函數(shù)。

表值參數(shù)具有更高的靈活性,在某些情況下,可比臨時表或其他傳遞參數(shù)列表的方法提供更好的性能。 表值參數(shù)具有以下優(yōu)勢:

首次從客戶端填充數(shù)據(jù)時,不獲取鎖。

提供簡單的編程模型。

允許在單個例程中包括復(fù)雜的業(yè)務(wù)邏輯。

減少到服務(wù)器的往返。

可以具有不同基數(shù)的表結(jié)構(gòu)。

是強類型。

使客戶端可以指定排序順序和唯一鍵。

在用于存儲過程時像臨時表一樣被緩存。 從 SQL Server 2012 開始,對于參數(shù)化查詢,表值參數(shù)也被緩存。

限制

表值參數(shù)有下面的限制:

SQL Server 不維護表值參數(shù)列的統(tǒng)計信息。

表值參數(shù)必須作為輸入 READONLY 參數(shù)傳遞到 Transact-SQL 例程。 不能在例程體中對表值參數(shù)執(zhí)行諸如 UPDATE、DELETE 或 INSERT 這樣的 DML 操作。

不能將表值參數(shù)用作 SELECT INTO 或 INSERT EXEC 語句的目標(biāo)。 表值參數(shù)可以在 SELECT INTO 的 FROM 子句中,也可以在 INSERT EXEC 字符串或存儲過程中。

常見的BULK INSERT 數(shù)據(jù)集插入優(yōu)化

public void FourWay()
    {

      Stopwatch sw = new Stopwatch();
      Stopwatch sw1 = new Stopwatch();
      DataTable dt = GetTable();
      using (SqlConnection conn = new SqlConnection(ConnStr))
      {
        SqlBulkCopy bulkCopy = new SqlBulkCopy(conn);
        bulkCopy.BulkCopyTimeout = 0;
        bulkCopy.DestinationTableName = "CustomerFeedback";
        bulkCopy.BatchSize = dt.Rows.Count;
        conn.Open();
        Console.WriteLine("從:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss fff") + "開始循環(huán)插入內(nèi)存表中:" + cnt + "條數(shù)據(jù) ...");
        sw.Start();
        for (int i = 0; i  cnt; i++)
        {
          DataRow dr = dt.NewRow();
          dr[0] = m.BusType;
          dr[1] = m.CustomerPhone;
          dr[2] = m.BackType;
          dr[3] = m.Content;
          dt.Rows.Add(dr);
        }
        Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss fff") + "時,循環(huán)插入內(nèi)存表:" + cnt + "條數(shù)據(jù)完成 ! 耗時:" + sw.ElapsedMilliseconds + "毫秒。");
        sw1.Start();
        if (dt != null  dt.Rows.Count != 0)
        {
          bulkCopy.WriteToServer(dt);
          sw.Stop();
        }
        Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss fff") + "時,執(zhí)行:" + cnt + "條數(shù)據(jù)的datatable的數(shù)據(jù)進數(shù)據(jù)庫 ! 耗時:" + sw1.ElapsedMilliseconds + "毫秒。");
      }

執(zhí)行結(jié)果:

1秒之內(nèi)完成,1秒之內(nèi)完成,看完這個簡直要在1秒之內(nèi)完成10w條數(shù)據(jù)的插入的節(jié)奏,逆天,逆天啊。

bulk insert詳解:https://msdn.microsoft.com/zh-cn/library/ms188365.aspx

專業(yè)的點評:

表值參數(shù)的使用方法與其他基于數(shù)據(jù)集的變量的使用方法相似;但是,頻繁使用表值參數(shù)將比大型數(shù)據(jù)集要快。 大容量操作的啟動開銷比表值參數(shù)大,與之相比,表值參數(shù)在插入數(shù)目少于 1000 的行時具有很好的執(zhí)行性能。

重用的表值參數(shù)可從臨時表緩存中受益。 這一表緩存功能可比對等的 BULK INSERT 操作提供更好的伸縮性。 使用小型行插入操作時,可以通過使用參數(shù)列表或批量語句(而不是 BULK INSERT 操作或表值參數(shù))來獲得小的性能改進。 但是,這些方法在編程上不太方便,并且隨著行的增加,性能會迅速下降。

表值參數(shù)在執(zhí)行性能上與對等的參數(shù)陣列實現(xiàn)相當(dāng)甚至更好。

總結(jié)

接下來是大家最喜歡的總結(jié)內(nèi)容啦,內(nèi)容有三,如下:

1、希望能關(guān)注我其他的文章。

2、博客里面有沒有很清楚的說明白,或者你有更好的方式,那么歡迎加入左上方的2個交流群,我們一起學(xué)習(xí)探討。

3、你可以忘記點贊加關(guān)注,但千萬不要忘記掃碼打賞哦。

下面是其他網(wǎng)友的補充:

你前面的插入,完全是拼字符串,沒有用到任何“參數(shù)”,每個語句SQL SERVER都要解析,沒有辦法緩存,當(dāng)然慢了;你可以嘗試用用參數(shù)化插入,相信也是幾秒就可以插入完

大批量數(shù)據(jù)插入,首選SqlBulkCopy

標(biāo)簽:新鄉(xiāng) 黃山 文山 東營 濱州 大同 池州 來賓

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《MSSQL批量插入數(shù)據(jù)優(yōu)化詳細(xì)》,本文關(guān)鍵詞  MSSQL,批量,插入,數(shù)據(jù),優(yōu)化,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《MSSQL批量插入數(shù)據(jù)優(yōu)化詳細(xì)》相關(guān)的同類信息!
  • 本頁收集關(guān)于MSSQL批量插入數(shù)據(jù)優(yōu)化詳細(xì)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    久久综合九色| 国产精品入口夜色视频大尺度| 豆国产97在线|亚洲| 一二三四在线观看视频韩国| 国产精品久久综合av爱欲tv| 久久男人的天堂| 黄色在线免费播放| 波多野结衣中文字幕在线播放| 黄色免费视频| 欧美日韩精品国产| 黄网站app在线观看下载视频大全官网| 91热门视频在线观看| 香蕉久久国产| 久久激情视频免费观看| 欧美亚洲丝袜传媒另类| 国产欧美久久久久久| 亚洲第一区色| 欧美人与性动交α欧美精品济南到| 亚洲精品mv在线观看| 亚洲成a人片在线观看中文| 成人精品高清在线视频| 黄色av网址在线观看| 国产 日韩 欧美 综合| 5566先锋影音夜色资源站在线观看| 同产精品九九九| av污在线观看| 老司机在线永久免费观看| 亚洲十八**毛片| 老汉色影院首页| 亚洲丝袜一区| 麻豆精品密在线观看| av中文字幕在线不卡| 国产一区二区伦理片| 特黄视频免费观看| 中文字幕+乱码+中文乱码www| 日韩一区在线免费观看| 中文字幕在线播放| 成人爽a毛片免费啪啪| jlzzjlzz亚洲女人18| 国产一区二区免费视频| 黑人巨大精品欧美一区二区奶水| 国产性猛交xxxx免费看久久| 成人h动漫精品一区| 懂色av成人一区二区三区| 唐朝av高清盛宴| 不卡的电视剧免费网站有什么| 91黄视频在线观看| 亚洲欧美在线免费| 欧美视频在线一区二区三区| 亚洲精品久久久| 一本久久综合| 国产精品高潮呻吟久久av无限| 婷婷久久综合九色国产成人| 久久色.com| 亚洲无毛电影| 欧美精品videosex| 亚洲专区国产精品| 毛片毛片毛片毛| 刘亦菲国产毛片bd| 美国十次av导航亚洲入口| 亚洲第一免费视频| 日美av在线| 日韩精品乱码久久久久久| 色视频在线免费观看| 国产福利久久久| 色综合97天天综合网| 国产精品21p| 一起草最新网址| 波多野结衣50连登视频| 精品久久久三级丝袜| 欧美亚洲国产视频小说| 97在线视频一区| av在线电影网站| 日韩av一区二区三区美女毛片| 亚洲色图欧美制服丝袜另类第一页| 成人av动漫在线观看| 亚洲精品成人悠悠色影视| 久久精品欧美视频| www.xxxx欧美| 大陆一级毛片免费观看| 色88888久久久久久影院| 成人在线免费看视频| 欧美黄色大片网站| 亚洲国产日韩成人综合天堂| 1069男同网址| 久久综合影音| 不卡一区二区三区四区五区| 色琪琪综合男人的天堂aⅴ视频| 黑人精品xxx一区| 成人综合在线观看| 日本一区二区在线| 成人毛片视频网站| 欧美日韩亚洲一区二区三区| 丝瓜av网站精品一区二区| 激情综合色综合久久| 亚洲欧美一区二区三区国产精品| 男人天堂2017| 欧美成人精品一区二区三区在线看| 日本亚洲不卡| 国模视频一区二区| 成人av资源网站| 精品国产一区二区三区小蝌蚪| 户外极限露出调教在线视频| 日韩一区二区精品葵司在线| 国产精品va在线观看视色| 日本福利视频在线| 国内精品久久久久久99蜜桃| 自拍偷拍国产| 日韩视频永久免费观看| 欧美一区二区三区观看| 91中文字幕在线播放| 成人3d漫画免费无遮挡软件| 亚洲成a人片在线| 国产精品一区二区3区| 久久精品视频免费观看| 欧美福利精品| 久久精品国内一区二区三区水蜜桃| 伦理电影国产精品| 性欧美free| 日韩一级理论片| 午夜精品区一区二区三| 亚洲熟女少妇一区二区| 美女黄a一级视频| 亚洲美女视频在线| 奇米综合一区二区三区精品视频| 亚洲精品国产九九九| 日本不卡久久| 免费在线观看麻豆视频| 欧美日韩一区视频| 97久久天天综合色天天综合色hd| 亚洲一区二区三区四区中文字幕| 精品一区二区久久久久久久网站| 国产小视频你懂的| 精品按摩偷拍| 亚洲人成在线一二| 盗摄系列偷拍视频精品tp| 97久久国产精品| 5858s免费视频成人| 黄网站app在线观看下载视频大全官网| 欧美精品一区二区三区四区| 欧美精品一区二区三区久久| 日本福利专区在线观看| 国内在线高清免费视频| 永久免费在线观看| 国产欧美韩国高清| 韩国三级hd中文字幕有哪些| 中文字幕精品视频在线| 欧美性精品220| 理论片在线不卡免费观看| 中文字幕乱码一区| 中文字幕成在线观看| 久久婷婷综合色| wwwww在线观看免费视频| 中国特级黄色大片| 97视频在线免费| 国产日韩欧美一区二区三区在线观看| 国产区一区二区三| 精品国产91乱码一区二区三区四区| 日本天堂在线视频| 国色天香久久精品国产一区| 日本高清视频一区二区三区| 国产精品无码自拍| 国产wwwwxxxx| 91精品91| 亚洲一区二区久久久| 亚洲国产精品区| 成人av电影免费在线播放| 国产精品乱子伦| 中文字幕视频网| 一区二区三区四区亚洲| 小说区图片区亚洲| 亚洲美女久久| 一分钟免费观看视频播放www| 99久久综合国产精品| 91麻豆精品激情在线观看最新| 国产精品欧美经典| 亚洲精品国产熟女久久久| 国产麻豆视频网站| 色88888久久久久久影院野外| 亚洲成a人片77777在线播放| 国产大片精品免费永久看nba| 乱子伦在线视频| 日韩欧美视频一区二区| 一级二级黄色片| 成人午夜视频免费观看| 最近中文字幕mv免费高清电影| 亚洲区小说区图片区| 午夜小视频在线播放| 久久久久国色av免费观看性色| xxxxbbbb欧美| 成人免费观看男女羞羞视频| 国产精品色婷婷视频| 欧美亚一区二区三区| 久久国产精品波多野结衣| 亚洲国产日韩欧美在线动漫| 天天草夜夜操| jizzjizz.con| 午夜视频在线观看网站| 日本视频免费一区| 美女精品网站| 久久av国产紧身裤| 亚洲一区二区三区激情| 国产成人一区三区| 久久综合偷偷噜噜噜色| 久久久久久久久久亚洲| 久久综合九色九九| 免费高清完整在线观看| 精品国产91乱高清在线观看| 中文字幕精品一区二| 少妇人妻无码专区视频| 在线观看欧美www| www.av在线播放| 2018中文字幕在线观看| 亚洲色图网站| 91超薄肉色丝袜交足高跟凉鞋| 天天干天天色天天| 台湾佬中文在线| 成人欧美色图| 亚洲精品国产嫩草在线观看| 国产精品一国产精品最新章节| 国产一区二区三区丝袜| av电影一区二区| 亚洲黄色毛片| 麻豆传媒视频在线观看| 少妇久久久久久被弄到高潮| 亚洲欧美偷拍另类| 男人靠女人免费视频网站| 在线日韩国产精品| 欧美人成在线观看| 你懂的视频一区二区| 亚洲在线观看免费| 三级在线观看一区二区| 亚洲在线一区二区三区| 精品1区2区3区4区| 欧美黑人巨大精品一区二区| 岛国爱情动作片在线| 狠狠躁夜夜躁av无码中文幕| 亚洲国产精品资源| 久久国产精品免费一区| 国产又粗又爽视频| 四季av日韩精品一区| 97视频一区| 日韩欧美高清一区二区三区| 免费一区二区三区视频导航| 亚洲黄色a v| 久草久草久草| 成人高潮aa毛片免费| 91香蕉在线观看| 黄色一级大片在线免费看产| 日韩精品一区二区亚洲av| 欧美疯狂做受xxxx高潮| 男人午夜视频| 色哟哟一区二区三区| 三上悠亚在线免费观看| 欧美 亚洲 另类 激情 另类| 黄网站在线观看永久免费| 欧美精品国产白浆久久久久| 麻豆精品国产自产在线| 美女在线视频一区二区| 国产精品天美传媒入口| 亚洲亚洲精品在线观看| 日本少妇毛茸茸高潮| 精品国产乱码一区二区三区四区| 三级网在线观看| 日本黄色免费观看| 在线播放日韩av| 久久久国产精品一区二区三区| 五十路在线视频| 亚洲人成精品久久久| 天堂在线观看免费视频| 亚洲成人资源网| 久久久久久久久99精品| 美女视频一区免费观看| 国产av国片精品| 成人h精品动漫一区二区三区| 99久久免费视频.com| 亚洲欧美国产一区二区| 人人人妻人人澡人人爽欧美一区| 日本日本精品二区免费| 在线播放国产区| 好色先生视频污| 亚洲免费激情| 久久久久久久午夜| 欧美视频精品在线观看| 午夜视频在线免费播放| 久草免费在线视频| 日韩不卡在线视频| 国产精品美女午夜爽爽| 欧美成人精品在线播放| 极品盗摄国产盗摄合集| 老司机精品福利在线观看| 看成年女人免费午夜视频| 一区二区三区四区五区精品视频| 中文字幕欧美日韩精品| 国产一级片免费在线观看| 欧美一区二区三区影院| 日本黄色录像视频| 你懂的视频在线播放| 福利网站在线观看| 一区二区不卡在线视频 午夜欧美不卡'| 国产一级片视频| 神马久久影院| 日韩一区二区在线播放| 九色porny视频在线观看| 国产欧美短视频| 精品视频vs精品视频| 久久久久久精| 欧产日产国产69| www.xxx.国产| 青青在线视频观看| 99久久99久久精品免费看小说.| 超碰在线国产97| 亚洲国产成人一区二区三区| 国产日韩中文在线| 国产激情一区二区三区桃花岛亚洲| 欧美日韩一区二区三区免费看| 美女又爽又黄视频毛茸茸| 午夜在线视频| 成人福利视频网| www.久久热.com| 亚洲私人影院在线观看| 中文字幕精品一区日韩| 你懂的在线网址| 国产探花在线免费观看| 欧美日韩视频在线播放| √天堂8资源中文在线| 99福利在线| 五月天综合网|