久久亚洲精品成人_国产精品欧美综合亚洲_亚洲va天堂va欧美ⅴa在线_91色视频在线观看_久久影院亚洲_一级黄色片播放_日韩av在线一区_精品一区二区在线看_老头吃奶性行交视频_日韩免费高清视频_天天操天天爽天天干_日本欧美在线视频

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

ORACLE數(shù)據(jù)庫查看執(zhí)行計劃的方法

2020-07-26 14:31:46
字體:
供稿:網(wǎng)友
一、什么是執(zhí)行計劃(explain plan)

執(zhí)行計劃:一條查詢語句在ORACLE中的執(zhí)行過程或訪問路徑的描述。

二、如何查看執(zhí)行計劃

1: 在PL/SQL下按F5查看執(zhí)行計劃。第三方工具toad等。

很多人以為PL/SQL的執(zhí)行計劃只能看到基數(shù)、優(yōu)化器、耗費等基本信息,其實這個可以在PL/SQL工具里面設(shè)置的。可以看到很多其它信息,如下所示

clip_image002

2: 在SQL*PLUS(PL/SQL的命令窗口和SQL窗口均可)下執(zhí)行下面步驟

復(fù)制代碼 代碼如下:

SQL>EXPLAIN PLAN FOR
SELECT * FROM SCOTT.EMP; --要解析的SQL腳本
SQL>SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);

clip_image004

clip_image006

3: 在SQL*PLUS下(有些命令在PL/SQL下無效)執(zhí)行如下命令:

復(fù)制代碼 代碼如下:

SQL>SET TIMING ON             --控制顯示執(zhí)行時間統(tǒng)計數(shù)據(jù)
SQL>SET AUTOTRACE ON EXPLAIN       --這樣設(shè)置包含執(zhí)行計劃、腳本數(shù)據(jù)輸出,沒有統(tǒng)計信息
SQL>執(zhí)行需要查看執(zhí)行計劃的SQL語句
SQL>SET AUTOTRACE OFF           --不生成AUTOTRACE報告,這是缺省模式
SQL> SET AUTOTRACE ON           --這樣設(shè)置包含執(zhí)行計劃、統(tǒng)計信息、以及腳本數(shù)據(jù)輸出
SQL>執(zhí)行需要查看執(zhí)行計劃的SQL語句
SQL>SET AUTOTRACE OFF
SQL> SET AUTOTRACE TRACEONLY      --這樣設(shè)置會有執(zhí)行計劃、統(tǒng)計信息,不會有腳本數(shù)據(jù)輸出
SQL>執(zhí)行需要查看執(zhí)行計劃的SQL語句
SQL>SET AUTOTRACE TRACEONLY STAT --這樣設(shè)置只包含有統(tǒng)計信息
SQL>執(zhí)行需要查看執(zhí)行計劃的SQL語句

SET AUTOT[RACE] {ON | OFF | TRACE[ONLY]} [EXP[LAIN]] [STAT[ISTICS]]

參考文檔:SQLPlus User's Guide and Reference Release 11.1

clip_image008

注意:PL/SQL Developer 工具并不完全支持所有的SQL*Plus命令,像SET AUTOTRACE ON 就如此,在PL/SQL Developer工具下執(zhí)行此命令會報錯

SQL> SET AUTOTRACE ON;

Cannot SET AUTOTRACE

4:SQL_TRACE可以作為參數(shù)在全局啟用,也可以通過命令形式在具體SESSION啟用

4.1 在全局啟用,在參數(shù)文件(pfile/spfile)中指定SQL_TRACE =true,在全局啟用SQL_TRACE時會導(dǎo)致所有進程活動被跟蹤,包括后臺進程以及用戶進程,通常會導(dǎo)致比較嚴重的性能問題,所以在生產(chǎn)環(huán)境要謹慎使用。

提示:通過在全局啟用SQL_TRACE, 我們可以跟蹤到所有后臺進程的活動,很多在文檔中的抽象說明,通過跟蹤文件的實時變化,我們可以清晰的看到各個進程間的緊密協(xié)調(diào)。

4.2在當前SESSION級別設(shè)置,通過跟蹤當前進程可以發(fā)現(xiàn)當前操作的后臺數(shù)據(jù)庫遞歸活動(這在研究數(shù)據(jù)庫新特性時尤其有效),研究SQL執(zhí)行時,發(fā)現(xiàn)后臺

錯誤等。

復(fù)制代碼 代碼如下:

SQL> ALTER SESSION SET SQL_TRACE=TRUE;
SQL> SELECT * FROM SCOTT.EMP;
SQL> ALTER SESSION SET SQL_TRACE =FALSE;

那么此時如何查看相關(guān)信息?不管你在SQL*PLUS抑或PL/SQL DEVELOPER工具里面執(zhí)行上面腳本過后都看不到什么信息,你可以通過下面腳本查詢到trace日志信息
復(fù)制代碼 代碼如下:

SELECT T.VALUE || '/' || LOWER(RTRIM(I.INSTANCE, CHR(0))) || '_ora_' ||
P.SPID || '.trc' TRACE_FILE_NAME
FROM
( SELECT P.SPID
FROM V$MYSTAT M, V$SESSION S, V$PROCESS P
WHERE M.STATISTIC# =1
AND S.SID = M.SID
AND P.ADDR = S.PADDR
) P,
( SELECT T.INSTANCE
FROM V$THREAD T, V$PARAMETER V
WHERE V.NAME ='thread'
AND (V.VALUE = 0 OR T.THREAD# = TO_NUMBER(V.VALUE))
) I,
(SELECT VALUE FROM V$PARAMETER WHERE NAME='user_dump_dest') T

clip_image010

TKPROF的幫助信息如下

復(fù)制代碼 代碼如下:

TKPROF 選項
選項 說明
TRACEFILE 跟蹤輸出文件的名稱
OUTPUTFILE 已設(shè)置格式的文件的名稱
SORT=option 語句的排序順序
PRINT=n 打印前 n 個語句
EXPLAIN=user/password 以指定的用戶名運行 EXPLAIN PLAN
INSERT=filename 生成 INSERT 語句
SYS=NO 忽略作為用戶 sys 運行的遞歸 SQL 語句
AGGREGATE=[Y|N] 如果指定 AGGREGATE = NO TKPROF 不聚集相同
SQL 文本的多個用戶
RECORD=filename 記錄在跟蹤文件中發(fā)現(xiàn)的語句
TABLE=schema.tablename 將執(zhí)行計劃放入指定的表而不是缺省的PLAN_TABLE

可以在操作系統(tǒng)中鍵入 tkprof 以獲得所有可用選項和輸出的列表
注 排序選項有

排序 選項說明
prscnt execnt fchcnt 調(diào)用分析執(zhí)行提取的次數(shù)
prscpu execpu fchcpu 分析執(zhí)行提取所占用的 CPU 時間
prsela exela fchela 分析執(zhí)行提取所占用的時間
prsdsk exedsk fchdsk 分析執(zhí)行提取期間的磁盤讀取次數(shù)
prsqry exeqry fchqry 分析執(zhí)行提取期間用于持續(xù)讀取的緩沖區(qū)數(shù)
prscu execu fchcu 分析執(zhí)行提取期間用于當前讀取的緩沖區(qū)數(shù)
prsmis exemis 分析執(zhí)行期間庫高速緩存未命中的次數(shù)
exerow fchrow 分析執(zhí)行期間處理的行數(shù)
userid 分析游標的用戶的用戶 ID

TKPROF 統(tǒng)計數(shù)據(jù)
Count: 執(zhí)行調(diào)用數(shù)
CPU: CPU 的使用秒數(shù)
Elapsed: 總共用去的時間
Disk: 物理讀取次數(shù)
Query: 持續(xù)讀取的邏輯讀取數(shù)
Current: 當前模式下的邏輯讀取數(shù)
Rows: 已處理行數(shù)
TKPROF 統(tǒng)計信息
統(tǒng)計 含義
Count 分析或執(zhí)行語句的次數(shù)以及為語句發(fā)出的提取調(diào)用數(shù)
CPU 每個階段的處理時間以秒為單位如果在共享池中找到該語句對于分析階段為 0
Elapsed 占用時間以秒為單位通常不是非常有用因為其它進程影響占用時間
Disk 從數(shù)據(jù)庫文件讀取的物理數(shù)據(jù)塊如果該數(shù)據(jù)被緩沖則該統(tǒng)計可能很低
Query 為持續(xù)讀取檢索的邏輯緩沖區(qū)通常用于 SELECT 語句
Current 在當前模式下檢索的邏輯緩沖區(qū)通常用于 DML 語句
Rows 外部語句所處理的行對于 SELECT 語句在提取階段顯示它對于 DML 語句在執(zhí)行階段顯示它

Query 和Current 的總和為所訪問的邏輯緩沖區(qū)的總數(shù)

執(zhí)行下面命令:tkprof D:/ORACLE/PRODUCT/10.2.0/DB_1/RDBMS/TRACE/wgods_ora_3940.trc h:/out.txtoutputfile explain=etl/etl

clip_image012

執(zhí)行上面命令后,可以查看生成的文本文件
復(fù)制代碼 代碼如下:

TKPROF: Release 10.2.0.1.0 - Production on 星期三 5月 23 16:56:41 2012
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Trace file: D:/ORACLE/PRODUCT/10.2.0/DB_1/RDBMS/TRACE/wgods_ora_3940.trc
Sort options: default
********************************************************************************
count = number of times OCI procedure was executed
cpu = cpu time in seconds executing
elapsed = elapsed time in seconds executing
disk = number of physical reads of buffers from disk
query = number of buffers gotten for consistent read
current = number of buffers gotten in current mode (usually for update)
rows = number of rows processed by the fetch or execute call
********************************************************************************
ALTER SESSION SET SQL_TRACE = TRUE
call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
Parse 0 0.00 0.00 0 0 0 0
Execute 1 0.00 0.00 0 0 0 0
Fetch 0 0.00 0.00 0 0 0 0
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 1 0.00 0.00 0 0 0 0
Misses in library cache during parse: 0
Misses in library cache during execute: 1
Optimizer mode: CHOOSE
Parsing user id: 89 (ETL)
********************************************************************************
begin :id := sys.dbms_transaction.local_transaction_id; end;
call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
Parse 2 0.00 0.00 0 0 0 0
Execute 2 0.00 0.00 0 0 0 2
Fetch 0 0.00 0.00 0 0 0 0
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 4 0.00 0.00 0 0 0 2
Misses in library cache during parse: 0
Optimizer mode: CHOOSE
Parsing user id: 89 (ETL)
********************************************************************************
SELECT *
FROM
SCOTT.EMP
call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
Parse 2 0.00 0.00 0 0 0 0
Execute 1 0.00 0.00 0 0 0 0
Fetch 1 0.00 0.00 0 7 0 14
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 4 0.00 0.00 0 7 0 14
Misses in library cache during parse: 1
Optimizer mode: CHOOSE
Parsing user id: 89 (ETL)
Rows Execution Plan
------- ---------------------------------------------------
SELECT STATEMENT MODE: CHOOSE
TABLE ACCESS MODE: ANALYZED (FULL) OF 'EMP' (TABLE)
********************************************************************************
ALTER SESSION SET SQL_TRACE = FALSE
call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
Parse 1 0.00 0.00 0 0 0 0
Execute 1 0.00 0.00 0 0 0 0
Fetch 0 0.00 0.00 0 0 0 0
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 2 0.00 0.00 0 0 0 0
Misses in library cache during parse: 1
Optimizer mode: CHOOSE
Parsing user id: 89 (ETL)
********************************************************************************
OVERALL TOTALS FOR ALL NON-RECURSIVE STATEMENTS
call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
Parse 5 0.00 0.00 0 0 0 0
Execute 5 0.00 0.00 0 0 0 2
Fetch 1 0.00 0.00 0 7 0 14
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 11 0.00 0.00 0 7 0 16
Misses in library cache during parse: 2
Misses in library cache during execute: 1
OVERALL TOTALS FOR ALL RECURSIVE STATEMENTS
call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
Parse 0 0.00 0.00 0 0 0 0
Execute 0 0.00 0.00 0 0 0 0
Fetch 0 0.00 0.00 0 0 0 0
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 0 0.00 0.00 0 0 0 0
Misses in library cache during parse: 0
user SQL statements in session.
internal SQL statements in session.
SQL statements in session.
statement EXPLAINed in this session.
********************************************************************************
Trace file: D:/ORACLE/PRODUCT/10.2.0/DB_1/RDBMS/TRACE/wgods_ora_3940.trc
Trace file compatibility: 10.01.00
Sort options: default
session in tracefile.
user SQL statements in trace file.
internal SQL statements in trace file.
SQL statements in trace file.
unique SQL statements in trace file.
SQL statements EXPLAINed using schema:
ETL.prof$plan_table
Default table was used.
Table was created.
Table was dropped.
lines in trace file.
elapsed seconds in trace file.

4.3跟蹤其它用戶的進程,在很多時候我們需要跟蹤其它用戶的進程,而不是當前用戶,可以通過ORACLE提供的系統(tǒng)包
DBMS_SYSTEM.SET_SQL_TRACE_IN_SESSION來完成。
例如:
復(fù)制代碼 代碼如下:

SELECT SID, SERIAL#, USERNAME FROM V$SESSION WHERE USERNAME = 'ETL'
EXEC DBMS_SYSTEM.SET_SQL_TRACE_IN_SESSION(61,76,TRUE);
EXEC DBMS_SYSTEM.SET_SQL_TRACE_IN_SESSION(61,76,FALSE);

5 利用10046事件
復(fù)制代碼 代碼如下:

ALTER SESSION SET TRACEFILE_IDENTIFIER = 10046;
ALTER SESSION SET EVENTS='10046 trace name context forever, level 8';
SELECT * FROM SCOTT.EMP;
ALTER SESSION SET EVENTS ='10046 trace name context off';
然后你可以用腳本查看追蹤文件的位置
SELECT T.VALUE || '/' || LOWER(RTRIM(I.INSTANCE, CHR(0))) || '_ora_' ||
P.SPID || '.trc' TRACE_FILE_NAME
FROM
( SELECT P.SPID
FROM V$MYSTAT M, V$SESSION S, V$PROCESS P
WHERE M.STATISTIC# =1
AND S.SID = M.SID
AND P.ADDR = S.PADDR
) P,
( SELECT T.INSTANCE
FROM V$THREAD T, V$PARAMETER V
WHERE V.NAME ='thread'
AND (V.VALUE = 0 OR T.THREAD# = TO_NUMBER(V.VALUE))
) I,
(SELECT VALUE FROM V$PARAMETER WHERE NAME='user_dump_dest') T
查詢結(jié)果為wgods_ora_28279.trc文件, 但是去相應(yīng)目錄卻沒有找到對應(yīng)的追蹤文件,而是如下trace文件:wgods_ora_28279_10046.trc

6 利用10053事件

有點類似10046,在此略過、

7 系統(tǒng)視圖

通過下面一些系統(tǒng)視圖,你可以看到一些零散的執(zhí)行計劃的相關(guān)信息,有興趣的話可以多去研究一下。
復(fù)制代碼 代碼如下:

SELECT * FROM V$SQL_PLAN
SELECT * FROM V$RSRC_PLAN_CPU_MTH
SELECT * FROM V$SQL_PLAN_STATISTICS
SELECT * FROM V$SQL_PLAN_STATISTICS_ALL
SELECT * FROM V$SQLAREA_PLAN_HASH
SELECT * FROM V$RSRC_PLAN_HISTORY

三、看懂執(zhí)行計劃

1.執(zhí)行順序

執(zhí)行順序的原則是:由上至下,從右向左

由上至下:在執(zhí)行計劃中一般含有多個節(jié)點,相同級別(或并列)的節(jié)點,靠上的優(yōu)先執(zhí)行,靠下的后執(zhí)行

從右向左:在某個節(jié)點下還存在多個子節(jié)點,先從最靠右的子節(jié)點開始執(zhí)行。

當然,你在PL/SQL工具中也可以通過它提供的功能來查看執(zhí)行順序。如下圖所示:

clip_image014

2.執(zhí)行計劃中字段解釋

clip_image016

SQL>
名詞解釋:
recursive calls           遞歸調(diào)用
db block gets           從buffer cache中讀取的block的數(shù)量當前請求的塊數(shù)目,當前模式塊意思就是在操作中正好提取的塊數(shù)目,而不是在一致性讀的情況下而產(chǎn)生的正常情況下,一個查詢提取的塊是在查詢查詢開始的那個時間點上存在的數(shù)據(jù)庫,當前塊是在這個時候存在數(shù)據(jù)塊,而不是這個時間點之前或者之后的的數(shù)據(jù)塊數(shù)目。
consistent gets          從buffer cache中讀取的undo數(shù)據(jù)的block的數(shù)量數(shù)據(jù)請求總數(shù)在回滾段Buffer中的數(shù)據(jù)一致性讀所需要的數(shù)據(jù)塊,,這里的概念是在你處理你這個操作的時侯需要在一致性讀狀態(tài)上處理多個塊,這些塊產(chǎn)生的主要原因是因為你在查詢過程中,由于其它會話對數(shù)據(jù) 塊進行操作,而對所要查詢的塊有了修改,但是由于我們的查詢是在這些修改之前調(diào)用的,所要需要對回滾 段中的數(shù)據(jù)塊的前映像進行查詢,以保證數(shù)據(jù)的一致性。這樣就產(chǎn)生了一致性讀。

physical reads           物理讀 就是從磁盤上讀取數(shù)據(jù)塊的數(shù)量。其產(chǎn)生的主要原因是:
                  1:在數(shù)據(jù)庫高速緩存中不存在這些塊。
                  2:全表掃描
                  3:磁盤排序
redo size              DML生成的redo的大小
sorts (memory)           在內(nèi)存執(zhí)行的排序量
sorts (disk)            在磁盤執(zhí)行的排序量
2091 bytes sent via SQL*Net to client     從SQL*Net向客戶端發(fā)送了2091字節(jié)的數(shù)據(jù)
416 bytes received via SQL*Net from client  客戶端向SQL*Net發(fā)送了416字節(jié)的數(shù)據(jù)。
參考文檔:SQLPlus User's Guide and Reference Release 11.1

clip_image018

db block gets 、 consistent gets 、 physical reads這三者的關(guān)系可以概括為:邏輯讀指的是ORACLE從內(nèi)存讀到的數(shù)據(jù)塊塊數(shù)量,一般來說是:
consistent gets + db block gets. 當在內(nèi)存中找不到所需要的數(shù)據(jù)塊的話,就需要從磁盤中獲取,于是就產(chǎn)生了物理讀。
3.具體內(nèi)容查看
1> Plan hash Value
這一行是這一條語句的的hash值,我們知道ORACLE對每一條ORACLE語句產(chǎn)生的執(zhí)行計劃放在SHARE POOL里面,第一次要經(jīng)過硬解析,產(chǎn)生hash值。下次再執(zhí)行時比較hash值,如果相同就不會執(zhí)行硬解析。
2> COST

COST沒有單位,是一個相對值,是SQL以CBO方式解析執(zhí)行計劃時,供ORACLE來評估CBO成本,選擇執(zhí)行計劃用的。沒有明確的含義,但是在對比是就非常有用。
公式:COST=(Single Block I/O COST + MultiBlock I/O Cost + CPU Cost)/ Sreadtim

3> 對上面執(zhí)行計劃列字段的解釋:
Id: 執(zhí)行序列,但不是執(zhí)行的先后順序。執(zhí)行的先后根據(jù)Operation縮進來判斷(采用最右最上最先執(zhí)行的原則看層次關(guān)系,在同一級如果某個動作沒有子ID就最先執(zhí)行。一般按縮進長度來判斷,縮進最大的最先執(zhí)行,如果有2行縮進一樣,那么就先執(zhí)行上面的。)
    Operation:當前操作的內(nèi)容。
    Name:操作對象
    Rows:也就是10g版本以前的Cardinality(基數(shù)),Oracle估計當前操作的返回結(jié)果集行數(shù)。
    Bytes:表示執(zhí)行該步驟后返回的字節(jié)數(shù)。
    Cost(CPU):表示執(zhí)行到該步驟的一個執(zhí)行成本,用于說明SQL執(zhí)行的代價。
    Time:Oracle 估計當前操作的時間。
4.謂詞說明:
Predicate Information (identified by operation id):
---------------------------------------------------
2 - filter("B"."MGR" IS NOT NULL)
4 - access("A"."EMPNO" = "B"."MGR")
    Access: 表示這個謂詞條件的值將會影響數(shù)據(jù)的訪問路勁(全表掃描還是索引)。
    Filter:表示謂詞條件的值不會影響數(shù)據(jù)的訪問路勁,只起過濾的作用。
    在謂詞中主要注意access,要考慮謂詞的條件,使用的訪問路徑是否正確。
5、 動態(tài)分析
如果在執(zhí)行計劃中有如下提示:
Note
------------
-dynamic sampling used for the statement
這提示用戶CBO當前使用的技術(shù),需要用戶在分析計劃時考慮到這些因素。 當出現(xiàn)這個提示,說明當前表使用了動態(tài)采樣。我們從而推斷這個表可能沒有做過分析。
這里會出現(xiàn)兩種情況:
(1) 如果表沒有做過分析,那么CBO可以通過動態(tài)采樣的方式來獲取分析數(shù)據(jù),也可以或者正確的執(zhí)行計劃。
(2) 如果表分析過,但是分析信息過舊,這時CBO就不會在使用動態(tài)采樣,而是使用這些舊的分析數(shù)據(jù),從而可能導(dǎo)致錯誤的執(zhí)行計劃。

四、表訪問方式

1.Full Table Scan (FTS) 全表掃描

2.Index Lookup 索引掃描
There are 5 methods of index lookup:
index unique scan --索引唯一掃描
通過唯一索引查找一個數(shù)值經(jīng)常返回單個ROWID,如果存在UNIQUE或PRIMARY KEY約束(它保證了語句只存取單行的話),ORACLE
經(jīng)常實現(xiàn)唯一性掃描
Method for looking up a single key value via a unique index. always returns a single value, You must supply AT LEAST the leading column of the index to access data via the index.
index range scan --索引局部掃描
Index range scan is a method for accessing a range values of a particular column. AT LEAST the leading column of the index must be supplied to access data via the index. Can be used for range operations (e.g. > < <> >= <= between) .
使用一個索引存取多行數(shù)據(jù),在唯一索引上使用索引范圍掃描的典型情況是在謂詞(WHERE 限制條件)中使用了范圍操作符號(如>, < <>, >=, <=,BWTEEN)
index full scan --索引全局掃描
Full index scans are only available in the CBO as otherwise we are unable to determine whether a full scan would be a good idea or not. We choose an index Full Scan when we have statistics that indicate that it is going to be more efficient than a Full table scan and a sort. For example we may do a Full index scan when we do an unbounded scan of an index and want the data to be ordered in the index order.
index fast full scan --索引快速全局掃描,不帶order by情況下常發(fā)生
Scans all the block in the index, Rows are not returned in sorted order, Introduced in 7.3 and requires V733_PLANS_ENABLED=TRUE and CBO, may be hinted using INDEX_FFS hint, uses multiblock i/o, can be executed in parallel, can be used to access second column of concatenated indexes. This is because we are selecting all of the index.
index skip scan --索引跳躍掃描,where條件列是非索引的前提情況下常發(fā)生
Index skip scan finds rows even if the column is not the leading column of a concatenated index. It skips the first column(s) during the search.
3.Rowid 物理ID掃描
This is the quickest access method available.Oracle retrieves the specified block and extracts the rows it is interested in. --Rowid掃描是最快的訪問數(shù)據(jù)方式
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
最好看的2019的中文字幕视频| 少妇激情一区二区三区| 美脚丝袜脚交一区二区| 精品人妻伦一区二区三区久久| 欧美日韩中文字幕日韩欧美| 欧美日韩最好看的视频| 亚洲毛片一区二区三区| 欧美一区二区在线播放| 日日鲁鲁鲁夜夜爽爽狠狠视频97| 日韩成人午夜精品| 亚洲伦理中文字幕| 美女少妇一区二区| 亚洲欧美日韩中文字幕一区二区三区| 亚洲精品日韩久久久| 极品粉嫩美女露脸啪啪| 99国产麻豆精品| 91久久久久久| 特级片在线观看| 日韩欧美高清在线| 亚洲一区二区三区黄色| 亚洲成人一二三| 精品www久久久久奶水| 成人免费毛片嘿嘿连载视频| 成人在线播放av| 99精品国产99久久久久久97| 4438x成人网最大色成网站| 欧美在线观看成人| 91伊人久久大香线蕉| 奇米视频888战线精品播放| 亚洲黄色小说网| 国产精品久久91| 久久精品视频在线观看| 青青草视频网站| 国产精品三级视频| 国产精品av电影| 国产精品一区二区av白丝下载| 欧美一区二区三区免费视| 中文字幕第2页| 91亚洲永久免费精品| 男人操女人的视频在线观看欧美| 亚洲一区二区三区乱码aⅴ蜜桃女| 国产在线精品一区二区不卡了 | 一本一道久久a久久精品综合| 日韩av中文字幕一区二区| 韩国三级日本三级少妇99| 日韩手机在线观看| 欧美国产精品人人做人人爱| 亚洲图片欧美在线| 波多野结衣精品久久| 成人涩涩免费视频| 人妻丰满熟妇av无码区app| 欧美午夜宅男影院在线观看| 中文字幕在线播放视频| 亚洲天堂av在线免费| 在线观看毛片av| 日韩av在线中文| 国产美女精品人人做人人爽| 精品国产欧美一区二区三区成人| 苍井空张开腿实干12次| 久久免费视频色| 欧美激情在线观看视频| 中文字幕无码精品亚洲35| 国产美女免费看| 亚洲精品一区中文| 中文av免费观看| 性色av一区二区三区红粉影视| 国内一区二区在线视频观看| 精品在线亚洲视频| 洋洋成人永久网站入口| 欧美日韩大尺度| av午夜一区麻豆| 亚洲乱码国产乱码精品精| 国产又粗又猛又色| 国产精品久久久久秋霞鲁丝| 黄色av一级片| 日本免费在线视频观看| 日韩欧美大尺度| 国产手机精品视频| 僵尸世界大战2 在线播放| 欧美日韩亚洲综合在线| 久久久蜜桃一区二区人| 亚洲911精品成人18网站| 欧美综合国产精品久久丁香| 亚洲精品国产a久久久久久| 一级黄色录像大片| 人妻丰满熟妇av无码区app| 884aa四虎影成人精品一区| 亚洲色图狠狠干| 91视频在线网站| 欧美精品一区二区视频| 日韩成人在线视频网站| 91在线国产观看| 中文人妻av久久人妻18| 亚洲老女人av| 精品国产_亚洲人成在线| 亚洲天堂色网站| 亚洲色图在线视频| 亚洲精品国产精| 欧美波霸videosex极品| 路边理发店露脸熟妇泻火| 欧美xxxx综合视频| 欧美性生活一区| jlzzjlzz国产精品久久| 国产一卡二卡三卡| 波多野结衣加勒比| 欧美一区二区三区爽大粗免费| 国产精品福利网站| 亚洲一区www| 91麻豆精品91久久久久同性| 91免费在线播放| 老**午夜毛片一区二区三区| 中文字幕影音先锋| 国产探花在线观看视频| www亚洲国产| 国产精品成人观看视频免费| 91久久免费观看| 91麻豆精东视频| 中文字幕一区二区在线视频| 黄色永久免费网站| 一卡二卡3卡四卡高清精品视频| 国产成人精品久久二区二区91| 亚洲成成品网站| 亚洲精品91天天久久人人| 一级黄色免费毛片| 免费久久久久久| 成人激情黄色网| 欧美裸体男粗大视频在线观看| 97精品国产aⅴ7777| 在线观看中文字幕2021| 色哟哟一一国产精品| 久久精品第九区免费观看| 国产一区视频在线| 亚洲va国产va天堂va久久| 3d动漫啪啪精品一区二区免费| 成人字幕网zmw| 国产一区二区不卡视频| 欧美一区国产一区| 日韩欧美电影一区二区| 一本—道久久a久久精品蜜桃| 欧美三级一级片| 91pony九色| 精品丰满少妇一区二区三区| 国产综合精品视频| 精品乱子伦一区二区| 日本美女视频一区二区| 国产在线精品一区二区三区不卡 | 69久久久久久| 男男做爰猛烈叫床爽爽小说| av在线网站观看| 欧美国产在线看| 精品国产乱子伦| 国产精品12区| 亚洲精品国久久99热| 91成人免费网站| 国产一区二区激情| 日韩av男人的天堂| 欧洲一区二区在线观看| 天天碰免费视频| 久久精品三级视频| 自拍偷拍色综合| 久久久久久免费网| 69成人精品免费视频| 午夜美女久久久久爽久久| 国产综合 伊人色| 欧美三级在线观看视频| 一级特黄曰皮片视频| 中文字幕久久久久| 91日韩精品一区| 欧美精品一区视频| 国产精品一香蕉国产线看观看| 亚洲欧美一二三| 久久久久噜噜噜亚洲熟女综合| 日韩va亚洲va欧美va久久| 日本福利一区二区| 国产精品va在线播放| 国内精品视频久久| 国产成人三级视频| 成人av在线观| 日本精品视频网站| 久久九九亚洲综合| 久草视频这里只有精品| 久久综合亚洲色hezyo国产| 三级黄色片在线观看| 久久久影视传媒| 欧美激情国产日韩精品一区18| 国产成人无码av在线播放dvd| 亚洲美女福利视频| 日韩精品中文字幕在线观看| 一本一本久久a久久| 国产成人精品无码免费看夜聊软件| 亚洲欧美日韩中文字幕在线观看| 一区二区视频网站| 91小视频在线免费看| 成人激情午夜影院| 国产传媒视频在线| 国产精品一区三区| 亚洲国产美国国产综合一区二区| 丰满少妇在线观看| 99久久综合狠狠综合久久止| 伊人色综合影院| 中文字字幕码一二三区| 亚洲男人的天堂在线观看| 91久久久久久久久久| 精品无码m3u8在线观看| 欧美人伦禁忌dvd放荡欲情| 国产日本在线播放| 国产精品一区二区三区四区| 国产97色在线| 黄色av一级片| 国产婷婷色综合av蜜臀av| 精品国产一区二区三区免费| 国产天堂第一区| 亚洲精品乱码久久久久久按摩观| 色一情一乱一伦一区二区三区日本 | 国产欧美精品一区二区三区-老狼| 精品少妇久久久久久888优播| 日韩成人在线播放| 精品成人av一区二区三区| 日本韩国欧美三级| 亚洲熟妇无码另类久久久| 91亚洲精品久久久蜜桃网站 | 久久久久一区| 国产精品久久久久91| 天堂免费在线视频| 按摩亚洲人久久| 欧美成人精品激情在线视频| 精品国产第一区二区三区观看体验| 男人的天堂免费| 欧美性20hd另类| 女同激情久久av久久| 精品久久久一区| 亚洲第一狼人区| 亚洲丶国产丶欧美一区二区三区| 欧美牲交a欧美牲交aⅴ免费真| 日韩一区在线播放| a√天堂在线观看| 亚洲欧美经典视频| 久久久久久久片| 亚洲一区二区影院| 成人黄色片视频| 亚洲午夜久久久久| 男女男精品视频站| 欧美日韩精品在线视频| 免费成人黄色大片| 神马影院我不卡| 日本黄视频在线观看| 国内视频一区| 中文字幕亚洲精品在线观看| 国产精品无码专区av在线播放| 欧美久久一区二区| 久久午夜福利电影| 久久婷婷国产精品| 中文字幕在线不卡一区| 免费黄色特级片| 欧美日韩加勒比精品一区| 中文字幕人妻熟女人妻a片| 7777精品伊人久久久大香线蕉| 国精品无码人妻一区二区三区| 日韩va亚洲va欧洲va国产| 日韩免费一二三区| 91国内精品久久| 日韩高清欧美激情| 夜夜爽99久久国产综合精品女不卡| 欧美激情一区在线| 久久黄色免费看| 日韩欧美亚洲一二三区| 成人精品999| 在线观看网站黄不卡| av无码久久久久久不卡网站| 国产亚洲一区二区三区四区 | 日本一区二区三区视频在线播放 | 国产精品亚洲第一区在线暖暖韩国| 国产精品老女人视频| 日韩精品乱码免费| 亚洲一区二区三区精品视频 | 五月婷婷激情久久| 一本一道综合狠狠老| 永久免费观看片现看| 久久久爽爽爽美女图片| 麻豆一区二区在线| 欧日韩免费视频| 高跟丝袜欧美一区| 激情无码人妻又粗又大| 午夜精品蜜臀一区二区三区免费 | 精品中文字幕久久久久久| av资源免费观看| 91久久精品国产91性色| 99国产精品久| 免费观看一区二区三区| 日韩中文字幕国产精品| 首页综合国产亚洲丝袜| 岛国大片在线播放 | 日韩av手机在线播放| 日韩亚洲欧美中文在线| 日韩国产精品久久| 91好吊色国产欧美日韩在线| 亚洲成年人在线| 国产哺乳奶水91在线播放| 亚洲一一在线| 欧美一区二区三区免费| 国产欧美日韩综合精品一区二区三区| 日韩av电影免费在线| 日本高清不卡在线观看| 国产女主播喷水视频在线观看| 久久青青草原一区二区| 欧美特级www| 日韩精品一区三区| 精品国产乱码久久久久久郑州公司| 精品一区二区三区免费观看| 九一精品久久久| 久久久久久午夜| 久久精品夜色噜噜亚洲aⅴ| 久久久久久久久久久网站| 久久亚区不卡日本| 欧美国产一二三区| 亚洲综合无码一区二区| 精品影院一区二区久久久| 亚洲国产精品成人无久久精品| 亚洲国产一区二区精品视频 | 椎名由奈jux491在线播放 | 中文字幕99页| 亚洲视频在线免费看| 久久久精品免费观看| 成年人视频软件| 久久精品视频16| 日韩日本欧美亚洲| 色国产精品一区在线观看| 欧美亚洲动漫精品| 欧美一区二区二区| 91精品国产全国免费观看| 久久综合中文字幕| 国产99对白在线播放| 黄色免费一级视频| 亚洲免费av一区| 午夜老司机精品| 亚洲老头同性xxxxx| 国产一区二区三区在线观看免费| 性色av无码久久一区二区三区| 精品久久蜜桃| 最近2019中文字幕在线高清| 99re热这里只有精品视频| 黄色一级片在线| 国产综合免费视频| 99视频在线播放| 亚洲国产日韩精品| 九九国产精品视频| 亚洲色图14p| 日本高清xxxx| 国产精品天天狠天天看| 亚洲婷婷在线视频| 成年人午夜视频| 亚洲av无一区二区三区久久| 国产二区一区| 日韩视频免费在线| 国产日产欧产精品推荐色 | 国产精品一区二区免费视频| 久久久久无码国产精品一区李宗瑞| 成人欧美一区二区三区在线观看 | 97精品免费视频| 一区二区免费在线播放| 国产三级午夜理伦三级| 91麻豆精品国产91久久综合| 熟女少妇在线视频播放| av一区二区三区免费| 成人永久免费| 亚洲人精选亚洲人成在线| 欧美精品 国产精品| 一区二区三区美女| 婷婷久久久久久| 日产欧产va高清| 久久一二三四区| 亚洲综合网在线| 亚洲一区二区免费视频| 欧美视频免费在线| 日本高清不卡一区二区三| 亚洲国产精品字幕| 伊人久久大香线蕉av一区二区| 色av一区二区| 成人av电影在线播放| 国产在线麻豆精品观看| 欧美国产视频在线| 一本久道中文字幕精品亚洲嫩| 欧美一区二区三区视频免费 | 天天综合天天干| 中国丰满人妻videoshd| 国产欧美 在线欧美| 日韩精品视频三区| 亚洲精品免费播放| 国精产品一区一区三区mba视频| 中文字幕免费在线观看视频| 日本一卡二卡在线| 国产日本欧美在线| 亚洲综合色av| 午夜精品久久久久久99热软件| 亚洲精品98久久久久久中文字幕| 亚洲图片欧美综合| 国产福利精品导航| 精品久久久久成人码免费动漫| 午夜精品一区二区三级视频| 亚洲美女性囗交| 精品一区二区成人免费视频| 亚洲自拍在线观看| 性欧美视频videos6一9| 亚洲精品www久久久| 欧美性猛交xxxx免费看久久久| 99精品偷自拍| 免费人成精品欧美精品| 国产欧美久久久精品免费| 国产一级二级三级| 88久久精品无码一区二区毛片|