亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數(shù)據(jù)庫 > SQL Server > 正文

SQLServer中使用擴展事件獲取Session級別的等待信息及SQLServer 2016中Session級別等待信息的增強

2024-08-31 01:04:53
字體:
供稿:網(wǎng)友

什么是等待

簡單說明一下什么是等待:

當應用程序?qū)QL Server發(fā)起一個Session請求的時候,這個Session請求在數(shù)據(jù)庫中執(zhí)行的過程中會申請其所需要的資源,

比如可能會申請內(nèi)存資源,表上的鎖資源,物理IO資源,網(wǎng)絡資源等等,

如果當前Session運行過程中需要申請的某些資源無法立即得到滿足,就會產(chǎn)生等待。

SQL Server會以不用的方式來展現(xiàn)這個等待信息,比活動Session的等待信息,實例級的等待信息等等。

SQL Server中,等待事件是作為DBA進行TroubleShooting的重要參考信息之一,SQL Server中可以通過多中方式來獲取等待信息。

但是對于SQL Server 2016之前的版本來說,不管是活動Session級別的等待和實例級的等待,參考意義都有限,

更多的時候是想要更加詳細的且可以事后分析的等待,這就需要收集那些曾經(jīng)已執(zhí)行過的Session產(chǎn)生的等待信息,也就是特定Session等待信息的歷史記錄

本文重點介紹使用擴展事件來捕獲等待信息,但不介紹擴展事件本身的使用,重點放在如何使用擴展事件來獲取想要的等待事件信息。

需要對擴展事件有一定的了解。

等待信息的獲取途徑

在SQL Server中有一個系統(tǒng)視圖sys.dm_os_wait_stats記錄了自數(shù)據(jù)庫服務啟動以來累積產(chǎn)生的等待信息,

如下圖,這個結(jié)果是實例級的,也就是記錄的整個數(shù)據(jù)庫服務器所有的等待事件的累積。

多數(shù)時候參考意義不是很大,比如某一天的網(wǎng)絡延時很高,sys.dm_os_wait_stats中累計記錄了大量的ASYNC_NETWORK_IO等待信息。

但是到了第二天或者什么時候,網(wǎng)絡變好了,但是sys.dm_os_wait_stats中記錄的ASYNC_NETWORK_IO等待信息是不變的

也就是說sys.dm_os_wait_stats無法反映實時等待情況。

sql獲取session等待信息,sql2016級別等待信息

當然要獲取實時的等待信息也簡單,記錄兩個時間點之間sys.dm_os_wait_stats中等待時間的差值,可以間接地反映出來某一段時間的數(shù)據(jù)的等待信息。

但是這個信息仍然比較粗略,依舊是實例級的,某些時候依舊是不足夠作為參考的。

另外一個是通過sys.dm_exec_requests這個系統(tǒng)視圖的wait_type,wait_time等獲取活動Session的等待信息

如截圖,但是這個是活動Session的信息,當Session完成之后,它的等待信息就看不到曾經(jīng)都產(chǎn)生了那些等待,分別是多久。

也就說,你無法追溯歷史上某一個Session或者某一個SQL(存儲過程)執(zhí)行過程中的都產(chǎn)生了什么類型的等待,等待了多長時間。

sql獲取session等待信息,sql2016級別等待信息

實話說,不管是sys.dm_os_wait_stats還是sys.dm_exec_requests,在正常情況下,獲取到的等待信息實用價值都是不高或者是適用場景有限。

更多的時候我們是想要更細一級的等待,比如某一個Login、某一部分Session、甚至某些特定的SQL(存儲過程)的執(zhí)行過程中產(chǎn)生的等待信息。

舉個實際例子,數(shù)據(jù)庫又10個Login給10個不同的應用程序訪問,其中只有1個應用程序端反饋說訪問數(shù)據(jù)庫慢,或者有性能問題,其他Login都反饋正常

那么很有可能是這個Login請求自己的問題,此時就需要針對這一個Login的情況進行針對性分析,而不是在實例級分析診斷。

如果能夠拿到這個Login執(zhí)行的Session的等待情況,或者這個Login某些特定的數(shù)據(jù)庫對象的執(zhí)行過程中的等待信息,對定位問題的針對性的就比較強了。 

本文就以此為切入點,針對如何獲取Session級別的等待信息展開說明和演示。

SQL Server 2016中獲取Session級別的等待信息

在SQL Server 2016中,獲取Session級別的等待信息是比較方便的,有直接的系統(tǒng)視圖sys.dm_exec_session_wait_stats可以使用

當前情況下,想要知道某一個Session的等待信息就很簡單了,

在sql語句開始的時候把當前Session的等待信息記錄下來

在sql語句結(jié)束的時候把當前Session的等待信息再次記錄出來

計算兩次等待信息的差值,就可以知道當前Session運行的過程中有哪些等待,分別是多少。

sql獲取session等待信息,sql2016級別等待信息

  sqlserver開發(fā)團隊可能也意識到了對于等待信息,更多的時候,需要的是較為具體的等待,而不是一個籠統(tǒng)的實例級的等待

  因此在SQL Server 2016中增加了sys.dm_exec_session_wait_stats這個支持統(tǒng)計Session級別的等待的視圖

  很不幸的SQL Server2016之前的版本中是沒有這個系統(tǒng)視圖可以很方便地記錄Session級別的等待。

  但是可以借助擴展事件來實現(xiàn)類似的功能。

使用擴展事件來捕獲Session級別的等待信息

因為這里是是用擴展事件來實現(xiàn)的,這里要求讀者要對擴展事件有一個基本的認識,擴展事件本身就不多說了。

上代碼,啟動一個擴展事件,來記錄執(zhí)行時間超過三秒的SQL語句,其執(zhí)行過程中等待時間大于0的等待事件信息。

當然這個捕獲的信息可以加上各種過濾條件。具體參考代碼備注。

IF EXISTS(SELECT * FROM sys.server_event_sessions WHERE name='CollectionSessionWaitStats') DROP EVENT session CollectionSessionWaitStats ON SERVER;GO-- 創(chuàng)建事件會話 CREATE EVENT SESSION CollectionSessionWaitStats ON SERVER  ADD EVENT sqlserver.rpc_completed(   ACTION  (    sqlos.task_time,    sqlserver.database_name,    sqlserver.nt_username,    sqlserver.username,    sqlserver.sql_text,    sqlserver.session_id,    sqlserver.transaction_id  ) WHERE [duration]>=3000000), ADD EVENT sqlserver.sql_batch_completed(   ACTION  (    sqlos.task_time,    sqlserver.database_name,    sqlserver.nt_username,    sqlserver.username,    sqlserver.sql_text,    sqlserver.session_id,    sqlserver.transaction_id  ) WHERE [duration]>=3000000),ADD EVENT sqlos.wait_info(  ACTION   (    sqlos.task_time,    sqlserver.database_name,    sqlserver.nt_username,    sqlserver.sql_text,    sqlserver.username,    sqlserver.session_id,    sqlserver.transaction_id  ) WHERE session_id>50       and opcode=1       and duration>0      and sql_text not like '%sp_MScdc_capture_job%' --排除某些信息      --and username = '' --限定只記錄某些信息),ADD EVENT sqlos.wait_info_external(  ACTION  (    sqlos.task_time,    sqlserver.database_name,    sqlserver.nt_username,    sqlserver.username,    sqlserver.sql_text,    sqlserver.session_id,    sqlserver.transaction_id  ) WHERE  session_id>50       and opcode=1       and duration>0      and sql_text not like '%sp_MScdc_capture_job%'      --and username = '')ADD TARGET package0.event_file(   SET filename=N'D:/XEventFiles/CollectionSessionWaitStats',  max_file_size=(1024),    max_rollover_files=(10) )WITH (     MAX_MEMORY=4096 KB,          EVENT_RETENTION_MODE=ALLOW_SINGLE_EVENT_LOSS,    MAX_DISPATCH_LATENCY=30 SECONDS,    MAX_EVENT_SIZE=0 KB,          MEMORY_PARTITION_MODE=NONE,       TRACK_CAUSALITY=OFF,          STARTUP_STATE=ON  )GO-- 啟用(停止)事件會話(START / STOP) ALTER EVENT SESSION CollectionSessionWaitStats ON SERVER STATE=START GO

是用擴展事件收集的Session級別的等待信息有以下幾個特點

1,SessionId是可以重復的

  舉例說明就是:比如一個SessionId = 80的Session,可以第一次執(zhí)行一個SQLA,第二次執(zhí)行一個SQLB.

  同時這兩個SQL的執(zhí)行與其執(zhí)行過程中產(chǎn)生的等待信息都可以被捕獲出來

2,同一個時間段內(nèi),一個同一個SessionId不可能同時執(zhí)行,

  比如16:46:36秒到16:46:46秒到這個時間內(nèi),SessionId = 80的Session正在執(zhí)行,擴展事件捕獲到了其產(chǎn)生的等待信息

  但是在16:46:36秒到16:46:46這個時間段內(nèi),不可能有另外一個SessionId = 80也在執(zhí)行,這個邏輯不難理解

為什么要特意說明這個問題?

因為擴展事件收集到的事件信息中SQL語句完成事件(rpc_completed或者sql_batch_completed)與產(chǎn)生的等待之間,沒有一個直接的對應關(guān)系。

怎么理解?動起手來才能發(fā)現(xiàn)問題,我是這個糾結(jié)了大半天,截圖示例。

如下截圖,擴展事件捕獲到的兩個目標事件的SessionId都是58,但是執(zhí)行的SQL是不一樣的,

sql獲取session等待信息,sql2016級別等待信息

如下截圖是不區(qū)分事件類型,捕獲到的所有的事件信息。

sql獲取session等待信息,sql2016級別等待信息

也就是上面說的,對于58號Session:

第一次運行了SELECT COUNT(1) FROM TestCollectionSessionWaitStats

第二次運行了SELECT COUNT(1) FROM TestCollectionSessionWaitStats WHERE Id>10

兩次運行的SQL一致或者不一致問題不大,關(guān)鍵是捕獲到的等待事件信心的SessionId也是58,怎么區(qū)分產(chǎn)生的事件是歸屬于哪一次的運行?

比如58號Session運行兩次sql,產(chǎn)生了10條等待信息,怎么區(qū)分這10條等待信息哪些歸屬于第一次運行生成的,哪些歸屬于第二次運行生成的?

這個就依靠上面說的第二點“同一個時間段內(nèi),一個同一個SessionId不可能同時執(zhí)行”

對于同一個SessionId,在sql_batch_completed事件中,從時間的維度來看

小于第一次sql_batch_completed事件完成時間的必然是58號Session第一次執(zhí)行生成的

大于第一次sql_batch_completed事件完成事件的且小于第二次sql_batch_completed的必然是58號Session第二次執(zhí)行生成的

有了這個理論基礎(chǔ),我們統(tǒng)計Session級別的等待就比較容易了,相信這個邏輯的實現(xiàn)并不難。

如下圖是58號Session執(zhí)行某SQL語句產(chǎn)生的等待詳細信息,可以看到多次產(chǎn)生了CXPACKET和 PAGEIOLATCH_SH等待

鑒于截圖問題,下面還有另外一個同樣是58號Session的執(zhí)行另外一個SQL捕獲到的等待信息

這個統(tǒng)計辦法就是上面提到的,在兩次sql_batch_completed事件中,雖然等待事件的SessionId一樣,

但是其發(fā)生的時候是處于當前事件的sql_batch_completed之前,上一次sql_batch_completed之后,

這樣就可以完美地匹配到sql_batch_completed事件與其對應的wait_info事件。

在這種情況下,統(tǒng)計得到類似于SQL Server 2016中的sys.dm_os_wait_stats的結(jié)果也就不難了。

sql獲取session等待信息,sql2016級別等待信息

與sys.dm_os_wait_stats 等待信息的結(jié)果相比,上述通過擴展事件獲取的等待信息,是不是更加詳細和具體?

比如對于CXPACKET等待時間,

不難發(fā)現(xiàn),如果計算計算其產(chǎn)生的次數(shù)(count),就類似于sys.dm_os_wait_stats 中的waiting_tasks_count,計算其產(chǎn)生的總時間(sum),就類似于wait_time_ms

但是上述時間的信息已經(jīng)細化到Session級別了,比sys.dm_os_wait_stats 中的等待信息更有參考價值。
對于問題的診斷和分析,也會是更加有效。

sql獲取session等待信息,sql2016級別等待信息

上述統(tǒng)計結(jié)果的SQL語句

-- Parse the XML to show rpc_completed,sql_batch_completed detailsif object_id('tempdb..#t1') is not null  drop table #t1SELECT   event_xml.value('(./action[@name="session_id"]/value)[1]', 'INT') as session_id,  event_xml.value('(./@timestamp)', 'varchar(1000)') as timestamp,  event_xml.value('(./data[@name="statement"]/value)[1]', 'varchar(max)') as statement,  event_xml.value('(./data[@name="batch_text"]/value)[1]', 'varchar(max)') as batch_text,  event_xml.value('(./@name)', 'varchar(1000)') as Event_Name,  event_xml.value('(./data[@name="duration"]/value)[1]', 'bigint') as Duration,  event_xml.value('(./data[@name="cpu_time"]/value)[1]', 'bigint') as cpu_time,  event_xml.value('(./data[@name="physical_reads"]/value)[1]', 'bigint') as physical_reads,  event_xml.value('(./data[@name="logical_reads"]/value)[1]', 'bigint') as logical_reads,  event_xml.value('(./action[@name="username"]/value)[1]', 'varchar(max)') as usernameINTO #t1FROM (    SELECT CAST(event_data AS XML) xml_event_data     FROM sys.fn_xe_file_target_read_file(N'D:/XEventFiles/CollectionSessionWaitStats*', NULL, NULL, NULL)   ) AS event_tableCROSS APPLY xml_event_data.nodes('//event') n (event_xml)WHERE event_xml.value('(./@name)', 'varchar(1000)') in ('rpc_completed','sql_batch_completed')order by Event_Name-- Parse the XML to show wait_info,wait_info_external detailsif object_id('tempdb..#t2') is not null  drop table #t2SELECT   cast(event_xml.value('(./@timestamp)', 'varchar(1000)') as DATETIME2) as timestamp,  event_xml.value('(./data[@name="duration"]/value)[1]', 'bigint') as duration,  event_xml.value('(./action[@name="session_id"]/value)[1]', 'INT') as session_id,  event_xml.value('(./data[@name="wait_type"]/text)[1]', 'VARCHAR(200)') as wait_typeINTO #t2FROM (    SELECT CAST(event_data AS XML) xml_event_data     FROM sys.fn_xe_file_target_read_file(N'D:/XEventFiles/CollectionSessionWaitStats*', NULL, NULL, NULL)   ) AS event_table   CROSS APPLY xml_event_data.nodes('//event') n (event_xml)WHERE event_xml.value('(./@name)', 'varchar(1000)') in ('wait_info','wait_info_external')if object_id('tempdb..#t3') is not null  drop table #t3SELECT   a.session_id          AS SessionId,  isnull(statement,batch_text)  AS SQLTEXT,  a.Duration            AS TotalExecuteTime,  CAST(a.timestamp AS DATETIME2)  AS CompletedTime,  CAST(b.timestamp AS DATETIME2)  AS WaitTypeStartTime,  b.wait_type            AS WaitType,  b.duration            AS WaitDurationINTO #t3FROM #t1 a INNER JOIN #t2 b on a.session_id = b.session_id  and b.timestamp < a.timestamp   and b.timestamp>(             select top 1 timestamp from #t1 c              where a.session_id = a.session_id and a.timestamp > b.timestamp             order by a.timestamp          )select   case when rn = 1 then SessionId else NULL end as SessionId,  case when rn = 1 then SQLTEXT else NULL end as SQLTEXT,  case when rn = 1 then TotalExecuteTime else NULL end as TotalExecuteTime,  CompletedTime as CompletedTime,  WaitType,  WaitTypeStartTime as WaitTypeStartTime,  WaitDurationfrom (  select ROW_NUMBER()over(partition by SessionId,SQLTEXT,TotalExecuteTime,CompletedTime order by CompletedTime,WaitTypeStartTime) as rn,  * FROM #t3)

當然該語句僅供參考,目的是為了收集Session級的統(tǒng)計信息,當收集到Session級別的統(tǒng)計信息之后,具體的統(tǒng)計方式也不難。

總結(jié)

   等待事件可以幫助我們診斷SQL Server上的一些資源瓶頸,對于問題的處理和解決有著比較重要的參考意義,如果能夠細化地收集等待事件,對于解決問題的參考意義會更大。

   本文通過一個簡單的示例,使用擴展事件來收集SQL Server中一些特定場景下的等待信息,來更加有針對性地進行問題的診斷和識別,使得問題的分析更加高效和具有針對性。

以上所述是小編給大家介紹的SQLServer中使用擴展事件獲取Session級別的等待信息及SQLServer 2016中Session級別等待信息的增強,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VeVb武林網(wǎng)網(wǎng)站的支持!


注:相關(guān)教程知識閱讀請移步到MSSQL教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
亚洲一区欧美激情| 久久久免费在线观看| 国产精品综合一区二区| 九色porny视频在线观看| 国产a亚洲精品| 伊人久久免费视频| 国产精品成人在线| 欧洲成人一区二区| 日本aⅴ大伊香蕉精品视频| gv天堂gv无码男同在线观看| aaa在线免费观看| 日韩欧美一区二区一幕| 亚洲国产aⅴ精品一区二区三区| 天天碰免费视频| 波多野结衣先锋影音| 日韩免费三级| 久久91精品国产91久久小草| 嫩草影院永久入口| 人人妻人人做人人爽| 欧美激情 亚洲| 26uuu亚洲伊人春色| 亚洲精品久久久久avwww潮水| 欧美在线不卡| 老太脱裤子让老头玩xxxxx| 国产精久久久久久| 中文字幕一二三四区| 视频一区在线播放| 黄频视频在线观看| 欧美一级片免费在线观看| 黄色网址免费在线| 人人在线视频| 欧美一区二区三区婷婷| av无码av天天av天天爽| 蜜桃传媒视频麻豆一区| 中国日韩欧美久久久久久久久| 欧美三级午夜理伦三级老人| 两个人看的免费完整在线观看| 国产精品不卡一区| 亚洲精品永久免费| 中文在线免费一区三区高中清不卡| 日韩av福利在线观看| 亚洲欧美偷拍卡通变态| 国产精品va无码一区二区三区| 亚洲激情中文字幕| 黄色片网站免费在线观看| 国产一区二区三区高清| a天堂中文字幕| 久久九九国产视频| 久久99久久久| 草草在线观看| 欧美大片免费观看在线观看网站推荐| 中文字幕乱码一区二区免费| yellow网站在线观看| 一级特黄录像免费看| 国产精品盗摄一区二区三区| 日韩精品水蜜桃| 日韩av在线天堂| 蜜臀av.com| 色丁香久综合在线久综合在线观看| 一个色妞综合视频在线观看| 成人羞羞视频免费看看| 毛片女人与拘交视频| 中日韩av在线| 小水嫩精品福利视频导航| 精品美女www爽爽爽视频| 欧美第一页草草影院浮力| 日韩影院一区二区| 国产亚洲综合视频| 无码人妻精品一区二区蜜桃网站| 91精品国产综合久久久久久| 中文字幕福利片| 欧美在线观看不卡| 久久99最新地址| 欧美激情一区三区| 欧美v在线观看| 日本一区二区三区在线视频| 激情网址大全| 日韩一级电影| 精品视频麻豆入口| 国产视频一区二区在线| 国产精品qvod| 少妇无码av无码专区在线观看| 欧美激情一区二区三区蜜桃视频| 午夜精品久久久久久| 黄色一级片一级片| 欧美日韩视频一区二区三区| 婷婷国产v国产偷v亚洲高清| 精品一区二区在线观看| 九色综合狠狠综合久久| 国产在线精品一区二区三区不卡| 99久久国产热无码精品免费| 午夜精品一区二区三区在线| 欧美疯狂做受xxxx富婆| 91美女视频在线| 羞羞色国产精品| 国产成人亚洲精品自产在线| 91美女精品网站| 国产精品久久久久9999赢消| 成年女人免费又黄又爽视频| 每日在线更新av| 欧美亚洲国产视频小说| 欧美经典一区| 精品无码人妻一区二区三| 黄大色黄女片18免费| 日本道不卡免费一区| 欧美电影免费观看高清| 久久久久久久影视| 91一区二区三区| 青丝免费观看高清影视| eeuss鲁片一区二区三区| 日本中文字幕在线视频| 成人免费看片网址| 三上悠亚在线一区二区| 国产精品视频一区二区免费不卡| 黄色污污网站在线观看| 一级黄色片毛片| 波多野结衣中文一区| 亚洲国产精品成人久久蜜臀| 成人午夜精品无码区| 老头吃奶性行交视频| av中文字幕在线免费观看| aa亚洲一区一区三区| 久久夜色精品亚洲| 国产永久免费高清在线观看视频| 日本a级片在线播放| 亚洲va在线va天堂成人| 最近中文字幕在线观看视频| 精品中文字幕一区二区| 中国动漫在线观看完整版免费| 在线观看视频污| 亚洲v日本v欧美v久久精品| 一区精品在线| 亚洲男人电影天堂| 国产视频1区2区| 91精品人妻一区二区三区四区| 国产裸体美女永久免费无遮挡| 99国产视频在线| 国产一区二区三区在线视频| 2021最新国产精品一区| 美女三级福利视频| 久久中文字幕一区二区| 精品成人国产在线观看男人呻吟| 538任你躁在线精品视频网站| 婷婷五月在线视频| 亚洲男人的天堂在线观看| 国产91精品最新在线播放| 日本一区二区免费在线| 中文字幕亚洲免费| 欧美资源在线观看| 亚洲三级免费| 在线观看中文字幕不卡| 中文字幕日韩有码| 国产精品久久久久久妇女| 91超碰这里只有精品国产| 精品欧美一区二区久久| 亚洲第一区在线观看| 日韩在线综合网| 日韩精品一区二区三区中文精品| 国产原创视频在线观看| 日韩专区在线观看| 成人久久一区二区| 精品不卡在线| 四季久久免费一区二区三区四区| 亚洲欧美视频| 国产不卡视频一区二区三区| 亚洲色图网站| 中文字幕大看焦在线看| 欧美一级二级三级区| 丰满女人性猛交| 国产极品视频在线观看| 欧美精品一区二区三区久久久| 一区二区免费在线视频| 中文字幕一精品亚洲无线一区| 亚洲色图视频在线观看| 久久国产视频一区| 天美传媒免费在线观看| 中文字幕乱码一区二区三区| 久热久热免费视频中文字幕777| 欧美性猛交xxx乱久交| 小日子的在线观看免费第8集| 日韩亚洲欧美中文高清在线| 国产精品久久一区二区三区不卡| 麻豆国产91在线播放| av免费观看网站| 大地资源中文在线观看免费版| 一区二区三区在线观看www| 你懂的网站在线观看| 日韩一区二区在线看片| 精品日韩一区二区三区| 在线视频色在线| 国产午夜精品理论片在线| 91高潮精品免费porn| 香港日本三级视频| 99人久久精品视频最新地址| 精品无码av在线| 国产精品1234| 91极品在线| 在线精品亚洲一区二区不卡| 国产精品中文久久久久久| 成人影院天天5g天天爽无毒影院| 国产午夜激情视频| 野花社区视频在线观看| 日韩有码片在线观看| 国产欧美精品一区二区三区介绍| 欧美一卡二卡在线观看| 欧美大码xxxx| 午夜精品亚洲| 欧美日韩综合视频| 国产伦理一区二区| jizz在线免费播放| 五月亚洲综合| 91精品国产丝袜白色高跟鞋| 特级特黄刘亦菲aaa级| 亚洲自拍电影| 4438x成人网全国最大| 波多野结衣网站| 天海翼视频在线观看| 日本不卡一区二区三区高清视频| 海角社区69精品视频| 激情亚洲一区二区三区四区| www.国产免费| 免费视频一二三区| 国产精品扒开腿做爽爽爽a片唱戏| 在线免费观看日韩av| 亚洲精品日韩丝袜精品| 风间由美中文字幕在线看视频国产欧美| 亚洲自拍偷拍欧美| 精品少妇久久久久久888优播| 无码国产精品一区二区免费16| 国产毛片精品国产一区二区三区| 国产欧美精品一区二区三区四区| 少妇精品久久久一区二区三区| 日韩电影中文字幕在线| 国产精品爽爽ⅴa在线观看| 久久99影院| 久久丁香综合五月国产三级网站| 色一情一乱一伦| proumb性欧美在线观看| 国产成人精品无码高潮| 黄瓜视频在线观看| 国产理论电影在线| 久草免费在线视频| 成人有码视频在线播放| 国产又粗又猛视频| 欧美粗暴jizz性欧美20| 午夜久久av| 乱码第一页成人| 在线久久视频| 亚洲成a人片777777久久| 国产精品一区二区三区免费| 国产一卡2卡3卡4卡网站免费| 日韩精品有码在线观看| 亚洲专区免费| 最近免费中文字幕mv视频| 日韩高清成人在线| 久久国产精品99久久人人澡| 超碰在线人人干| 欧美军同video69gay| 中文字幕视频免费在线观看| 中文字幕资源网在线观看免费| 欧美日韩电影一区| 成人性色生活片免费看爆迷你毛片| 久久黄色av网站| 视频一区二区三区四区五区| 免费观看成人高| 国产日韩欧美不卡在线| 91精品久久| 久久99国产精品久久99小说| 久久影视三级福利片| av在线免费观看网站| 国产九九九视频| 日韩av综合在线| xxxxwwww在线免费观看| 中文字幕区一区二区三| 成人在线综合网| 亚洲福利视频网站| 成人看片黄a免费看在线| 999视频精品| 日韩黄色三级在线观看| 久久亚洲欧美| 欧美图片自拍偷拍| 在线免费观看成人| 久久av资源站| 欧美性猛xxx| 欧美激情按摩在线| 嫩草懂你的影院| 色综合天天综合| 成人午夜在线视频| 2014亚洲精品| 欧美人与物videos| 亚洲男帅同性gay1069| 懂色av中文字幕一区二区三区| 欧美区一区二区| 成人性生交大片免费看在线播放| 黄色av网址在线播放| 国产免费一区二区三区四区五区| h小视频在线观看网| 国产精品久久二区| 午夜影视一区二区三区| a级在线观看| 亚洲精品乱码久久久久久9色| jizzzz日本| 男人天堂手机在线视频| 亚洲成人精品在线| 日韩av一区二区三区美女毛片| 久久天堂夜夜一本婷婷麻豆| 欧美综合欧美视频| 91黄色国产视频| 亚洲一区二区三区高清视频| 午夜精品国产| 好吊日视频在线观看| 国产一级片免费看| 精品视频在线播放色网色视频| 国产日本在线视频| 在线观看污污视频| 91精品国产手机| 欧美性猛交xxxxx免费看| 免费成人三级| 日韩精品久久久久久免费| 国产精品夜夜夜| 蜜芽视频在线观看| 精品欧美一区二区久久| 99久久99久久久精品棕色圆| 亚洲va欧美va天堂v国产综合| 亚洲青色在线| 久久人人爽人人片| 国产美女永久免费无遮挡| 久久久久午夜电影|