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

首頁 > 網管 > 服務器 > 正文

使用DMV和DMF分析數據庫性能

2020-05-27 13:22:33
字體:
來源:轉載
供稿:網友

   服務器等待的原因

  SELECT TOP 10

  [Wait type] = wait_type,

  [Wait time (s)] = wait_time_ms / 1000,

  [% waiting] = CONVERT(DECIMAL(12,2), wait_time_ms * 100.0

  / SUM(wait_time_ms) OVER())

  FROM sys.dm_os_wait_stats

  WHERE wait_type NOT LIKE %SLEEP%

  ORDER BY wait_time_ms DESC;

  讀和寫

  SELECT TOP 10

  [Total Reads] = SUM(total_logical_reads)

  ,[Execution count] = SUM(qs.execution_count)

  ,DatabaseName = DB_NAME(qt.dbid)

  FROM sys.dm_exec_query_stats qs

  CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) as qt

  GROUP BY DB_NAME(qt.dbid)

  ORDER BY [Total Reads] DESC;

  SELECT TOP 10

  [Total Writes] = SUM(total_logical_writes)

  ,[Execution count] = SUM(qs.execution_count)

  ,DatabaseName = DB_NAME(qt.dbid)

  FROM sys.dm_exec_query_stats qs

  CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) as qt

  GROUP BY DB_NAME(qt.dbid)

  ORDER BY [Total Writes] DESC;

  數據庫缺失索引

  SELECT

  DatabaseName = DB_NAME(database_id)

  ,[Number Indexes Missing] = count(*)

  FROM sys.dm_db_missing_index_details

  GROUP BY DB_NAME(database_id)

  ORDER BY 2 DESC;

  缺失索引列表信息

  SELECT DatabaseName = DB_NAME(database_id),* FROM sys.dm_db_missing_index_details Order BY DB_NAME(database_id)

  高開銷的缺失索引

  SELECT TOP 10

  [Total Cost] = ROUND(avg_total_user_cost * avg_user_impact * (user_seeks + user_scans),0)

  , avg_user_impact

  , TableName = statement

  , [EqualityUsage] = equality_columns

  , [InequalityUsage] = inequality_columns

  , [Include Cloumns] = included_columns

  FROM sys.dm_db_missing_index_groups g

  INNER JOIN sys.dm_db_missing_index_group_stats s

  ON s.group_handle = g.index_group_handle

  INNER JOIN sys.dm_db_missing_index_details d

  ON d.index_handle = g.index_handle

  ORDER BY [Total Cost] DESC;

  確定開銷最高的未使用索引

  SELECT TOP 10 [Total Cost]=ROUND(avg_total_user_cost * avg_user_impact * (user_seeks + user_scans),0),avg_user_impact,TableName=statement, [EqualityUsage]=equality_columns,[InequalityUsage]=inequality_columns,[Include Cloumns] = included_columns FROM sys.dm_db_missing_index_groups g INNER JOIN sys.dm_db_missing_index_group_stats s ON s.group_handle = g.index_group_handle INNER JOIN sys.dm_db_missing_index_details d ON d.index_handle = g.index_handle ORDER BY [Total Cost] DESC;

  確定最高開銷索引所使用的腳本并顯示結果。

  -- Create required table structure only.

  -- Note: this SQL must be the same as in the Database loop given in the following step.

  SELECT TOP 1

  [Maintenance cost] = (user_updates + system_updates)

  ,[Retrieval usage] = (user_seeks + user_scans + user_lookups)

  ,DatabaseName = DB_NAME()

  ,TableName = OBJECT_NAME(s.[object_id])

  ,IndexName = i.name

  INTO #TempMaintenanceCost

  FROM sys.dm_db_index_usage_stats s

  INNER JOIN sys.indexes i ON s.[object_id] = i.[object_id]

  AND s.index_id = i.index_id

  WHERE s.database_id = DB_ID()

  AND OBJECTPROPERTY(s.[object_id], IsMsShipped) = 0

  AND (user_updates + system_updates) > 0 -- Only report on active rows.

  AND s.[object_id] = -999 -- Dummy value to get table structure.

  ;

  -- Loop around all the databases on the server.

  EXEC sp_MSForEachDB USE [?];

  -- Table already exists.

  INSERT INTO #TempMaintenanceCost

  SELECT TOP 10

  [Maintenance cost] = (user_updates + system_updates)

  ,[Retrieval usage] = (user_seeks + user_scans + user_lookups)

  ,DatabaseName = DB_NAME()

  ,TableName = OBJECT_NAME(s.[object_id])

  ,IndexName = i.name

  FROM sys.dm_db_index_usage_stats s

  INNER JOIN sys.indexes i ON s.[object_id] = i.[object_id]

  AND s.index_id = i.index_id

  WHERE s.database_id = DB_ID()

  AND i.name IS NOT NULL -- Ignore HEAP indexes.

  AND OBJECTPROPERTY(s.[object_id], IsMsShipped) = 0

  AND (user_updates + system_updates) > 0 -- Only report on active rows.

  ORDER BY [Maintenance cost] DESC

  ;

  

  -- Select records.

  SELECT TOP 10 * FROM #TempMaintenanceCost

  ORDER BY [Maintenance cost] DESC

  -- Tidy up.

  DROP TABLE #TempMaintenanceCost

  顯示索引已被使用的次數,并按“使用率”排序。

  -- Create required table structure only.

  -- Note: this SQL must be the same as in the Database loop given in the -- following step.

  SELECT TOP 1

  [Usage] = (user_seeks + user_scans + user_lookups)

  ,DatabaseName = DB_NAME()

  ,TableName = OBJECT_NAME(s.[object_id])

  ,IndexName = i.name

  INTO #TempUsage

  FROM sys.dm_db_index_usage_stats s

  INNER JOIN sys.indexes i ON s.[object_id] = i.[object_id]

  AND s.index_id = i.index_id

  WHERE s.database_id = DB_ID()

  AND OBJECTPROPERTY(s.[object_id], IsMsShipped) = 0

  AND (user_seeks + user_scans + user_lookups) > 0

  -- Only report on active rows.

  AND s.[object_id] = -999 -- Dummy value to get table structure.

  ;

  -- Loop around all the databases on the server.

  EXEC sp_MSForEachDB USE [?];

  -- Table already exists.

  INSERT INTO #TempUsage

  SELECT TOP 10

  [Usage] = (user_seeks + user_scans + user_lookups)

  ,DatabaseName = DB_NAME()

  ,TableName = OBJECT_NAME(s.[object_id])

  ,IndexName = i.name

  FROM sys.dm_db_index_usage_stats s

  INNER JOIN sys.indexes i ON s.[object_id] = i.[object_id]

  AND s.index_id = i.index_id

  WHERE s.database_id = DB_ID()

  AND i.name IS NOT NULL -- Ignore HEAP indexes.

  AND OBJECTPROPERTY(s.[object_id], IsMsShipped) = 0

  AND (user_seeks + user_scans + user_lookups) > 0 -- Only report on active rows.

  ORDER BY [Usage] DESC

  ;

  

  -- Select records.

  SELECT TOP 10 * FROM #TempUsage ORDER BY [Usage] DESC

  -- Tidy up.

  DROP TABLE #TempUsage

  邏輯上最零碎的索引所使用的腳本

  -- Create required table structure only.

  -- Note: this SQL must be the same as in the Database loop given in the -- following step.

  SELECT TOP 1

  DatbaseName = DB_NAME()

  ,TableName = OBJECT_NAME(s.[object_id])

  ,IndexName = i.name

  ,[Fragmentation %] = ROUND(avg_fragmentation_in_percent,2)

  INTO #TempFragmentation

  FROM sys.dm_db_index_physical_stats(db_id(),null, null, null, null) s

  INNER JOIN sys.indexes i ON s.[object_id] = i.[object_id]

  AND s.index_id = i.index_id

  WHERE s.[object_id] = -999 -- Dummy value just to get table structure.

  ;

  -- Loop around all the databases on the server.

  EXEC sp_MSForEachDB USE [?];

  -- Table already exists.

  INSERT INTO #TempFragmentation

  SELECT TOP 10

  DatbaseName = DB_NAME()

  ,TableName = OBJECT_NAME(s.[object_id])

  ,IndexName = i.name

  ,[Fragmentation %] = ROUND(avg_fragmentation_in_percent,2)

  FROM sys.dm_db_index_physical_stats(db_id(),null, null, null, null) s

  INNER JOIN sys.indexes i ON s.[object_id] = i.[object_id]

  AND s.index_id = i.index_id

  WHERE s.database_id = DB_ID()

  AND i.name IS NOT NULL -- Ignore HEAP indexes.

  AND OBJECTPROPERTY(s.[object_id], IsMsShipped) = 0

  ORDER BY [Fragmentation %] DESC

  ;

  

  -- Select records.

  SELECT TOP 10 * FROM #TempFragmentation ORDER BY [Fragmentation %] DESC

  -- Tidy up.

  DROP TABLE #TempFragmentation

  獲得IO高的查詢

  SELECT TOP 10

  [Average IO] = (total_logical_reads + total_logical_writes) / qs.execution_count

  ,[Total IO] = (total_logical_reads + total_logical_writes)

  ,[Execution count] = qs.execution_count

  ,[Individual Query] = SUBSTRING (qt.text,qs.statement_start_offset/2,

  (CASE WHEN qs.statement_end_offset = -1

  THEN LEN(CONVERT(NVARCHAR(MAX), qt.text)) * 2

  ELSE qs.statement_end_offset END - qs.statement_start_offset)/2)

  ,[Parent Query] = qt.text

  ,DatabaseName = DB_NAME(qt.dbid)

  FROM sys.dm_exec_query_stats qs

  CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) as qt

  ORDER BY [Average IO] DESC;

  獲得I/O統計

  Select wait_type, waiting_tasks_count, wait_time_ms from sys.dm_os_wait_stats where wait_type like PAGEIOLATCH% order by wait_type

  查詢當前I/O鎖

  select DB_NAME(database_id), file_id, io_stall,io_pending_ms_ticks,scheduler_address from sys.dm_io_virtual_file_stats(NULL, NULL) t1,sys.dm_io_pending_io_requests as t2 where t1.file_handle = t2.io_handle

  看是那5條語句導致I/O高

  select top 5 (total_logical_reads/execution_count) as avg_logical_reads,(total_logical_writes/execution_count) as avg_logical_writes,(total_physical_reads/execution_count) as avg_phys_reads,Execution_count, statement_start_offset as stmt_start_offset, sql_handle, plan_handle from sys.dm_exec_query_stats order by (total_logical_reads + total_logical_writes) Desc

  根據句柄得到語句

  select text from sys.dm_exec_sql_text(0x03000E00D4AB884E808214016B9A00000100000000000000)

  查詢可以確定按 CPU 使用率衡量的、開銷最高的查詢

  SELECT TOP 10

  [Average CPU used] = total_worker_time / qs.execution_count

  ,[Total CPU used] = total_worker_time

  ,[Execution count] = qs.execution_count

  ,[Individual Query] = SUBSTRING (qt.text,qs.statement_start_offset/2,

  (CASE WHEN qs.statement_end_offset = -1

  THEN LEN(CONVERT(NVARCHAR(MAX), qt.text)) * 2

  ELSE qs.statement_end_offset END -

  qs.statement_start_offset)/2)

  ,[Parent Query] = qt.text

  ,DatabaseName = DB_NAME(qt.dbid)

  FROM sys.dm_exec_query_stats qs

  CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) as qt

  ORDER BY [Average CPU used] DESC;

  高開銷的 CLR 查詢

  SELECT TOP 10

  [Average CLR Time] = total_clr_time / execution_count

  ,[Total CLR Time] = total_clr_time

  ,[Execution count] = qs.execution_count

  ,[Individual Query] = SUBSTRING (qt.text,qs.statement_start_offset/2,

  (CASE WHEN qs.statement_end_offset = -1

  THEN LEN(CONVERT(NVARCHAR(MAX), qt.text)) * 2

  ELSE qs.statement_end_offset END - qs.statement_start_offset)/2)

  ,[Parent Query] = qt.text

  ,DatabaseName = DB_NAME(qt.dbid)

  FROM sys.dm_exec_query_stats as qs

  CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) as qt

  WHERE total_clr_time <> 0

  ORDER BY [Average CLR Time] DESC;

  最常執行的查詢

  SELECT TOP 10

  [Execution count] = execution_count

  ,[Individual Query] = SUBSTRING (qt.text,qs.statement_start_offset/2,

  (CASE WHEN qs.statement_end_offset = -1

  THEN LEN(CONVERT(NVARCHAR(MAX), qt.text)) * 2

  ELSE qs.statement_end_offset END - qs.statement_start_offset)/2)

  ,[Parent Query] = qt.text

  ,DatabaseName = DB_NAME(qt.dbid)

  FROM sys.dm_exec_query_stats qs

  CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) as qt

  ORDER BY [Execution count] DESC;

  受阻塞影響的查詢

  SELECT TOP 10

  [Average Time Blocked] = (total_elapsed_time - total_worker_time) / qs.execution_count

  ,[Total Time Blocked] = total_elapsed_time - total_worker_time

  ,[Execution count] = qs.execution_count

  ,[Individual Query] = SUBSTRING (qt.text,qs.statement_start_offset/2,

  (CASE WHEN qs.statement_end_offset = -1

  THEN LEN(CONVERT(NVARCHAR(MAX), qt.text)) * 2

  ELSE qs.statement_end_offset END - qs.statement_start_offset)/2)

  ,[Parent Query] = qt.text

  ,DatabaseName = DB_NAME(qt.dbid)

  FROM sys.dm_exec_query_stats qs

  CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) as qt

  ORDER BY [Average Time Blocked] DESC;

  最低計劃重用率

  SELECT TOP 100

  [Plan usage] = cp.usecounts

  ,[Individual Query] = SUBSTRING (qt.text,qs.statement_start_offset/2,

  (CASE WHEN qs.statement_end_offset = -1

  THEN LEN(CONVERT(NVARCHAR(MAX),

  qt.text)) * 2 ELSE qs.statement_end_offset END -

  qs.statement_start_offset)/2)

  ,[Parent Query] = qt.text

  ,DatabaseName = DB_NAME(qt.dbid)

  ,cp.cacheobjtype

  FROM sys.dm_exec_query_stats qs

  CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS qt

  INNER JOIN sys.dm_exec_cached_plans as cp on qs.plan_handle=cp.plan_handle

  WHERE cp.plan_handle=qs.plan_handle

  ORDER BY [Plan usage] ASC;

  數據庫連接情況

  SELECT session_id,connect_time,endpoint_id,auth_scheme,num_reads,num_writes,client_net_address,connection_id from sys.dm_exec_connections order by client_net_address

  查詢優化器信息

  select * from sys.dm_exec_query_optimizer_info

  當前執行請求

  select * from sys.dm_exec_requests

  當前執行session

  select * from sys.dm_exec_sessions

  所有的調度器并產看等待運行的任務數量

  select

  scheduler_id,

  current_tasks_count,

  runnable_tasks_count

  from

  sys.dm_os_schedulers

  where

  scheduler_id < 255

  所有的調度器并產看等待運行的任務數量

  select

  *

  from

  sys.dm_os_schedulers

  where

  scheduler_id < 255

  整個CPU使用中最占用資源的查詢

  select top 50

  sum(qs.total_worker_time) as total_cpu_time,

  sum(qs.execution_count) as total_execution_count,

  count(*) as number_of_statements,

  qs.plan_handle

  from

  sys.dm_exec_query_stats qs

  group by qs.plan_handle

  order by sum(qs.total_worker_time) desc

  所有的調度器并產看等待運行的任務數量

  select

  scheduler_id,

  current_tasks_count,

  runnable_tasks_count

  from

  sys.dm_os_schedulers

  where

  scheduler_id < 255

  所有的調度器并產看等待運行的任務數量

  select

  *

  from

  sys.dm_os_schedulers

  where

  scheduler_id < 255

  整個CPU使用中最占用資源的查詢

  select top 50

  sum(qs.total_worker_time) as total_cpu_time,

  sum(qs.execution_count) as total_execution_count,

  count(*) as number_of_statements,

  qs.plan_handle

  from

  sys.dm_exec_query_stats qs

  group by qs.plan_handle

  order by sum(qs.total_worker_time) desc

  得到在給定的時間段內花費在查詢優化的時間

  select * from sys.dm_exec_query_optimizer_info

  重編譯次數最多的25個存儲過程

  select top 25

  sql_text.text,

  sql_handle,

  plan_generation_num,

  execution_count,

  dbid,

  objectid

  from

  sys.dm_exec_query_stats a

  cross apply sys.dm_exec_sql_text(sql_handle) as sql_text

  where

  plan_generation_num >1

  order by plan_generation_num desc

  累計使用cpu最多的查詢

  select

  highest_cpu_queries.plan_handle,

  highest_cpu_queries.total_worker_time,

  q.dbid,

  q.objectid,

  q.number,

  q.encrypted,

  q.[text]

  from

  (select top 50

  qs.plan_handle,

  qs.total_worker_time

  from

  sys.dm_exec_query_stats qs

  order by qs.total_worker_time desc) as highest_cpu_queries

  cross apply sys.dm_exec_sql_text(plan_handle) as q

  order by highest_cpu_queries.total_worker_time desc

  清空統計項的方法

  checkpoint 檢查點

  dbcc freeproccache 釋放緩存,小心

  dbcc dropcleanbuffers 清空緩存,小心

  DBCC SQLPERF (sys.dm_os_wait_stats, CLEAR); 清空某一項

  GO

  綜合分析:

  SELECT top 50 DB_ID(DB.dbid) 數據庫名

  , OBJECT_ID(db.objectid) 對象

  , QS.creation_time 編譯計劃的時間

  , QS.last_execution_time 上次執行計劃的時間

  , QS.execution_count 執行的次數

  , QS.total_elapsed_time / 1000 占用的總時間(秒)

  , QS.total_physical_reads 物理讀取總次數

  , QS.total_worker_time / 1000 CPU 時間總量(秒)

  , QS.total_logical_writes 邏輯寫入總次數

  , QS.total_logical_reads N邏輯讀取總次數

  , QS.total_elapsed_time / 1000 N總花費時間(秒)

  , SUBSTRING(ST.text, ( QS.statement_start_offset / 2 ) + 1,

  ( ( CASE statement_end_offset

  WHEN -1 THEN DATALENGTH(st.text)

  ELSE QS.statement_end_offset

  END - QS.statement_start_offset ) / 2 ) + 1) AS 執行語句,

  [Parent Query] = st.text

  FROM sys.dm_exec_query_stats AS QS CROSS APPLY

  sys.dm_exec_sql_text(QS.sql_handle) AS ST INNER JOIN

  ( SELECT *

  FROM sys.dm_exec_cached_plans cp CROSS APPLY

  sys.dm_exec_query_plan(cp.plan_handle)

  ) DB

  ON QS.plan_handle = DB.plan_handle

  where SUBSTRING(st.text, ( qs.statement_start_offset / 2 ) + 1,

  ( ( CASE statement_end_offset

  WHEN -1 THEN DATALENGTH(st.text)

  ELSE qs.statement_end_offset

  END - qs.statement_start_offset ) / 2 ) + 1) not like %fetch%

  ORDER BY QS.total_elapsed_time / 1000 DESC

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美另类在线播放| 欧美一乱一性一交一视频| 亚洲国产日韩欧美综合久久| 亚洲影院色在线观看免费| 国产精品久久久久久久久久久久久| 欧美成人剧情片在线观看| 成人黄色在线播放| 亚洲视频axxx| 欧美亚洲成人精品| 色偷偷888欧美精品久久久| 欧美最猛性xxxxx亚洲精品| 久久亚洲成人精品| 8x海外华人永久免费日韩内陆视频| 色综合久久中文字幕综合网小说| 亚洲高清色综合| 伊人久久大香线蕉av一区二区| 久久91亚洲精品中文字幕| 亚洲国产成人爱av在线播放| 一区二区三区www| 精品欧美一区二区三区| 色播久久人人爽人人爽人人片视av| 日韩精品中文在线观看| 国产精品一区二区久久久久| 少妇高潮久久77777| 精品视频在线导航| 永久免费毛片在线播放不卡| 欧美精品免费看| 日韩在线视频免费观看| 亚洲嫩模很污视频| 国产精品96久久久久久| 色哟哟网站入口亚洲精品| 欧美成人中文字幕| 中文字幕9999| 麻豆国产va免费精品高清在线| 日韩女在线观看| 欧美专区在线观看| 欧美在线免费看| 亚洲天堂视频在线观看| 日韩高清不卡av| 97精品伊人久久久大香线蕉| 国产一区二区三区网站| 亚洲精品suv精品一区二区| 欧美一级视频在线观看| 国产精品日韩在线观看| 日韩精品视频在线免费观看| 亚洲视频在线视频| 成人av资源在线播放| 精品久久久久久久久中文字幕| 亚洲国产精品久久精品怡红院| 欧美一区二区三区图| 日韩中文字幕在线播放| 欧美成人精品不卡视频在线观看| 日韩av网址在线观看| 91免费高清视频| 亚洲第一天堂av| 日韩精品视频在线免费观看| 色七七影院综合| 97热在线精品视频在线观看| 人妖精品videosex性欧美| 中文字幕亚洲综合久久| 欧美裸体男粗大视频在线观看| 成人久久一区二区三区| 亚洲精品小视频在线观看| 久久精品色欧美aⅴ一区二区| 久久精品国产91精品亚洲| 国产91在线高潮白浆在线观看| 欧美成人第一页| 国产91在线高潮白浆在线观看| 国产精品v片在线观看不卡| 精品久久久免费| 欧美日本在线视频中文字字幕| 国产精品爱久久久久久久| 亚洲日韩欧美视频一区| 国产精品亚发布| 精品国内亚洲在观看18黄| 亚洲黄色片网站| 国产一区二区三区视频在线观看| 国产亚洲日本欧美韩国| 亚洲一区二区三区四区在线播放| 亚洲变态欧美另类捆绑| 欧美在线www| 日韩美女av在线免费观看| 国产精品一区二区三区成人| 久久久亚洲福利精品午夜| 成人欧美在线视频| 亚洲专区国产精品| 欧美在线视频免费播放| 欧美成在线观看| 国产日韩欧美在线视频观看| 亚洲成人久久一区| 久久影院中文字幕| 国产一区二区欧美日韩| 成人中文字幕+乱码+中文字幕| 亚洲精品日韩av| 久久成人综合视频| 国产精品免费久久久久久| 日本高清+成人网在线观看| 性色av一区二区咪爱| 欧美视频二区36p| 国产精品视频精品| 国产精品高清免费在线观看| 久久久国产精品亚洲一区| 国产精品久久久久久久久借妻| 91久久久久久久一区二区| 欧美色videos| 另类视频在线观看| 精品亚洲永久免费精品| 国产伊人精品在线| 国内外成人免费激情在线视频网站| 奇米4444一区二区三区| 国产精品美女网站| 国产有码在线一区二区视频| 久久精品视频播放| 九九热精品视频国产| 国产精品福利久久久| 亚洲影视九九影院在线观看| 亚洲影院在线看| 国产精品爽爽爽| 91成人精品网站| 国产精品海角社区在线观看| 中文字幕在线看视频国产欧美在线看完整| 成人国产精品一区| 69av视频在线播放| 91免费人成网站在线观看18| 亚洲国产欧美在线成人app| 羞羞色国产精品| 日韩中文av在线| 精品国产乱码久久久久久天美| 亚洲r级在线观看| 亚洲第一精品电影| 亚洲黄页网在线观看| 国产视频精品在线| 2019中文字幕在线免费观看| 日韩专区中文字幕| 国产日韩综合一区二区性色av| 亚洲天堂av在线播放| 国产成人精品久久二区二区91| 中文字幕亚洲欧美日韩在线不卡| 这里只有精品在线播放| 69视频在线免费观看| 在线免费观看羞羞视频一区二区| 欧美色视频日本高清在线观看| 国产精品视频成人| 欧美视频二区36p| 亚洲精品理论电影| 亚洲精品一区二区三区不| 欧美日韩性视频在线| 亚洲国产福利在线| 色先锋久久影院av| 久久99热这里只有精品国产| 久久久国产精品一区| 欧美激情一区二区三区成人| 日本成人激情视频| 美日韩在线视频| 久久亚洲精品一区二区| 欧美激情亚洲国产| 久久综合久中文字幕青草| 国产精品爽爽ⅴa在线观看| 亚洲成人xxx| 欧美成人性色生活仑片| 日韩激情第一页| 神马久久桃色视频| 亚洲人线精品午夜| 午夜精品久久久99热福利|