黄a在线观看-黄a在线-黄a大片-黄色片在线看-黄色毛片免费-黄色大片网站

您的位置:首頁技術文章
文章詳情頁

Oracle數據庫中行遷移/行鏈接的問題

瀏覽:2日期:2023-11-16 19:46:58
一、行遷移/行鏈接的介紹 在實際的工作中我們經常會碰到一些Oracle數據庫性能較低的問題,當然,引起Oracle數據庫性能較低的原因是多方面的,我們能夠通過一些正確的設計和診斷來盡量的避免一些Oracle數據庫性能不好,Row Migration (行遷移) & Row Chaining (行鏈接)就是其中我們可以盡量避免的引起Oracle數據庫性能低下的潛在問題。通過合理的診斷行遷移/行鏈接,我們可以較大幅度上提高Oracle數據庫的性能。 那究竟什么是行遷移/行鏈接呢,先讓我們從Oracle的block開始談起。 操作系統的最小讀寫操作單元是操作系統的block,所以當創建一個Oracle數據庫的時候我們應該講數據庫的block size設置成為操作系統的block size的整數倍,Oracle block是Oracle數據庫中讀寫操作的最小單元,Oracle9i之前的Oracle數據庫版本中Oracle block一旦在創建數據庫的時候被設定后就沒法再更改。為了在創建數據庫之前確定一個合理的Oracle block的大小,我們需要考慮一些因素,例如數據庫本身的大小以及并發事務的數量等。使用一個合適的Oracle block大小對于數據庫的調優是非常重要的。 一個Oracle block由三個部分組成,分別是數據塊頭、自由空間、實際數據三部份組成。 數據塊頭:主要包含有數據塊地址的一些基本信息和段的類型,以及表和包含有數據的實際行的地址。 自由空間:是指可以為以后的更新和插入操作分配的空間,大小由PCTFREE和PCTUSED兩個參數影響。 實際數據:是指在行內存儲的實際數據。 當創建或者更改任何表和索引的時候,Oracle在空間控制方面使用兩個存儲參數: PCTFREE:為將來更新已經存在的數據預留空間的百分比。 PCTUSED:用于為插入一新行數據的最小空間的百分比。這個值決定了塊的可用狀態。可用的塊時可以執行插入的塊,不可用狀態的塊只能執行刪除和修改,可用狀態的塊被放在freelist中。 當表中一行的數據不能在一個數據block中放入的時候,這個時候就會發生兩種情況,一種是行鏈接,另外一種就是行遷移了。 行鏈接產生在第一次插入數據的時候假如一個block不能存放一行記錄的情況下。這種情況下,Oracle將使用鏈接一個或者多個在這個段中保留的block存儲這一行記錄,行鏈接比較輕易發生在比較大的行上,例如行上有LONG、LONG RAW、LOB等數據類型的字段,這種時候行鏈接是不可避免的會產生的。 當一行記錄初始插入的時候事可以存儲在一個block中的,由于更新操作導致行長增加了,而block的自由空間已經完全滿了,這個時候就產生了行遷移。在這種情況下,Oracle將會遷移整行數據到一個新的block中(假設一個block中可以存儲下整行數據),Oracle會保留被遷移行的原始指針指向新的存放行數據的block,這就意味著被遷移行的ROW ID是不會改變的。 當發生了行遷移或者行鏈接,對這行數據操作的性能就會降低,因為Oracle必須要掃描更多的block來獲得這行的信息。 下面舉例來具體說明行遷移/行鏈接的產生過程。 先創建一個pctfree為20和pctused為50的測試表: create table test(col1 char(20),col2 number)storage (pctfree 20pctused 50);當插入一條記錄的時候,Oracle會在free list中先去尋找一個自由的塊,并且將數據插入到這個自由塊中。而在free list中存在的自由的塊是由pctfree值決定的。初始的空塊都是在free list中的,直到塊中的自由空間達到pctfree的值,此塊就會從free list中移走,而當此塊中的使用空間低于pctused的時候,此塊又被重新放到free list中。 Oracle使用free list機制可以大大的提高性能,對于每次的插入操作,Oracle只需要查找free list就可以了,而不是去查找所有的block來尋找自由空間。 具體我們通過下面的一個試驗來查看行鏈接和行遷移是如何產生并在數據文件中體現出來的。先查看ALLAN這個表空間的數據文件號,為了便于測試,我只建立了一個數據文件。 SQL> select file_id from dba_data_files where tablespace_name='ALLAN';FILE_ID----------23創建一個測試表test: SQL> create table test ( x int primary key, a char(2000), b char(2000), c char(2000), d char(2000), e char(2000) ) tablespace allan;Table created.因為我的數據庫的db_block_size是8K,所以我創建的表有五個字段,每個占2000個字節,這樣一行記錄大約10K,就能超過一個block的大小了。 然后插入一行記錄,只有一個字段的: SQL> insert into test(x) values (1);1 row created.SQL> commit;Commit complete.查找這行記錄所在的block,并dump出來: SQL> select dbms_rowid.rowid_block_number(rowid) from test;DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID)34SQL> alter system dump datafile 23 block 34;System altered.在udump目錄下查看trace文件的內容如下: Start dump data blocks tsn: 34 file#: 23 minblk 34 maxblk 34buffer tsn: 34 rdba: 0x05c00022 (23/34)scn: 0x0000.013943f3 seq: 0x01 flg: 0x02 tail: 0x43f30601frmt: 0x02 chkval: 0x0000 type: 0x06=trans dataBlock header dump: 0x05c00022Object id on Block? Yseg/obj: 0x3ccd csc: 0x00.13943ef itc: 2 flg: O typ: 1 - DATAfsl: 0 fnx: 0x0 ver: 0x01Itl Xid Uba Flag Lck Scn/Fsc0x01 0x000a.02e.00000ad7 0x00800036.03de.18 --U- 1 fsc 0x0000.013943f30x02 0x0000.000.00000000 0x00000000.0000.00 ---- 0 fsc 0x0000.00000000data_block_dump,data header at 0xadb505ctsiz: 0x1fa0hsiz: 0x14pbl: 0x0adb505cbdba: 0x05c0002276543210flag=--------ntab=1nrow=1frre=-1fsbo=0x14fseo=0x1f9aavsp=0x1f83tosp=0x1f830xe:pti[0] nrow=1 offs=00x12:pri[0] offs=0x1f9ablock_row_dump:tab 0, row 0, @0x1f9atl: 6 fb: --H-FL-- lb: 0x1 cc: 1col 0: [ 2] c1 02end_of_block_dumpEnd dump data blocks tsn: 34 file#: 23 minblk 34 maxblk 34對其中的一些信息做一些解釋: Fb:H是指行記錄的頭,L是指行記錄的最后一列,F是指行記錄的第一列。 Cc:列的數量。 Nrid:對于行鏈接或者行遷移來說的下一個row id的值。 由上面的dump信息我們可以看出來當前表test是沒有行鏈接或者行遷移的。 然后更新test表,并重新dump出來: SQL> update test set a='test',b='test',c='test',d='test',e='test' where x=1;1 row updated.SQL> commit;Commit complete.此時應該有行遷移/行鏈接產生了。 SQL> alter system dump datafile 23 block 34;System altered.在udump目錄下查看trace文件的內容如下: Start dump data blocks tsn: 34 file#: 23 minblk 34 maxblk 34buffer tsn: 34 rdba: 0x05c00022 (23/34)scn: 0x0000.0139442b seq: 0x01 flg: 0x02 tail: 0x442b0601frmt: 0x02 chkval: 0x0000 type: 0x06=trans dataBlock header dump: 0x05c00022Object id on Block? Yseg/obj: 0x3ccd csc: 0x00.1394429 itc: 2 flg: - typ: 1 - DATAfsl: 0 fnx: 0x0 ver: 0x01Itl Xid Uba Flag Lck Scn/Fsc0x01 0x000a.02e.00000ad7 0x00800036.03de.18 C--- 0 scn 0x0000.013943f30x02 0x0004.002.00000ae0 0x0080003b.0441.11 --U- 1 fsc 0x0000.0139442bdata_block_dump,data header at 0xadb505c===============tsiz: 0x1fa0hsiz: 0x14pbl: 0x0adb505cbdba: 0x05c0002276543210flag=--------ntab=1nrow=1frre=-1fsbo=0x14fseo=0x178aavsp=0x177ctosp=0x177c0xe:pti[0] nrow=1 offs=00x12:pri[0] offs=0x178ablock_row_dump:tab 0, row 0, @0x178atl: 2064 fb: --H-F--N lb: 0x2 cc: 3nrid: 0x05c00023.0col 0: [ 2] c1 02col 1: [2000]74 65 73 74 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20…………col 2: [48]74 65 73 74 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20end_of_block_dumpEnd dump data blocks tsn: 34 file#: 23 minblk 34 maxblk 34我們不難看出,nrid出現了值,指向了下一個row id,證實剛剛的update操作使這行記錄產生了行鏈接或者行? 二、行遷移/行鏈接的檢測 通過前面的介紹我們知道,行鏈接主要是由于數據庫的db_block_size不夠大,對于一些大的字段沒法在一個block中存儲下,從而產生了行鏈接。對于行鏈接我們除了增大db_block_size之外沒有別的任何辦法去避免,但是因為數據庫建立后db_block_size是不可改變的(在9i之前),對于Oracle9i的數據庫我們可以對不同的表空間指定不同的db_block_size,因此行鏈接的產生幾乎是不可避免的,也沒有太多可以調整的地方。行遷移則主要是由于更新表的時候,由于表的pctfree參數設置太小,導致block中沒有足夠的空間去容納更新后的記錄,從而產生了行遷移。對于行遷移來說就非常有調整的必要了,因為這個是可以調整和控制清除的。 如何檢測數據庫中存在有了行遷移和行鏈接呢?我們可以利用Oracle數據庫自身提供的腳本utlchain.sql(在$ORACLE_HOME/rdbms/admin目錄下)生成chained_rows表,然后利用ANALYZE TABLE table_name LIST CHAINED ROWS INTO chained_rows命令逐個分析表,將分析的結果存入chained_rows表中。從utlchain.sql腳本中我們看到chained_rows的建表腳本,對于分區表,cluster表都是適用的。然后可以使用拼湊語句的辦法生成分析所需要的表的腳本,并執行腳本將具體的分析數據放入Chained_rows表中,例如下面是分析一個用戶下所有表的腳本: SPOOL list_migation_rows.sqlSET ECHO OFFSET HEADING OFFSELECT 'ANALYZE TABLE ' table_name ' LIST CHAINED ROWS INTO chained_rows;' FROM user_tables;SPOOL OFF然后查詢chained_rows表,可以具體查看某張表上有多少的行鏈接和行遷移。 SELECT table_name, count(*) from chained_rows GROUP BY table_name;當然,也可以查詢v$sysstat視圖中的’table fetch continued row’列得到當前的行鏈接和行遷移數量。 SELECT name, value FROM v$sysstat WHERE name = 'table fetch continued row';可以使用如下的腳本來直接查找存在有行鏈接和行遷移的表,自動完成所有的分析和統計。 accept owner prompt ' Enter the schema name to check for Row Chaining (RETURN for All): 'promptpromptaccept table prompt ' Enter the table name to check (RETURN for All tables owned by &owner): 'promptpromptset head off serverout on term on feed off veri off echo off!clearprompt declarev_owner varchar2(30);v_table varchar2(30);v_chains number;v_rows number;v_count number := 0;sql_stmt varchar2(100);dynamicCursor INTEGER;dummy INTEGER;cursor chains isselect count(*) from chained_rows;cursor analyze isselect owner, table_namefrom sys.dba_tables where owner like upper('%&owner%')and table_name like upper('%&table%')order by table_name;begindbms_output.enable(64000);open analyze;fetch analyze into v_owner, v_table;while analyze%FOUND loopdynamicCursor := dbms_sql.open_cursor;sql_stmt := 'analyze table 'v_owner'.'v_table' list chained rows into chained_rows';dbms_sql.parse(dynamicCursor, sql_stmt, dbms_sql.native);dummy := dbms_sql.execute(dynamicCursor);dbms_sql.close_cursor(dynamicCursor);open chains;fetch chains into v_chains;if (v_chains != 0) thenif (v_count = 0) thendbms_output.put_line(CHR(9)CHR(9)CHR(9)'<<<<< Chained Rows Found >>>>>');v_count := 1;end if;dynamicCursor := dbms_sql.open_cursor;sql_stmt := 'Select count(*) v_rows'' From 'v_owner'.'v_table;dbms_sql.parse(dynamicCursor, sql_stmt, dbms_sql.native);dbms_sql.DEFINE_COLUMN(dynamicCursor, 1, v_rows);dummy := dbms_sql.execute(dynamicCursor);dummy := dbms_sql.fetch_rows(dynamicCursor);dbms_sql.COLUMN_VALUE(dynamicCursor, 1, v_rows);dbms_sql.close_cursor(dynamicCursor);dbms_output.put_line(v_owner'.'v_table);dbms_output.put_line(CHR(9)'---> Has 'v_chains' Chained Rows and 'v_rows' Num_Rows in it!');dynamicCursor := dbms_sql.open_cursor;sql_stmt := 'truncate table chained_rows';dbms_sql.parse(dynamicCursor, sql_stmt, dbms_sql.native);dummy := dbms_sql.execute(dynamicCursor);dbms_sql.close_cursor(dynamicCursor);v_chains := 0;end if;close chains;fetch analyze into v_owner, v_table;end loop;if (v_count = 0) thendbms_output.put_line('No Chained Rows found in the 'v_owner' owned Tables!');end if;close analyze;end;/set feed on head onprompt三、行遷移和行鏈接的清除 由于對于行鏈接來說只能增大db_block_size來清除,而db_block_size在創建了數據庫后又是不能改變了的,所以這里對行鏈接的清除不做過多的敘述了,主要是針對行遷移來談談在實際的生產系統中如何去清除。 對于行遷移的清除,一般來說分為兩個步驟:第一步,控制住行遷移的增長,使其不在增多;第二步,清除掉以前存在的行遷移。 眾所周知,行遷移產生的主要原因是因為表上的pctfree參數設置過小導致的,而要實現第一步控制住行遷移的增長,就必須設置好一個正確合適的pctfree參數,否則即使清除了當前的行遷移后馬上又會產生很多新的行遷移。當然,這個參數也不是越大越好的,假如pctfree設置的過大,會導致數據塊的利用率低,造成空間的大量浪費,因此必須設置一個合理的pctfree參數。如何去確定一個表上合理的pctfree參數呢,一般來說有兩種方法。 第一種是定量的的設定方法,就是利用公式來設定pctfree的大小。先使用ANALYZE TABLE table_name ESTIMATE STATISTICS命令來分析要修改pctfree的表,然后查看user_tables中的AVG_ROW_LEN列值,得到一個平均行長AVG_ROW_LEN1,然后大量的對表操作之后,再次使用上述命令分析表,得到第二個平均行長AVG_ROW_LEN2,然后運用公式100 * (AVG_ROW_LEN2-AVG_ROW_LEN1)/(AVG_ROW_LEN2-AVG_ROW_LEN1 + 原始的AVG_ROW_LEN)得出的結果就是定量計算出來的一個合適的pctfree的值。這種方法因為是定量計算出來的,可能不一定會很準確,而且因為要分析表,所以對于使用RBO執行計劃的系統不是很適用。例如:avg_row_len_1 = 60,avg_row_len_2 = 70,則平均修改量為 10,PCTFREE 應調整為 100 * 10 /(10 + 60)= 16.7% 。 第二種是差分微調的方法,先查詢到當前表的pctfree的值,然后監控和調整pctfree參數,每次增加一點pctfree的大小,每次增加的比例不要超過5個百分點,然后使用ANALYZE TABLE TABLE_NAME LIST CHAINED ROWS INTO chained_rows命令分析每次所有的行遷移和行鏈接的增長情況,對于不同的表采取不同的增長比例,對于行遷移增長的比較快的表pctfree值就增加的多點,對于增長慢的表就增加的少點,直到表的行遷移基本保持不增長了為止。但是注重不要把pctfree調的過大,一般在40%以下就可以了,否則會造成空間的很大浪費和增加數據庫訪問的IO。 使用上述的方法控制住了當前表的行遷移的增長之后,就可以開始清除之前表上存在的行遷移了。是否清除掉行遷移,關系到系統的性能是否能夠有很大的提高。因此,對于以前存在的行遷移是一定而且必須要清除掉的。清除掉已經存在的行遷移有很多方法,但是并不是所有的方法都能適用所有的情況,例如表中的記錄數多少,表上的關聯多少、表上行遷移的數量多少等等這些因素都會是成為制約你使用什么方法清除的條件,因此,根據表的特點和具體情況的不同我們應該采用不同的方法去清除行遷移。下面我將逐一介紹各種清除行遷移的方法以及它們各自適用的不同情況。 方法一:傳統的清除行遷移的方法 具體步驟如下: 1. 執行$ORACLE_HOME/rdbms/admin目錄下的utlchain.sql腳本創建chained_rows表。 @$ORACLE_HOME/rdbms/admin/utlchain.sql 2. 將存在有行遷移的表(用table_name代替)中的產生行遷移的行的rowid放入到chained_rows表中。 ANALYZE TABLE table_name LIST CHAINED ROWS INTO chained_rows; 3. 將表中的行遷移的row id放入臨時表中保存。 CREATE TABLE table_name_temp ASSELECT * FROM table_nameWHERE rowid IN(SELECT head_rowid FROM chained_rowsWHERE table_name = 'table_name');4. 刪除原來表中存在的行遷移的記錄行。 DELETE table_nameWHERE rowid IN(SELECT head_rowidFROM chained_rowsWHERE table_name = 'table_name');5. 從臨時表中取出并重新插入那些被刪除了的數據到原來的表中,并刪除臨時表。 INSERT INTO table_name SELECT * FROM table_name_temp;DROP TABLE table_name_temp;對于這種傳統的清除RM的方法,優點是執行起來過程比較簡單,輕易實現。但是這種算法的缺陷是沒有考慮到表關聯的情況,在大多數數據庫中很多表都是和別的表之間有表關聯的,有外鍵的限制,這樣就造成在步驟3中根本無法delete掉存在有行遷移的記錄行,所以這種方法能夠適用的表的范圍是有限的,只能適用于表上無任何外鍵關聯的表。由于這種方法在插入和刪除數據的時候都沒有disable掉索引,這樣導致主要消耗時間是在刪除和插入時維持索引樹的均衡上了,這個對于假如記錄數不多的情況時間上還比較短,但是假如對于記錄數很多的表這個所消耗的時間就不是能夠接受的了。顯然,這種方法在處理大數據量的表的時候顯然是不可取的。 以下是一個具體在生產數據庫上清除行遷移的例子,在這之前已經調整過表的pctfree參數至一個合適的值了: SQL>@$ORACLE_HOME/rdbms/admin/utlchain.sqlTable created.SQL> ANALYZE TABLE CUSTOMER LIST CHAINED ROWS INTO chained_rows;Table analyzed.SQL>SELECT count(*) from chained_rows;TABLE_NAME COUNT(*)CUSTOMER 213061 rows selected.查看在CUSTOMER表上存在的限制: SQL>select CONSTRAINT_NAME,CONSTRAINT_TYPE,TABLE_NAME from USER_CONSTRAINTS where TABLE_NAME='CUSTOMER';CONSTRAINT_NAME C TABLE_NAME------------------------------ - --PK_CUSTOMER1 P CUSTOMERSQL>select CONSTRAINT_NAME,CONSTRAINT_TYPE,TABLE_NAME from USER_CONSTRAINTS where R_CONSTRAINT_NAME='PK_CUSTOMER1';no rows selectedSQL> CREATE TABLE CUSTOMER_temp ASSELECT * FROM CUSTOMER WHERE rowid IN(SELECT head_rowid FROM chained_rowsWHERE table_name = 'CUSTOMER'); Table created.SQL>select count(*) from CUSTOMER;COUNT(*)----------338299SQL> DELETE CUSTOMER WHERE rowid IN(SELECT head_rowidFROM chained_rowsWHERE table_name = 'CUSTOMER');21306 rows deleted.SQL> INSERT INTO CUSTOMER SELECT * FROM CUSTOMER_temp;21306 rows created.SQL> DROP TABLE CUSTOMER_temp;Table dropped.SQL> commit;Commit complete.SQL> select count(*) from CUSTOMER;COUNT(*)----------338299SQL> truncate table chained_rows;Table truncated.SQL> ANALYZE TABLE CUSTOMER LIST CHAINED ROWS INTO chained_rows;Table analyzed.SQL> select count(*) from chained_rows; COUNT(*)----------0以上整個清除兩萬多行的行遷移過程在三分鐘左右,而且全部都在聯機的狀態下完成,基本上不會對業務有什么影響,唯一就是在要清除行遷移的表上不能有對外鍵的限制,否則就不能采用這個方法去清除了。
標簽: Oracle 數據庫
主站蜘蛛池模板: 欧美在线免费视频 | 青青青国产精品一区二区 | 精品久久久久久久无码人妻热 | 国产精品一品二区三区四区18 | 黑人与日本少妇高潮 | 久久精品久久久精品美女 | 成人羞羞视频播放网站 | 日本特黄特色aaa大片免费 | 国产欧美三区 | 亚洲高清免费观看 | 综合久久综合 | 亚洲欧美成人中文日韩电影网站 | 日本一级片在线播放 | 亚洲 欧洲 无码 在线观看 | 波多野结衣一区二区三区高清 | 色播在线观看 | 精品国产一区二区三区久久狼5月 | 中文字幕2021 | 蜜桃免费在线视频 | 日本视频三区 | 国产亚洲精品久久久久久无几年桃 | 91爱视频 | 玉足女爽爽91 | 国产真实伦种子 | 浓毛老太交欧美老妇热爱乱 | 国产999视频 | 国产精品欧美一区二区三区喷水 | 亚洲看片lutube在线观看 | 日日躁夜夜摸月月添添添的视频 | 亚洲va欧美va国产综合剧情 | 亚洲精品无播放器在线播放 | 少妇的肉体k8经典 | 九色丨9lpony丨国产 | 久久精品国产成人av | 2023毛片| 日本欧美久久久久免费播放网 | 夜夜高潮夜夜爽 | 亚洲一区无| 青青草原av | 日本在线观看黄色 | 国产综合视频在线观看 | 亚洲h视频 | 日韩深夜影院 | 一区在线观看视频 | 欧美成人免费观看全部 | 亚洲色婷婷一区二区三区 | 午夜性片 | 特级黄色网 | 又粗又猛又爽又黄少妇视频网站 | 日本少妇喂奶视频 | youjizz少妇| 国产精品久久久18成人 | 精品国产麻豆免费人成网站 | 日韩黄色片子 | 天天色天天色天天色 | 亚洲精品成人久久久 | 91九色网 | 国产精品乱码一区二区三区四川人 | 欧美成人免费观看视频 | 国产无遮挡裸体免费直播 | 国产乱淫av国产8 | 黄色网久久 | 黄色中文字幕 | 在线观看你懂得 | 黄色一级一级 | 国产精品久久久久久久久久98 | 波多野结衣中文字幕一区二区三区 | 手机在线看片日韩 | 亚洲高清aⅴ日本欧美视频 国产suv精品一区二区69 | 日本人视频69式jzzij | 国产微拍精品一区 | 久久欧美国产伦子伦精品 | 久久久亚洲国产精品麻豆综合天堂 | 剧情av在线| 免费观看h片 | 中文字幕国产专区 | 成人在线免费观看网址 | 国产精品怕怕怕免费视频 | 亚洲另类伦春色综合图片 | 成人免费播放视频 | 国产精品制服 | 国产精品免费视频一区二区三区 | 亚洲先锋影音 | 久草在线视频资源站 | 狠狠老司机 | 久久久久久久久久久爱 | 国产精品19乱码一区二区三区 | 一级黄色性生活片 | 国产一级片在线 | 四川骚妇无套内射舔了更爽 | 欧美综合国产精品久久丁香 | 亚洲精品影院在线观看 | 亚洲在线一区二区三区 | 高潮一区 | 丰满少妇毛茸茸做性极端 | 特黄a级片| 91久久久久久久久久久 | 欧美性综合 | 1313午夜精品理论片 | 日日做夜夜爽毛片麻豆 | 成年人在线视频 | 国产成人无码av在线播放dvd | 91久久久久国产一区二区 | 亚洲欧美日韩在线不卡 | 中文成人无字幕乱码精品区 | 亚洲欧美偷拍另类a∨色屁股 | 国产亚洲精品久久久久丝瓜 | 亚洲 日本 欧美 中文幕 | 色就是色亚洲色图 | 伊人55 | 日韩黄色片子 | 欧美在线视频免费 | 久久久久99精品国产片 | 国产一区二区三区久久久久久久久 | 天堂av一区二区三区 | 日韩中文字幕免费视频 | 一级国产精品一级国产精品片 | 免费无遮挡无码永久在线观看视频 | 欧美巨大巨粗黑人性aaaaaa | 亚洲奶汁xxxx哺乳期 | 亚洲自拍偷拍一区二区 | 色婷婷综合久色aⅴ五区最新 | 午夜天堂在线观看 | 国产精品久久久久久69 | aaa国产视频| 国产精品理论在线观看 | 国产精品美女高潮视频 | 欧美又粗又大aaa片 熟女少妇内射日韩亚洲 | www.夜夜夜 | 午夜在线观看视频 | 理论片午午伦夜理片影院99 | 亚洲成人资源 | 国产做a爱片久久毛片a片 | 国产网站av | av亚洲精华国产精华精 | 无码国产色欲xxxxx视频 | 欧美亚洲人成网站在线观看 | 男女国产精品 | 一区二区三区精品国产 | 久久久午夜爽爽一区二区三区三州 | 国产成人自拍网站 | 日韩五码高清麻豆 | 日韩中文字幕区一区有砖一区 | 香蕉久久av一区二区三区 | 天堂资源在线www中文最新偷拍 | 国产精品久久久久久爽爽爽 | 久久久久欠精品国产毛片国产毛生 | 日本一区二区不卡在线 | 麻豆影视 | 国产人妖在线观看 | 加勒比无码人妻东京热 | k8经典少妇在线观看 | 欧美xxxxx高潮喷水 | 青草青在线视频 | 爆操白虎逼 | 国产精品无码aⅴ嫩草 | 久久日韩乱码一二三四区别 | 成人在线观看亚洲 | 久久思| 国产精品野外户外 | 尤物网站在线观看 | 无码高潮少妇毛多水多水免费 | 日日碰狠狠丁香久燥 | 91精品国产毛片 | 国产真实偷乱视频 | 亚洲第一天堂 | 综合色88| 日本人xxxxxx免费泡妞 | 一本精品999爽爽久久久 | 亚洲色成人www永久网站 | 九九99九九精彩6 | 国产成年人网站 | 青青草原亚洲 | 老色69久久九九精品高潮 | 粉嫩av一区二区夜夜嗨 | 日本000xxx免费视频 | 少妇饥渴偷公乱h姚蕊 | 超碰2023 | 色播在线观看 | 午夜免费看视频 | 少妇的激情 | 少妇被粗大的猛进出69影院 | 国产精品亚洲精品日韩已方 | 国产精品黄色网 | 后进极品白嫩翘臀在线播放 | 人人摸人人搞人人透 | 久热免费在线视频 | 日韩美女一区二区三区 | eeuss影院一区二区三区 | 日韩av一区二区在线播放 | 欧美乱三级 | 国产精品人人妻人人爽人人牛 | 国产愉拍 | 麻豆精品a∨在线观看 | 99性视频 | 91av色| 九九视频国产 | 四虎影院色 | 又大又粗弄得我出好多水 | 夹得我好紧好爽日出了水视频 | 日本中文字幕有码在线视频 | 特级做a爰片毛片免费看 | 久久精品亚洲国产 | 亚洲一区二区三区中文字幕 | 国产亚洲成av人在线观看导航 | 精国产品一区二区三区a片 日韩av在线观看免费 | 久久成人福利视频 | 欧美双性人妖o0 | 精品无码专区久久久水蜜桃 | 中文字幕一区二区不卡 | 青青草一区二区 | 日韩第一页在线观看 | 精品一区二区三区国产 | 我要干成人网 | 伦理一国产a级 | 九九九免费 | 日本丰满少妇裸体自慰 | 国产精品一区二区三区在线看 | 国产一区二区在线播放视频 | 国产精品成人免费一区久久羞羞 | 精品少妇一区二区三区免费观 | 大陆极品少妇内射aaaaaa | 亚洲女优在线 | 国产精品美女久久久另类人妖 | 久久亚洲国产 | 91豆花精品一区 | 邻居少妇张开腿让我爽了在线观看 | 亚洲性猛交xxxx乱大交 | 亚洲妇熟xxxx妇色黄 | 日本少妇一区 | 国产日本一区二区三区 | 日韩国产传媒 | 性史性农村dvd毛片 永久黄网站色视频免费直播 | 99麻豆久久久国产精品免费 | 亚洲伊人天堂 | 女人被狂躁c到高潮喷水一区二区 | 日韩一区二区免费视频 | 国产伦精品一区二区三区男技 | 奇米超碰在线 | 成人短视频在线 | 久久免费激情视频 | 欧美内射深喉中文字幕 | 久久成人福利视频 | 国产欧美第一页 | 黄色毛片看看 | 伊人99在线| 欧美成片vs欧美 | 欧美日韩一区二区免费视频 | aaa级吃奶摸下免费视频 | 波多野结衣一本 | 精品三级av无码一区 | 黄色片在线观看免费 | 五月天色站 | 亚洲国产婷婷香蕉久久久久久 | 午夜剧院免费观看 | 俄罗斯大bbbwww视频 | 伊人蕉影院久亚洲高清 | 久久精品中文 | 人妻巨大乳一二三区 | 亚洲精品无码永久在线观看性色 | av香港经典三级级 在线 | 好吊色视频在线观看 | 人妻激情偷乱视频一区二区三区 | 波多野结衣av无码久久一区 | 国产欧美va欧美va香蕉在线 | 亚洲综合色在线 | 男男成人高潮片免费网站 | 日日噜噜夜夜狠狠久久波多野 | 少妇裸体淫交免费视频网站 | 久久精品91视频 | 五月婷婷欧美 | 精品国产乱码久久久久久闺蜜 | 中文字幕在线免费看线人 | 在线a亚洲视频播放在线观看 | 国产精品视频资源 | 少妇极品熟妇人妻无码 | 人妻熟女av一区二区三区 | 天堂va蜜桃一区二区三区 | 曰本女人牲交全视频播放 | 亚洲激情视频一区 | 成人免费ā片在线观看 | 毛葺葺老太做受视频 | 国产亚洲精 | 三级在线视频 | 国内精品九九久久精品 | 爆乳2把你榨干哦ova在线观看 | 99在线 | 亚洲 | 一级作爱片 | 欧美a级网站| 天天操天天艹 | 日韩精品无码一区二区 | 99精品一区二区 | 亚洲欧洲免费无码 | 免费av不卡 | 日韩在线视频观看免费 | 亚欧日韩av | 亚洲综合在线另类色区奇米 | 在线国产观看 | 东北农村老女人乱淫视频毛片 | 日韩黄色录像 | 国产偷亚洲偷欧美偷精品 | a√天堂资源在线 | 麻豆一区二区99久久久久 | 蜜臀av性久久久久蜜臀aⅴ涩爱 | 亚洲国产精品大学美女久久久爽 | 成人深夜福利 | 乱人伦人妻中文字幕不卡 | 亚洲高清精品视频 | 性猛色xxxxx富婆 | 影音先锋成人网 | 九一在线视频 | 国产午夜禁区精品视频 | 强制中出し~大桥未久在线 | 福利国产片| 九热精品| 俄罗斯大bbbwww视频 | 国产精品高潮露脸在线观看 | 九七人人爽| 国产美女黄色 | 色久综合| 国产午夜精品一区理论片飘花 | 欧美伦理片网站 | 好吊视频一区二区三区四区 | 亚洲第一精品在线 | 一区二区观看 | av在线免费观看网址 | 国产精品福利视频推女郎 | 成年人黄色在线观看 | 国产精品久久久久久亚洲 | 久久精品—区二区三区 | 日本三级韩国三级欧美三级 | 久久久三区 | 18禁无遮挡啪啪无码网站 | 国产精品久久久影视青草 | 五月色婷婷俺来也在线观看 | av网站在线观看不卡 | 在线播放精品 | 朋友的姐姐2在线观看 | 欧美在线综合 | 亚洲成人av一区二区三区 | 欧美怡春院一区二区三区 | 久久精品国产99国产精偷 | 亚洲色婷婷久久精品av蜜桃久久 | 中国黄色片视频 | 国产猛烈高潮尖叫视频免费 | 首页 亚洲 欧美 制服 丝腿 | 亚洲午夜无码毛片av久久 | 在线观看亚洲色图 | 天堂√中文在线 | 中文字幕精品在线 | 欧美性大战久久久久xxx | 日本国产一区二区三区 | 日韩网站视频 | 国产99在线 | 亚洲 | 麻豆 国产 | 国产无套内射普通话对白 | 免费观看污 | 国产一区二区日韩 | 在线播放五十路熟妇 | 成人乱人乱一区二区三区 | 黄色一区二区三区四区 | 国产欧美日韩三级 | 黄频在线免费观看 | 免费无码毛片一区二三区 | 色狠狠久久av大岛优香 | 熟女内射v888av | 国产网红主播精品一区 | 欧美一区二区国产 | 伊人久操| 久久99亚洲精品久久99果 | a√天堂在线 | 在线免费一级片 | 亚洲成人99| 亚洲人成网站在线播放942 | 在线看h网站 | 国产亚洲精品久久久久久久久动漫 | 久久欧美国产伦子伦精品 | 欧美三级免费观看 | 国产精品久久久久久久免费软件 | 一级做a爱视频 | 伊人成年网 | av丝袜在线| 久久久久久久久久久久久久免费看 | 俺去射 | 中国一级特黄真人毛片 | 香蕉国产在线视频 | 精品无人区一区二区 | 亚洲女同一区 | 亚洲精品9999 | 激情视频区 | 日日摸夜夜 | 亚洲一级在线 | 亚洲成a人片在线 | 人妻巨大乳hd免费看 | 极品少妇xxxx | 香蕉久热| 好吊爽在线播放视频 | 狠狠干婷婷 | 韩国三级hd中文字幕叫床浴室 | 婷婷五月在线视频 | 亚洲一区二区三区高清 | 日韩黄色片免费看 | 久久一日本道色综合久久 | www黄色com| 一级片日韩 | 国产尤物| 久久久91视频 | 天天躁夜夜躁狠狠眼泪 | 亚洲va欧美va国产综合剧情 | 日本人与黑人做爰视频 | 欧美激情91| 国产成人免费av | 国产精品一区在线看 | 日本精品毛片一区视频播 | 成人中文网 | 中文字幕亚洲情99在线 | 精品人妻一区二区三区四区 | 久久久婷婷成人综合激情 | 久久夜色精品国产欧美一区麻豆 | 日本 欧美 制服 中文 国产 | 成人av国产| 国产成人自拍网站 | 在线看片无码永久免费视频 | 亚洲国产制服 | 精品国产乱码久久久久久图片 | 香港三日三级少妇三级66 | 国产在线麻豆精品观看 | 欧美一区二区激情 | 中文字幕日本在线观看 | 国产在线视频你懂的 | 国产真实乱人偷精品视频 | 日本高清视频www | 免费av一区二区 | 久草在线在线精品观看 | 777精品伊人久久久久大香线蕉 | 天天免费视频 | 国产igao为爱做激情在线观看 | 伊人看片| 亚洲精品一二三四 | 国产免费一区二区三区在线能观看 | 国产精品久久久久久久免费看 | 国产av一区二区三区天堂综合网 | 茄子视频A| 国产精品zjzjzj在线观看 | 91插插插插插插插 | 亚洲精品综合一区二区三区在线 | 久久久久综合精品福利啪啪 | 91宅男噜噜噜66在线观看 | 91巨炮在线| 又色又爽又黄又免费的照片 | 亚洲图色av| 国产精品免费一区二区 | 日本天天黄网站 | 精品国产户外野外 | 四虎精品在线 | 国产农村妇女精品 | 日韩黄大片 | 9l蝌蚪porny中文自拍 | 日本高清xxxx | 天天色综合5 | 久久久精品二区 | 强行处破女系列中文字幕 | 成人三级黄色 | 俄罗斯伦理精品a级 | 国产欧美日韩三区 | 欧美激情性做爰免费视频 | 国产精品久久久久久亚洲 | 欧洲熟妇性色黄 | 亚洲色图偷| 18成人在线 | 亚洲国产成人片在线观看无码 | 国产精品久久久久久久久久久免费看 | 丝袜脚交一区二区 | 人妻 日韩精品 中文字幕 | 国色天香乱码区 | se69色成人网wwwsex | 成人羞羞国产免费 | 午夜国产| 国产精品无码专区在线播放 | 在线看片国产 | 白嫩少妇xxxxx性hd美图 | 国产精品性生活 | 高清国产在线观看 | 韩国美女啪啪 | 亚洲第一天堂影院 | 国产成人免费在线视频 | 免费观看黄色小视频 | 日韩综合中文字幕 | 人妻激情偷乱一区二区三区 | 日韩 欧美 中文字幕 制服 | 成人午夜影片 | 97精品国产| 91 在线视频| 久久调教视频 | wwwyoujizzcom在线| 夜夜爽久久揉揉一区 | 中文字幕av免费在线观看 | 欧美性受xxxx白人性爽 | 精品亚洲国产成人 | 天天躁人人躁人人躁狂躁 | 日韩少妇内射免费播放 | 97人人干 | zzzwww在线看片免费 | 在线观看视频福利 | 日韩无套无码精品 | 二个男人躁我一个视频 | 老熟妇乱子伦牲交视频 | 99精品国产综合久久久久五月天 | 国产精品igao视频网网址不卡日韩 | 无码无套少妇毛多18p | 4438ⅹ亚洲全国最大色丁香 | 最新精品国偷自产在线 | 欧美乱妇日本无乱码特黄大片 | 国产网红福利视频一区二区 | 国产自在线| 欧美一卡二卡 | 高h1v1翁妇肉乱怀孕 | 亚洲aav| 成 人 免费观看网站 | 有码在线 | 欧美无砖专区免费 | 一级片在线免费播放 | 亚洲一区 日韩精品 中文字幕 | 国产色综合网 | 国产精品久久久久久亚洲影视公司 | 操操操操操操操操操 | 国产又色又爽又黄又免费文章 | 国产成人亚洲精品狼色在线 | 欧美日韩国产91 | 97se亚洲国产一区二区三区 | 488成人啪啪片 | 一级α片免费看刺激高潮视频 | 手机看片日韩 | 四虎影视在线播免费观看 | 成人网页| 亚洲ooo欧洲1 | 国产在线精品观看 | 国产又黄又硬又湿又黄的故事 | 中文字幕资源网 | 天堂а√在线资源在线 | 中文字幕av一区二区三区 | 日韩美女视频一区二区 | 黄色网战在线观看 | 亚洲国产日韩在线视频 | 国产freexxxx性播放麻豆 | 一级空姐毛片 | 精品国产乱码久久久久久108 | 激情小说av | 婷婷色视频 | 国产成人精品一区二三区四区五区 | 女人18片毛片60分钟 | 国产在线视频91 | 久久成人久久爱 | 日韩精品小视频 | 欧美日韩亚洲第一 | 国产在线短视频 | 韩国三级 女的和老头做 | avtt在线 | 少妇厨房愉情理9仑片视频 纯爱无遮挡h肉动漫在线播放 | 中文字幕亚洲欧美日韩在线不卡 | 中文字幕有码在线观看 | 国产亚洲欧美日韩高清 | 亚欧成人| 无码人妻毛片丰满熟妇区毛片 | 美女狠狠干 | 久久国产加勒比精品无码 | 日产精品久久久一区二区 | 黄色喷水网站 | 亚洲精品久久久久玩吗 | 国产色产综合色产在线视频 | 日韩精品视频在线观看免费 | 国产精品三级在线 | 日本少妇激三级做爰在线 | 97免费视频在线 | 欧美黄色aaa | 妹子干综合网 | 91高跟黑色丝袜呻吟在线观看 | 成在人线av无码免费 | 亚洲国产精品久久久久秋霞蜜臀 | 国产激情美女久久久久久吹潮 | 少妇高潮喷水久久久影院 | 久久99精品久久久久久 | 久久精品99久久久久久 | 色综合av综合无码综合网站 | 狠狠色丁香久久婷婷综合_中 | а天堂8中文最新版在线官网 | 亚洲国产精品麻豆 | 日韩一级理论片 | 成人毛片免费网站 | 蜜桃视频一区二区三区在线观看 | 久久综合激激的五月天 | 国产视频a在线观看 | 青青草在线免费观看 | 精品一卡2卡三卡4卡免费网站 | 中文字幕不卡在线播放 | 人人澡人人妻人人爽人人蜜桃麻豆 | 久久男人av资源网站无码 | jizz中国少妇高潮出水 | 国产视频污 | 成人影视免费 | www.色人阁.com | 欧美视频黄色 | 国产午夜福利亚洲第一 | 免费福利小视频 | 成人夜间视频 | 久久精品五月天 | 中文文字幕文字幕高清 | 三浦惠理子aⅴ一二三区 | 91亚洲精品久久久中文字幕 | 一本久久综合 | 精品欧洲av无码一区二区14 | 国产精品久久久免费视频 | 精品无码一区二区三区av | 成人性生交大片免费 | 中文字幕视频一区 |