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

我是如何在SQL Server中處理每天四億三千萬記錄的?

數(shù)據(jù)庫 SQL Server
首先聲明,我只是個(gè)程序員,不是專業(yè)的DBA,以下這篇文章是從一個(gè)問題的解決過程去寫的,而不是一開始就給大家一個(gè)正確的結(jié)果,如果文中有不對(duì)的地方,請(qǐng)各位數(shù)據(jù)庫大牛給予指正,以便我能夠更好的處理此次業(yè)務(wù)。

[[212553]]

項(xiàng)目背景

這是給某數(shù)據(jù)中心做的一個(gè)項(xiàng)目,項(xiàng)目難度之大令人發(fā)指,這個(gè)項(xiàng)目真正的讓我感覺到了,商場(chǎng)如戰(zhàn)場(chǎng),而我只是其中的一個(gè)小兵,太多的戰(zhàn)術(shù),太多的高層之間的較量,太多的內(nèi)幕了。具體這個(gè)項(xiàng)目的情況,我有空再寫相關(guān)的博文出來。

這個(gè)項(xiàng)目是要求做環(huán)境監(jiān)控,我們暫且把受監(jiān)控的設(shè)備稱為采集設(shè)備,采集設(shè)備的屬性稱為監(jiān)控指標(biāo)。項(xiàng)目要求:系統(tǒng)支持不少于10w個(gè)監(jiān)控指標(biāo),每個(gè)監(jiān)控指標(biāo)的數(shù)據(jù)更新不大于20秒,存儲(chǔ)延遲不超過120秒。那么,我們可以通過簡單的計(jì)算得出較理想的狀態(tài)——要存儲(chǔ)的數(shù)據(jù)為:每分鐘30w,每個(gè)小時(shí)1800w,也就是每天4億3千兩百萬。而實(shí)際,數(shù)據(jù)量會(huì)比這個(gè)大5%左右。(實(shí)際上大部分是信息垃圾,可以通過數(shù)據(jù)壓縮進(jìn)行處理的,但是別人就是要搞你,能咋辦)

上面是項(xiàng)目要求的指標(biāo),我想很多有不少大數(shù)據(jù)處理經(jīng)驗(yàn)的同學(xué)都會(huì)呲之以鼻,就這么點(diǎn)?嗯,我也看了很多大數(shù)據(jù)處理的東西,但是之前沒處理過,看別人是頭頭是道,什么分布式,什么讀寫分離,看起來確實(shí)很容易解決。但是,問題沒這么簡單,上面我說了,這是一個(gè)非常惡劣的項(xiàng)目,是一個(gè)行業(yè)惡性競(jìng)爭(zhēng)典型的項(xiàng)目。

  • 沒有更多的服務(wù)器,而是這個(gè)服務(wù)器除了搭配數(shù)據(jù)庫、集中采集器(就是數(shù)據(jù)解析、告警、存儲(chǔ)的程序),還要支持30w點(diǎn)的北向接口(SNMP),在程序沒有優(yōu)化之前CPU常年占用80%以上。因?yàn)轫?xiàng)目要求要使用雙機(jī)熱備,為了省事,減少不必要的麻煩,我們把相關(guān)的服務(wù)放在一起,以便能夠充分利用HA的特性(外部購買的HA系統(tǒng))
  • 系統(tǒng)數(shù)據(jù)正確性要求極其變態(tài),要求從底層采集系統(tǒng)到最上層的監(jiān)控系統(tǒng),一條數(shù)據(jù)都不能差

我們的系統(tǒng)架構(gòu)如下,可以看到,其中數(shù)據(jù)庫壓力非常之大,尤其在LevelA節(jié)點(diǎn): 

  • 硬件配置如下: 

CPU:英特爾? 至強(qiáng)? 處理器 E5-2609 (4核, 2.40GHz, 10MB, 6.4 GT/s) 

內(nèi)存:4GB (2x2GB) DDR3 RDIMM Memory, 1333MHz,ECC 

硬盤:500GB 7200 RPM 3.5’’ SATA3 硬盤,Raid5. 

  • 數(shù)據(jù)庫版本

采用的是SQLServer2012標(biāo)準(zhǔn)版,HP提供的正版軟件,缺少很多企業(yè)版的NB功能。 

寫入瓶頸 

首先遇到的***個(gè)攔路虎就是,我們發(fā)現(xiàn)現(xiàn)有的程序下,SQLServer根本處理不了這么多的數(shù)據(jù)量,具體情況是怎樣的呢?  

我們的存儲(chǔ)結(jié)構(gòu) 

一般為了存儲(chǔ)大量的歷史數(shù)據(jù),我們都會(huì)進(jìn)行一個(gè)物理的分表,否則每天上百萬條的記錄,一年下來就是幾億條。因此,原來我們的表結(jié)構(gòu)是這樣的: 

 

  1. CREATE TABLE [dbo].[ His20140822 ]( 
  2.     [ No ] [bigint] IDENTITY( , ) NOT NULL, 
  3.     [ Dtime ] [datetime] NOT NULL, 
  4.     [ MgrObjId ] [varchar]( 36 ) NOT NULL, 
  5.     [ Id ] [varchar]( 50 ) NOT NULL, 
  6.     [ Value ] [varchar]( 50 ) NOT NULL, CONSTRAINT [PK_His20140822] PRIMARY KEY CLUSTERED 
  7.     [ No ] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] 
  8. ) ON [PRIMARY]  

No作為唯一的標(biāo)識(shí)、采集設(shè)備Id(Guid)、監(jiān)控指標(biāo)Id(varchar(50))、記錄時(shí)間、記錄值。并以采集設(shè)備Id和監(jiān)控指標(biāo)Id作為索引,以便快速查找。  

批量寫入 

寫入當(dāng)時(shí)是用BulKCopy,沒錯(cuò),就是它,號(hào)稱寫入百萬條記錄都是秒級(jí)的 

 

  1. public static int BatchInert string  connectionString,  string  desTable,  DataTable  dt,  int  batchSize =  500 ) {  using  ( var  sbc =  new SqlBulkCopy (connectionString, SqlBulkCopyOptions .seInternalTransaction )
  2.    { 
  3.              
  4. BulkCopyTimeout  =  300 , 
  5.              
  6. NotifyAfter  = dt. Rows Count , 
  7.              
  8. BatchSize  = batchSize, 
  9.              
  10. DestinationTableName  = desTable 
  11.     }) 
  12.     {  foreach  ( DataColumn  column in  dt. Columns 
  13.        sbc. ColumnMappingsAdd (columnColumnName , columnColumnName ); 
  14.             sbc. WriteToServer (dt); 
  15.      } return  dt. Rows Count ; 
  16.     } 

 

存在什么問題? 

上面的架構(gòu),在每天4千萬的數(shù)據(jù)都是OK的。但是,調(diào)整為上述背景下的配置時(shí),集中監(jiān)控程序就內(nèi)存溢出了,分析得知,接收的太多數(shù)據(jù),放在了內(nèi)存中,但是沒有來得及寫入到數(shù)據(jù)庫中,最終導(dǎo)致了生成的數(shù)據(jù)大于消費(fèi)的數(shù)據(jù),導(dǎo)致內(nèi)存溢出,程序無法工作。 

瓶頸到底在哪里? 

是因?yàn)镽AID磁盤的問題?是數(shù)據(jù)結(jié)構(gòu)的問題?是硬件的問題?是SQLServer版本的問題?是沒有分區(qū)表的問題?還是程序的問題? 

當(dāng)時(shí)時(shí)間只有一個(gè)星期,一個(gè)星期搞不好,項(xiàng)目監(jiān)管就要我們滾蛋了,于是,有了連續(xù)工作48小時(shí)的壯舉,有了到處打電話求人的抓雞…… 

但是,這個(gè)時(shí)候需要的是冷靜,再冷靜……SQLServer版本?硬件?目前都不大可能換的。RAID磁盤陣列,應(yīng)該不是。那么到底是什么,真TM的冷靜不下來。 

大家可能體會(huì)不到現(xiàn)場(chǎng)那種緊張的氣氛,其實(shí)過了這么久,我自己也都很難再回到那種情境。但是可以這么說,或許我們現(xiàn)在有了各種方法,或者處于局外人我們有更多思考,但是當(dāng)一個(gè)項(xiàng)目壓迫你快到放棄的時(shí)候,你那時(shí)的想法、考慮在現(xiàn)場(chǎng)環(huán)境因素的制約下,都可能出現(xiàn)重大的偏差。有可能讓你快速的思考,也有可能思維停滯。有些同事在這種高壓的環(huán)境下,甚至出現(xiàn)了更多的低級(jí)錯(cuò)誤,思維已經(jīng)完全亂了,效率更低了……36小時(shí)沒有合眼,或者只在工地上(下雨天到處都是泥巴,干了的話到時(shí)都是泥灰)瞇兩三個(gè)小時(shí),然后繼續(xù)干,連續(xù)這么一個(gè)星期!或者還要繼續(xù)! 

很多人給了很多想法,但是好像有用,又好像沒用。等等,為什么是“好像有用,又好像沒用”?我隱隱約約中,好像抓住了一絲方向,到底是什么?對(duì)了,驗(yàn)證,我們現(xiàn)在是跑在現(xiàn)場(chǎng)環(huán)境下,之前沒有問題,不代表現(xiàn)在的壓力下沒有問題,要在一個(gè)大型系統(tǒng)中分析這么個(gè)小功能,影響太大了,我們應(yīng)該分解它。是的,是“單元測(cè)試”,就是單個(gè)方法的測(cè)試,我們需要驗(yàn)證每個(gè)函數(shù),每個(gè)獨(dú)立的步驟到底耗時(shí)在哪里? 

逐步測(cè)試驗(yàn)證系統(tǒng)瓶頸 

修改BulkCopy的參數(shù)

首先,我想到的是,修噶BulkCopy的各項(xiàng)參數(shù),BulkCopyTimeout、BatchSize,不斷的測(cè)試調(diào)整,結(jié)果總是在某個(gè)范圍波動(dòng),實(shí)際并沒有影響。或許會(huì)影響一些CPU計(jì)數(shù),但是遠(yuǎn)遠(yuǎn)沒有達(dá)到我的期望,寫入的速度還是在5秒1w~2w波動(dòng),遠(yuǎn)遠(yuǎn)達(dá)不到要求20秒內(nèi)要寫20w的記錄。 

按采集設(shè)備存儲(chǔ)

是的,上述結(jié)構(gòu)按每個(gè)指標(biāo)每個(gè)值為一條記錄,是不是太多的浪費(fèi)?那么按采集設(shè)備+采集時(shí)間作為一條記錄是否可行?問題是,怎么解決不同采集設(shè)備屬性不一樣的問題?這時(shí),一個(gè)同事發(fā)揮才能了,監(jiān)控指標(biāo)+監(jiān)控值可以按XML格式存儲(chǔ)。哇,還能這樣?查詢呢,可以用for XML這種形式。 

于是有了這種結(jié)構(gòu):No、MgrObjId、Dtime、XMLData 

結(jié)果驗(yàn)證,比上面的稍微好點(diǎn),但是不是太明顯。 

數(shù)據(jù)表分區(qū)??? 

那個(gè)時(shí)候還沒有學(xué)會(huì)這個(gè)技能,看了下網(wǎng)上的文章,好像挺復(fù)雜的,時(shí)間不多了,不敢嘗試。 

停止其他程序

我知道這個(gè)肯定是不行的,因?yàn)檐浖⒂布募軜?gòu)暫時(shí)沒法修改。但是我希望驗(yàn)證是不是這些因素影響的。結(jié)果發(fā)現(xiàn),提示確實(shí)明顯,但是還是沒有達(dá)到要求。 

難道是SQLServer的瓶頸?

沒轍了,難道這就是SQLServer的瓶頸?上網(wǎng)查了下相關(guān)的資料,可能是IO的瓶頸,尼瑪,還能怎么辦,要升級(jí)服務(wù)器,要更換數(shù)據(jù)庫了嗎,但是,項(xiàng)目方給嗎? 

等等,好像還有個(gè)東西,索引,對(duì)索引!索引的存在會(huì)影響插入、更新 

去掉索引 

是的,去掉索引之后查詢肯定慢,但是我必須先驗(yàn)證去掉索引是否會(huì)加快寫入。如果果斷把MgrObjId和Id兩個(gè)字段的索引去掉。

運(yùn)行,奇跡出現(xiàn)了,每次寫入10w條記錄,在7~9秒內(nèi)完全可以寫入,這樣就達(dá)到了系統(tǒng)的要求。 

查詢?cè)趺唇鉀Q? 

一個(gè)表一天要4億多的記錄,這是不可能查詢的,在沒有索引的情況下。怎么辦!?我又想到了我們的老辦法,物理分表。是的,原來我們按天分表,那么我們現(xiàn)在按小時(shí)分表。那么24個(gè)表,每個(gè)表只需存儲(chǔ)1800w條記錄左右。 

然后查詢,一個(gè)屬性在一個(gè)小時(shí)或者幾個(gè)小時(shí)的歷史記錄。結(jié)果是:慢!慢!!慢!!!去掉索引的情況下查詢1000多萬的記錄根本是不可想象的。還能怎么辦? 

繼續(xù)分表,我想到了,我們還可以按底層的采集器繼續(xù)分表,因?yàn)椴杉O(shè)備在不同的采集器中是不同的,那么我們查詢歷史曲線時(shí),只有查單個(gè)指標(biāo)的歷史曲線,那么這樣就可以分散在不同的表中了。 

說干就干,結(jié)果,通過按10個(gè)采集嵌入式并按24小時(shí)分表,每天生成240張表(歷史表名類似這樣:His_001_2014112615),終于把一天寫入4億多條記錄并支持簡單的查詢這個(gè)問題給解決掉了!!!

查詢優(yōu)化 

在上述問題解決之后,這個(gè)項(xiàng)目的難點(diǎn)已經(jīng)解決了一半,項(xiàng)目監(jiān)管也不好意思過來找茬,不知道是出于什么樣的戰(zhàn)術(shù)安排吧。 

過了很長一段時(shí)間,到現(xiàn)在快年底了,問題又來了,就是要拖死你讓你在年底不能驗(yàn)收其他項(xiàng)目。 

這次要求是這樣的:因?yàn)樯鲜鍪悄M10w個(gè)監(jiān)控指標(biāo),而現(xiàn)在實(shí)際上線了,卻只有5w個(gè)左右的設(shè)備。那么這個(gè)明顯是不能達(dá)到標(biāo)書要求的,不能驗(yàn)收。那么怎么辦呢?這些聰明的人就想,既然監(jiān)控指標(biāo)減半,那么我們把時(shí)間也減半,不就達(dá)到了嗎:就是說按現(xiàn)在5w的設(shè)備,那你要10s之內(nèi)入庫存儲(chǔ)。我勒個(gè)去啊,按你這個(gè)邏輯,我們?nèi)绻挥?00個(gè)監(jiān)控指標(biāo),豈不是要在0.1秒內(nèi)入庫?你不考慮下那些受監(jiān)控設(shè)備的感想嗎? 

但是別人要玩你,你能怎么辦?接招唄。結(jié)果把時(shí)間降到10秒之后,問題來了,大家仔細(xì)分析上面邏輯可以知道,分表是按采集器分的,現(xiàn)在采集器減少,但是數(shù)量增加了,發(fā)生什么事情呢,寫入可以支持,但是,每張表的記錄接近了400w,有些采集設(shè)備監(jiān)控指標(biāo)多的,要接近600w,怎么破? 

于是技術(shù)相關(guān)人員開會(huì)討論相關(guān)的舉措。 

在不加索引的情況下怎么優(yōu)化查詢? 

有同事提出了,where子句的順序,會(huì)影響查詢的結(jié)果,因?yàn)榘茨闼⑦x之后的結(jié)果再處理,可以先刷選出一部分?jǐn)?shù)據(jù),然后繼續(xù)進(jìn)行下一個(gè)條件的過濾。聽起來好像很有道理,但是SQLServer查詢分析器不會(huì)自動(dòng)優(yōu)化嗎?原諒我是個(gè)小白,我也是感覺而已,感覺應(yīng)該跟VS的編譯器一樣,應(yīng)該會(huì)自動(dòng)優(yōu)化吧。 

具體怎樣,還是要用事實(shí)來說話: 

結(jié)果同事修改了客戶端之后,測(cè)試反饋,有較大的改善。我查看了代碼:

 

難道真的有這么大的影響?等等,是不是忘記清空緩存,造成了假象?

于是讓同事執(zhí)行下述語句以便得出更多的信息:

 

  1. --優(yōu)化之前 
  2.  DBCC FREEPROCCACHE 
  3. DBCC DROPCLEANBUFFERS SET STATISTICS IO ON  select Dtime , Value  from  dbo his20140825 WHERE  Dtime >= ''  AND  Dtime <= ''  AND  MgrObjId ''  AND Id ''  SET STATISTICS IO OFF  --優(yōu)化之后  DBCC FREEPROCCACHE 
  4. DBCC DROPCLEANBUFFERS SET STATISTICS IO ON select Dtime , Value from  dbo his20140825 WHERE MgrObjId ''  AND  Id ''  AND Dtime >= ''  AND  Dtime <= ''  SET STATISTICS IO OFF 

 

結(jié)果如下:

 

 

優(yōu)化之前反而更好了? 

仔細(xì)查看IO數(shù)據(jù),發(fā)現(xiàn),預(yù)讀是一樣的,就是說我們要查詢的數(shù)據(jù)記錄都是一致的,物理讀、表掃描也是一直的。而邏輯讀取稍有區(qū)別,應(yīng)該是緩存***數(shù)導(dǎo)致的。也就是說,在不建立索引的情況下,where子句的條件順序,對(duì)查詢結(jié)果優(yōu)化作用不明顯。

那么,就只能通過索引的辦法了。  

建立索引的嘗試 

建立索引不是簡單的事情,是需要了解一些基本的知識(shí)的,在這個(gè)過程中,我走了不少彎路,最終才把索引建立起來。 

下面的實(shí)驗(yàn)基于以下記錄總數(shù)做的驗(yàn)證:

 

 

按單個(gè)字段建立索引 

這個(gè)想法,主要是受我建立數(shù)據(jù)結(jié)構(gòu)影響的,我內(nèi)存中的數(shù)據(jù)結(jié)構(gòu)為: 

Dictionary<mgrobjid,dictionary>。我以為先建立MgrObjId的索引,再建立Id的索引,SQLServer查詢時(shí),就會(huì)更快。</mgrobjid,dictionary

<mgrobjid,dictionary</mgrobjid,dictionary

  

<mgrobjid,dictionary</mgrobjid,dictionary 

先按MgrObjId建立索引,索引大小為550M,耗時(shí)5分25秒。結(jié)果,如上圖的預(yù)估計(jì)劃一樣,根本沒有起作用,反而更慢了。 

按多個(gè)條件建立索引

OK,既然上面的不行,那么我們按多個(gè)條件建立索引又如何?CREATE NONCLUSTERED INDEX Idx_His20141008 ON dbo.his20141008(MgrObjId,Id,Dtime)

結(jié)果,查詢速度確實(shí)提高了一倍: 

  

等等,難道這就是索引的好處?花費(fèi)7分25秒,用1.1G的空間換取來的就是這些?肯定是有什么地方不對(duì)了,于是開始翻查資料,查看一些相關(guān)書籍,最終,有了較大???進(jìn)展。 

正確的建立索引 

首先,我們需要明白幾個(gè)索引的要點(diǎn):

  • 索引之后,按索引字段重復(fù)最少的來排序,會(huì)達(dá)到***的效果。以我們的表來說,如果建立了No的聚集索引,把No放在where子句的***位是***的,其次是Id,然后是MgrObjId,***是時(shí)間,時(shí)間索引如果表是一個(gè)小時(shí)的,***不要用 
  • where子句的順序決定了查詢分析器是否使用索引來查詢。比如建立了MgrObjId和Id的索引,那么where MgrObjId=’’ and Id=’’ and Dtime=’’就會(huì)采用索引查找,而where Dtime=’’ and MgrObjId=’’ and Id=’’則不一定會(huì)采用索引查找。 
  • 把非索引列的結(jié)果列放在包含列中。因?yàn)槲覀儣l件是MgrObjId和Id以及Dtime,因此返回結(jié)果中只需包含Dtime和Value即可,因此把Dtime和Value放在包含列中,返回的索引結(jié)果就有這個(gè)值,不用再查物理表,可以達(dá)到***的速度。 

跟上述幾點(diǎn)原則,我們建立以下的索引:CREATE NONCLUSTERED INDEX Idx_His20141008 ON dbo.his20141008(MgrObjId,Id) INCLUDE(Value,Dtime) 

耗費(fèi)時(shí)間為:6分多鐘,索引大小為903M。 

我們看看預(yù)估計(jì)劃:

  

可以看到,這里完全使用了索引,沒有額外的消耗。而實(shí)際執(zhí)行的結(jié)果,1秒都不到,竟然不用一秒就在1100w的記錄中把結(jié)果篩選了出來!!帥呆了!! 

怎么應(yīng)用索引? 

既然寫入完成了、讀取完成了,怎么結(jié)合呢?我們可以把一個(gè)小時(shí)之前的數(shù)據(jù)建立索引,當(dāng)前一個(gè)小時(shí)的數(shù)據(jù)就不建立索引。也就是,不要再創(chuàng)建表的時(shí)候建立索引!! 

還能怎么優(yōu)化 

可以嘗試讀寫分離,寫兩個(gè)庫,一個(gè)是實(shí)時(shí)庫,一個(gè)是只讀庫。一個(gè)小時(shí)內(nèi)的數(shù)據(jù)查詢實(shí)時(shí)庫,一個(gè)小時(shí)之前的數(shù)據(jù)查詢只讀庫;只讀庫定時(shí)存儲(chǔ),然后建立索引;超過一個(gè)星期的數(shù)據(jù),進(jìn)行分析處理再存儲(chǔ)。這樣,無論查詢什么時(shí)間段的數(shù)據(jù),都能夠正確處理了——一個(gè)小時(shí)之內(nèi)的查詢實(shí)時(shí)庫,一個(gè)小時(shí)到一個(gè)星期內(nèi)的查詢只讀庫,一個(gè)星期之前的查詢報(bào)表庫。 

如果不需要物理分表,則在只讀庫中,定時(shí)重建索引即可。

總結(jié)

如何在SQLServer中處理億萬級(jí)別的數(shù)據(jù)(歷史數(shù)據(jù)),可以按以下方面進(jìn)行: 

  • 去掉表的所有索引 
  • 用SqlBulkCopy進(jìn)行插入 
  • 分表或者分區(qū),減少每個(gè)表的數(shù)據(jù)總量 
  • 在某個(gè)表完全寫完之后再建立索引 
  • 正確的指定索引字段 
  • 把需要用到的字段放到包含索引中(在返回的索引中就包含了一切) 
  • 查詢的時(shí)候只返回所需的字段 
責(zé)任編輯:龐桂玉 來源: ITPUB
相關(guān)推薦

2011-04-06 16:25:47

SQL Server

2018-12-25 16:30:15

SQL Server高效分頁數(shù)據(jù)庫

2009-07-15 15:18:01

JDBC連接SQL S

2015-07-29 14:51:11

身份驗(yàn)證PeriscopeGoogle認(rèn)證繞過

2012-09-10 10:45:21

編程自學(xué)編程如何編程

2021-09-03 09:06:42

代碼時(shí)間開發(fā)

2020-06-28 08:34:07

架構(gòu)師阿里軟件

2011-03-11 13:26:23

SQL Server數(shù)導(dǎo)入數(shù)據(jù)

2010-11-11 10:53:22

SQL Server遍

2009-05-31 09:25:03

SQL Server腳本數(shù)據(jù)庫管理

2024-06-17 07:41:43

2025-02-05 10:02:03

Locust測(cè)試異常處理

2011-03-21 12:41:41

JavaScript

2025-01-21 15:20:14

2019-12-23 09:25:29

日志Kafka消息隊(duì)列

2018-12-25 09:44:42

2023-09-05 00:06:45

2018-03-06 09:30:58

2021-02-26 15:10:00

前端React組件交互

2011-04-01 14:14:42

SQL Server空值
點(diǎn)贊
收藏

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

国产精品久久久久永久免费观看| 一区二区三区四区五区精品视频| 欧美绝品在线观看成人午夜影视| 美国av在线播放| 亚洲av无码一区二区乱子伦| 一区二区福利| 日韩一区av在线| www.四虎精品| 国产一区二区三区四区五区3d| 亚洲欧美日韩一区二区| 久久国产精品久久| 国产精品天天操| 在线亚洲激情| 超碰精品一区二区三区乱码| 中文字幕丰满孑伦无码专区| 精品国产一级| 91久久精品日日躁夜夜躁欧美| 宅男噜噜99国产精品观看免费| 人成网站在线观看| 免费人成精品欧美精品 | 精品人伦一区二区三区| 在线观看免费中文字幕| 91久久黄色| 久久精品中文字幕一区| 无码国产69精品久久久久同性| 精品国产一区二区三区性色av| 色诱视频网站一区| 男人添女人荫蒂免费视频| 日本电影全部在线观看网站视频| proumb性欧美在线观看| 亚洲tv在线观看| 在线观看国产小视频| 久久福利一区| 51精品在线观看| 国产午夜久久久| 久久久9色精品国产一区二区三区| 国产视频久久网| 国产xxx在线观看| 久久九九精品视频| 欧美日韩国产在线观看| 欧洲熟妇精品视频| 亚洲欧洲自拍| 欧美日韩国产中文字幕| 久久99中文字幕| 亚洲卡一卡二| 亚洲精品乱码久久久久| 熟妇熟女乱妇乱女网站| 日本在线观看免费| 国产精品福利影院| 午夜精品区一区二区三| 岛国在线视频免费看| 国产亚洲欧美在线| 热舞福利精品大尺度视频| 亚洲 小说区 图片区 都市| 粉嫩av一区二区三区在线播放| 亚洲va久久久噜噜噜久久天堂| 国产精品无码久久久久成人app| 麻豆国产一区二区| 国产主播在线一区| 亚洲视频久久久| 久久精品国产成人一区二区三区| 国产欧美日韩免费看aⅴ视频| 波多野结衣高清视频| 日韩不卡一区二区三区| 国产精品福利在线| 亚洲综合精品在线| 久久99国产精品尤物| 91精品啪在线观看麻豆免费| 国产精品毛片久久久久久久av| 韩日av一区二区| 91在线免费网站| 国产黄色高清视频| 成人国产精品视频| 久热这里只精品99re8久 | 日韩在线不卡视频| 亚洲国产成人精品综合99| 韩日成人av| 91国在线精品国内播放| 国产女主播喷水视频在线观看| 视频一区在线播放| 国产色综合天天综合网| 国产不卡av在线播放| 成人av在线电影| 欧美日韩一区二区视频在线| 午夜国产福利在线| 夜夜精品浪潮av一区二区三区| 成年人午夜免费视频| 色老太综合网| 欧美一区二区在线免费观看| 青青草视频网站| 精品在线99| 久久色精品视频| 国产成人无码精品| 免费观看在线综合色| 91精品美女在线| 日批免费在线观看| 中文无字幕一区二区三区| av动漫在线免费观看| 伊人久久视频| 91精品国产一区二区三区| 黄色性生活一级片| 天天天综合网| 欧美在线性爱视频| av免费观看在线| 久久久美女毛片| 男人j进女人j| 性欧美gay| 精品久久久网站| 人人爽人人爽人人片| 亚洲精品激情| 147欧美人体大胆444| 秋霞av在线| 亚洲午夜久久久久久久久久久| 五月婷婷激情久久| 欧美1区2区3区4区| 欧美另类极品videosbest最新版本 | 成人免费毛片播放| 动漫3d精品一区二区三区乱码| 中文字幕亚洲欧美一区二区三区| 日本在线免费观看| 国产福利不卡视频| 中文字幕在线中文字幕日亚韩一区| 国产免费拔擦拔擦8x高清在线人 | 亚洲成色www.777999| 国产劲爆久久| 欧美成人一二三| 亚洲最新av网站| 国产午夜精品一区二区| 欧美a v在线播放| 97视频一区| 久精品免费视频| 91在线公开视频| 亚洲国产精品传媒在线观看| 无码无遮挡又大又爽又黄的视频| 伊色综合久久之综合久久| 日韩中文字幕网址| 亚洲 小说区 图片区| 久久久www成人免费毛片麻豆 | 日本aⅴ免费视频一区二区三区 | 精品国产鲁一鲁一区二区三区| 成人羞羞视频播放网站| 国产福利精品av综合导导航| 五月婷婷在线播放| 五月天视频一区| 免费看毛片的网站| 99亚洲精品| 韩国精品一区二区三区六区色诱| caoprom在线| 精品国产乱码久久久久久夜甘婷婷 | 亚洲91精品在线观看| 亚洲AV无码一区二区三区性 | 日韩欧美国产亚洲| 成人免费看视频| 欧美视频在线观看视频| 高清精品视频| 羞羞色国产精品| 男人天堂网在线观看| 色婷婷亚洲一区二区三区| 色综合99久久久无码国产精品| 视频在线观看一区二区三区| 亚洲国产高清国产精品| 日本综合久久| 色偷偷av一区二区三区乱| 国产日韩欧美中文字幕| 一区二区三区中文字幕电影| 激情综合激情五月| 一本久道久久综合狠狠爱| 欧美日本韩国国产| 成人国产精品一区二区免费麻豆| 综合av色偷偷网| 国产成人精品亚洲精品色欲| 亚洲成人一区二区在线观看| 欧美图片一区二区| 久88久久88久久久| 97干在线视频| 国产剧情在线观看一区| 成人国产精品一区| 欧美另类tv| 亚洲欧洲日韩国产| 97超碰资源站| 亚洲国产毛片aaaaa无费看 | 国产精品一线天粉嫩av| 国产日韩欧美视频在线| 影院在线观看全集免费观看| 日韩电影中文字幕在线观看| 日本成人一级片| 亚洲男同1069视频| 精品无码在线视频| 黄色资源网久久资源365| 成人毛片一区二区| 成人在线免费观看网站| 成人免费看片网址| 欧美亚洲大片| 欧美激情图片区| 成人亚洲综合天堂| 精品国产一区二区三区av性色| 无码人妻av一区二区三区波多野 | 国产一区二区精品久久91| av日韩一区二区三区| 日韩综合在线| 久久久久久国产精品免费免费| 四虎影视精品永久在线观看| 97成人超碰免| 免费av在线| 亚洲欧美激情一区| 亚洲国产精品无码久久| 欧美系列亚洲系列| 人人干人人干人人干| 国产精品二区一区二区aⅴ污介绍| 中文字幕在线视频播放| 久久99蜜桃精品| 免费日韩视频在线观看| 欧美日韩网站| 亚洲一区二区三区在线观看视频| 日韩欧美在线精品| 成人自拍偷拍| 亚洲伊人精品酒店| 国产成人精品免费视频| 高清毛片在线观看| 久久成人这里只有精品| 成a人v在线播放| 亚洲美女久久久| 亚洲美女福利视频| 制服丝袜中文字幕一区| 亚洲精品91天天久久人人| 婷婷开心激情综合| 免费麻豆国产一区二区三区四区| 日本一区二区三区在线不卡| 亚洲一区二区三区四区五区六区 | 色视频成人在线观看免| 久久精品视频国产| 亚洲综合偷拍欧美一区色| 国产午夜手机精彩视频| 国产精品午夜在线观看| 国产免费一区二区三区网站免费| 不卡电影一区二区三区| 中文字幕1区2区| 国产乱一区二区| 天堂av手机在线| 久久超碰97人人做人人爱| 91国产精品视频在线观看| 日日夜夜免费精品视频| 日韩av一二三四| 天堂在线一区二区| 国产无套粉嫩白浆内谢的出处| 免费日韩av片| 精品少妇一区二区三区在线| aa亚洲婷婷| 欧美亚洲另类色图| 亚洲一区日韩| 日韩中文字幕免费在线 | 涩多多在线观看| 久久国产精品一区二区| 欧美成人手机在线视频| 国内精品伊人久久久久影院对白| 女人高潮一级片| 国产剧情一区二区| 初高中福利视频网站| 丰满放荡岳乱妇91ww| 日本一级片在线播放| 91免费视频网| 一色道久久88加勒比一| 国产精品午夜在线| 一区二区三区影视| 亚洲综合色区另类av| 日本在线观看视频网站| 91久久精品一区二区三区| 进去里视频在线观看| 91精品国产高清一区二区三区蜜臀 | 国产精品推荐精品| 日韩精品免费一区二区三区竹菊| 欧美精品一区二区三区四区五区 | 99久久亚洲一区二区三区青草| 亚洲男人在线天堂| 国产网站一区二区| 91高清免费观看| 亚洲成人免费av| 无码人妻久久一区二区三区| 91精品久久久久久久91蜜桃 | 精品一级视频| 久久精品人成| 99久久精品费精品国产风间由美| 欧美在线观看黄| 麻豆久久精品| 亚洲精品国产一区二区三区| www.成人网.com| 丁香六月激情综合| 亚洲一级电影视频| 亚洲精品无码久久久久| 精品久久国产老人久久综合| 国产最新视频在线| 欧美激情久久久久| 992tv国产精品成人影院| 成人动漫视频在线观看完整版| 婷婷精品在线观看| 二级片在线观看| 久久精品伊人| 熟妇高潮一区二区| 国产精品日产欧美久久久久| 日本熟妇毛茸茸丰满| 欧美日韩一二三区| 少妇一区二区三区四区| xxxx欧美18另类的高清| 日本在线啊啊| 97视频资源在线观看| 日韩成人影院| 日韩av三级在线| 国产精品亚洲午夜一区二区三区 | 亚洲欧美强伦一区二区| 中文国产亚洲喷潮| 亚洲电影观看| 国产高清在线一区二区| 欧美国产小视频| 亚洲精品乱码久久久久久自慰| 国产激情一区二区三区四区| www.涩涩爱| 色久优优欧美色久优优| 刘亦菲久久免费一区二区| 久久中文字幕在线视频| 高清欧美日韩| 日本一区免费| 亚洲综合欧美| 特级西西人体4444xxxx| 亚洲成av人片在线观看无码| a级片在线播放| 日韩视频免费在线观看| 99亚洲伊人久久精品影院| 欧美日韩一区二区视频在线观看| 99香蕉国产精品偷在线观看 | 中文字幕欧美三区| 黄色片网站在线免费观看| 亚洲缚视频在线观看| 欧美亚洲系列| 99久久综合狠狠综合久久止| 小小影院久久| 一二三级黄色片| 综合久久久久综合| 亚洲一区二区影视| 色一区av在线| 祥仔av免费一区二区三区四区| 日韩精品久久一区| 视频一区视频二区在线观看| 成人激情五月天| 欧美亚洲综合另类| 999国产在线视频| 国产精品一区二区久久精品| 清纯唯美综合亚洲| 五月婷婷丁香色| 国产精品久久久久久久久免费樱桃 | 在线亚洲欧美| www.久久国产| 在线亚洲欧美专区二区| 国产在线一二三| 国产精品影院在线观看| 婷婷久久一区| 久久精品亚洲天堂| 亚洲综合色网站| 日批免费在线观看| 国产精品h在线观看| 久久国产综合| 国产又粗又猛又爽又黄| 亚洲成人自拍网| 精品无人乱码| 国产伊人精品在线| 欧美精品首页| 国产老熟女伦老熟妇露脸| 日韩欧美在线观看视频| 999在线视频| 97av影视网在线观看| 一本久道久久综合狠狠爱| 成人片黄网站色大片免费毛片| 欧美午夜不卡在线观看免费| 快射视频在线观看| 国产精品一级久久久| 老司机亚洲精品| 朝桐光av在线| 日韩电影在线观看中文字幕| 热久久久久久| 被灌满精子的波多野结衣| 91日韩一区二区三区| 亚洲天堂aaa| 欧美激情一区二区三区成人| 国产乱码精品一区二区三区四区 | 91玉足脚交白嫩脚丫在线播放| 无码人妻精品一区二区50| 不卡伊人av在线播放| 自拍自偷一区二区三区| 一级黄色片国产| 黑人欧美xxxx| 黄色网页在线免费观看| 久久精品国产一区二区三区不卡| 捆绑调教美女网站视频一区| 国产一级生活片| 日韩在线观看免费高清| 久久精品国产亚洲blacked| 亚洲精品手机在线观看| 黄色91在线观看| 好了av在线| 日韩片电影在线免费观看| 不卡的看片网站|