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

主頁 > 知識庫 > SQLServer中使用擴(kuò)展事件獲取Session級別的等待信息及SQLServer 2016中Session級別等待信息的增強(qiáng)

SQLServer中使用擴(kuò)展事件獲取Session級別的等待信息及SQLServer 2016中Session級別等待信息的增強(qiáng)

熱門標(biāo)簽:奧威地圖標(biāo)注多個地方 智能語音外呼系統(tǒng)選哪家 京華物流公司地圖標(biāo)注 外呼系統(tǒng)電銷專用 千呼電銷機(jī)器人價(jià)格 百度地圖標(biāo)注不同路線 武漢長沙外呼系統(tǒng)方法和技巧 優(yōu)質(zhì)地圖標(biāo)注 怎樣在地圖上標(biāo)注路線圖標(biāo)

什么是等待

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

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

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

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

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

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

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

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

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

需要對擴(kuò)展事件有一定的了解。

等待信息的獲取途徑

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

計(jì)算兩次等待信息的差值,就可以知道當(dāng)前Session運(yùn)行的過程中有哪些等待,分別是多少。

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

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

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

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

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

因?yàn)檫@里是是用擴(kuò)展事件來實(shí)現(xiàn)的,這里要求讀者要對擴(kuò)展事件有一個基本的認(rèn)識,擴(kuò)展事件本身就不多說了。

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

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

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

是用擴(kuò)展事件收集的Session級別的等待信息有以下幾個特點(diǎn)

1,SessionId是可以重復(fù)的

  舉例說明就是:比如一個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í)行,擴(kuò)展事件捕獲到了其產(chǎn)生的等待信息

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

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

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

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

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

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

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

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

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

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

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

這個就依靠上面說的第二點(diǎn)“同一個時間段內(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)計(jì)Session級別的等待就比較容易了,相信這個邏輯的實(shí)現(xiàn)并不難。

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

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

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

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

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

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

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

比如對于CXPACKET等待時間,

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

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

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

-- Parse the XML to show rpc_completed,sql_batch_completed details
if object_id('tempdb..#t1') is not null
  drop table #t1
SELECT 
  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 username
INTO #t1
FROM (
    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 ('rpc_completed','sql_batch_completed')
order by Event_Name
-- Parse the XML to show wait_info,wait_info_external details
if object_id('tempdb..#t2') is not null
  drop table #t2
SELECT 
  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_type
INTO #t2
FROM (
    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 #t3
SELECT 
  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 WaitDuration
INTO #t3
FROM #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,
  WaitDuration
from 
(
  select ROW_NUMBER()over(partition by SessionId,SQLTEXT,TotalExecuteTime,CompletedTime order by CompletedTime,WaitTypeStartTime) as rn,
  * FROM #t3
)

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

總結(jié)

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

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

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

您可能感興趣的文章:
  • sqlserver 模糊查詢常用方法
  • SqlServer使用 case when 解決多條件模糊查詢問題
  • SqlServer中模糊查詢對于特殊字符的處理方法
  • MSSQL Server 查詢優(yōu)化方法 整理
  • sqlserver 中charindex/patindex/like 的比較
  • SqlServer參數(shù)化查詢之where in和like實(shí)現(xiàn)之xml和DataTable傳參介紹
  • SqlServer參數(shù)化查詢之where in和like實(shí)現(xiàn)詳解
  • SqlServer2016模糊匹配的三種方式及效率問題簡析

標(biāo)簽:宿州 益陽 來賓 威海 銅仁 防疫戰(zhàn)設(shè) 天水 七臺河

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《SQLServer中使用擴(kuò)展事件獲取Session級別的等待信息及SQLServer 2016中Session級別等待信息的增強(qiáng)》,本文關(guān)鍵詞  SQLServer,中,使用,擴(kuò)展,事件,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《SQLServer中使用擴(kuò)展事件獲取Session級別的等待信息及SQLServer 2016中Session級別等待信息的增強(qiáng)》相關(guān)的同類信息!
  • 本頁收集關(guān)于SQLServer中使用擴(kuò)展事件獲取Session級別的等待信息及SQLServer 2016中Session級別等待信息的增強(qiáng)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    成人h在线播放| 久久久亚洲精华液精华液精华液| wwwwxxxx在线观看| 亚洲美女喷白浆| 日本道在线观看一区二区| 国产精品一区毛片| 欧美美女一区| 亚洲一级免费视频| 欧美极品少妇无套实战| 亚洲视频精选在线| av手机免费在线观看| 国产精品视频成人| 午夜伦理在线视频| 国产人妻精品一区二区三区不卡| 91av在线国产| 日韩肉感妇bbwbbwbbw| 日本高清不卡一区二区三| 日韩国产高清一区| 极品久久久久久| 国产一区二区三区在线看麻豆| 91麻豆精品一区二区三区| 日韩欧美一区二区一幕| 国产欧美va欧美不卡在线| 国产精品100| 精品欧美一区二区精品久久| 亚洲一区二区三区日本久久九| www.青草| 亚洲激情中文在线| 大乳护士喂奶hd| 黄色网址免费看| 亚洲第一精品久久忘忧草社区| 狠狠色狠狠色综合日日tαg| 永久免费毛片在线观看| 人妖精品videosex性欧美| 熟女少妇一区二区三区| 欧美成人精品一区二区综合免费| 亚洲午夜精品一区| 久久午夜精品| 精品在线亚洲视频| 在线观看免费观看在线91| 成人免费乱码大片a毛片软件| 麻豆精品新av中文字幕| 亚洲夜间福利| 97秋霞电影网| 美女网站视频久久| 香蕉视频在线免费| 国产在线视视频有精品| 麻豆国产精品视频| 免费精品一区二区| 天天亚洲美女在线视频| 欧美成人免费视频a| 四虎成人免费观看在线网址| 久久久久xxxx| 国产女主播喷水高潮网红在线| 国产精品91xxx| 亚洲天堂精品一区| 伊人365影院| 圆产精品久久久久久久久久久| 91免费视频网站| 黄色污污在线观看| 午夜精品久久久久久久爽| 欧美午夜精品久久久久久久| 欧美午夜精品久久久久久孕妇| 午夜日韩激情| 老鸭窝一区二区| 亚洲综合日韩在线| 欧美色图亚洲自拍| 日本精品一区二区三区在线观看视频| 91蝌蚪视频在线观看| 久久久久久久穴| 中文字幕免费一区| 日韩精品一区二区三区色偷偷| 欧美黑人在线观看| 成年人免费观看的视频| 五月激情综合| 免费在线国产| 91久久极品少妇xxxxⅹ软件| 一区二区视频在线免费| 盗摄女厕thunder| 日韩中文有码在线视频| 超碰免费在线观看| 国产精品人妻一区二区三区| 九色自拍麻豆| 成人黄色在线视频| 亚洲精选免费视频| 免费成人在线视频网站| 天堂中文在线播放| 欧美国产一区二区三区激情无套| 久久精品首页| 久久一区二区三区国产精品| 免费一区二区在线观看| 亚洲精品v欧美精品v日韩精品| 中文字幕在线资源| 国产一精品一av一免费爽爽| 亚洲人精选亚洲人成在线| 欧美一区二区黄片| 国产探花一区二区三区| 欧美aaa免费| 伦理一区二区| 美国毛片一区二区| 国产叼嘿视频在线观看| 久久久久久久国产精品| 欧美日韩一区久久| 天天堂资源网在线观看免费视频| 国产精品久久久久一区二区| 一区不卡在线观看| 久久国产精品久久久久久久久久| 亚洲欧美日本视频在线观看| 懂色一区二区三区av片| 自拍偷拍一区| 亚洲成人av在线播放| 日韩黄色精品视频| 成人av午夜电影| 亚洲欧美精品在线| 秋霞毛片久久久久久久久| 国产成+人+亚洲+欧美+综合| 久久五月天色综合| 亚洲精品一区二区三区av| 视频欧美一区| 1000部精品久久久久久久久| 自拍偷拍欧美专区| 欧美成人三级在线视频| 欧美麻豆精品久久久久久| 99久久亚洲精品日本无码| 亚洲婷婷国产精品电影人久久| 久久99导航| 国产91色在线|亚洲| 亚洲日日夜夜| 欧美激情一区二区三区免费观看| 黑人巨大精品欧美黑白配亚洲| 国产精品熟女一区二区不卡| 午夜影院在线观看国产主播| 人体久久天天| 欧美日本高清视频在线观看| 妞干网这里只有精品| 91精品人妻一区二区三区四区| 免费一级欧美片在线观看| 欧美精品aaaa| 一本色道久久综合亚洲精品小说| 日本精品中文字幕| 久久综合中文字幕| 色综合久久99| 亚洲精品午夜在线观看| 中文字字幕在线中文乱码电影| 国产情侣小视频| 999精品视频在这里| 中文字幕在线观看视频网站| 女女同性女同一区二区三区91| 国偷自产视频一区二区久| 丁香5月婷婷久久| fc2ppv完全颜出在线播放| 欧美激情另类| 在线免费观看a级片| 国产成人免费视频一区| 岛国精品在线观看| 欧美一级片在线免费观看| 亚洲美女又黄又爽在线观看| 鲁大师影院一区二区三区| 满满都是荷尔蒙韩剧在线观看| 九九热爱视频精品视频高清| 午夜精品一区二区三| 久久免费精品日本久久中文字幕| 色又黄又爽网站www久久| 2019中文字幕在线观看| 性生活在线视频| 成人精品国产福利| 午夜免费视频在线国产| 秋霞电影一区二区| 在线视频日韩一区| 精品人妻一区二区三区蜜桃视频| 精品国产三级a∨在线| 久操久操久操| 亚洲中文字幕无码不卡电影| 伊人影院在线观看视频| 国内精品小视频| 亚洲图片欧美午夜| 亚洲欧洲日韩女同| 欧洲有码在线视频| 精品sm捆绑视频| jizz中文字幕| 国产一区二区免费电影| 久久久久黄色| 亚洲视频777| 欧美夫妇交换xxx| yw视频在线观看| 中文字幕资源网在线观看免费| 精品欧美一区二区三区免费观看| 91精品久久久久久蜜桃| 亚洲九九九在线观看| 初高中福利视频网站| 亚洲人成色777777精品音频| 亚洲护士老师的毛茸茸最新章节| 紧身裙女教师波多野结衣| 久久久精品国产sm调教| 中文字幕亚洲不卡| 日本二区三区视频| 欧美日韩电影在线观看| 国产四区在线观看| freexxxx性特大另类| 91久色国产| 成人在线丰满少妇av| 在线日韩精品视频| 精品久久久久久乱码天堂| 欧美变态视频| 成年永久一区二区三区免费视频| 久久偷看各类女兵18女厕嘘嘘| 国产精品成人一区二区三区夜夜夜| 亚洲人成午夜免电影费观看| 成人18网址在线观看| 3d成人h动漫网站入口| 国产精品88久久久久久妇女| 毛片毛片毛片毛片毛片毛片| 456亚洲精品成人影院| 欧美激情视频在线免费观看 欧美视频免费一| 久久亚洲免费视频| 亚洲欧美日本在线观看| 美女做暖暖视频免费在线观看全部网址91| av在线电影院| 5g影院天天爽成人免费下载| 亚洲第一综合网| www.色天使| 欧美剧在线观看| 欧美性极品少妇| 日韩欧美美女在线观看| 美女扒开腿让男人桶爽久久动漫| 久久免费少妇高潮久久精品99| 婷婷成人在线| 在线观看亚洲网站| 综合五月激情网| 国产一级特黄a大片免费| 久久日文中文字幕乱码| 日韩小视频在线观看| 天堂成人av| 丰满少妇被猛烈进入高清播放| 国产白丝精品91爽爽久久| 香蕉国产在线| 国产精品视频流白浆免费视频| 一区二区三区视频网站| 日本黄视频网站| 成人软件在线观看| 在线亚洲伦理| 亚洲国内高清视频| 日韩精品亚洲视频| 性感美女极品91精品| 亚洲aaa精品| 国产精品视频内| 欧美在线观看在线观看| 男女啪啪免费观看| 成人在线一区| 欧美一级黄视频| 亚洲欧美中文日韩在线| 亚欧洲精品在线视频免费观看| 国产va免费精品高清在线观看| 欧美二三四区| 97久久中文字幕| 超碰电影在线播放| 国产在视频线精品视频| www视频网站| 国产成人精品999在线观看| 国产精品夜色7777狼人| 一区二区在线观看视频| 在线国产99| av黄色在线网站| 精品人妻av一区二区三区| 日韩a在线播放| 成人激情动漫在线观看| 亚洲亚裔videos黑人hd| 黄瓜视频18免费观看| 亚洲国产欧美一区二区三区久久| 性色av一区二区怡红| 黄网址在线播放免费| 五月天婷婷综合社区| 欧美日韩精品欧美日韩精品一| 精品一区亚洲| 亚洲va天堂va国产va久| 国产厕拍一区| 亚洲动漫第一页| 免费av在线一区| 国产亚洲精品日韩| 中文字幕第80页| 麻豆久久一区| youjizz在线视频| 欧美老女人性视频| 精品国产免费第一区二区| 99综合99| 欧美色图亚洲自拍| 欧美精品在线观看| 欧美黄色免费在线观看| 日韩精品一区二区三区中文字幕| 操她视频在线观看| 国产精品视频区1| 成人啪啪18免费游戏链接| 在线免费av一区| 日韩激情综合网| 国产肥白大熟妇bbbb视频| 免费播放片a高清在线观看| 亚洲人辣妹窥探嘘嘘| 91精品在线免费视频| 中文字幕第一页亚洲| 一区二区三区免费看| 国产同性人妖ts口直男| 久草视频这里只有精品| 潘金莲一级黄色片| 国产一区二区三区在线视频| 欧美剧在线观看| 老熟妇高潮一区二区三区| 日韩在线观看免费高清完整版| 国产精品成人一区二区三区吃奶| www.4438全国最大| 少妇伦子伦精品无吗| 伊人国产精品视频| 国产在线精品观看| 91美女福利视频高清| 亚洲国产精品传媒在线观看| 亚洲一区美女视频在线观看免费| 亚洲天堂网在线观看视频| 嫩草影院发布页| 极品一区美女高清| 亚洲一区三区电影在线观看| 私人影视中文字幕| 日日夜夜精品网站| 韩国三级一区| 日韩黄色在线| 欧亚成年男女午夜| 在线视频欧美区| 日韩影片在线观看| 人人超在线公开视频| 99久久久国产精品无码免费|