精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Oracle Redo log并行機制詳解

數據庫 Oracle 數據庫運維
Redo log是Oracle數據庫的日志,可以用于恢復和一個高級特性的重要數據;這里我們通過一些實例來深入了解Oracle Redo log的并行機制。

Oracle的數據庫日志稱為Redo log,所有數據改變都記錄Redo log,可以用于修復受損的數據庫。Redo log 是用于恢復和一個高級特性的重要數據,一個redo條目包含了相應操作導致的數據庫變化的所有信息,所有redo條目最終都要被寫入redo文件中去。

Redo log buffer是為了避免Redo文件IO導致性能瓶頸而在sga中分配出的一塊內存。一個redo條目首先在用戶內存(PGA)中產生,然后由oracle服務進程拷貝到log buffer中,當滿足一定條件時,再由LGWR進程寫入redo文件。由于log buffer是一塊“共享”內存,為了避免沖突,它是受到redo allocation latch保護的,每個服務進程需要先獲取到該latch才能分配redo buffer。因此在高并發且數據修改頻繁的oltp系統中,我們通常可以觀察到redo allocation latch的等待。Redo寫入redo buffer的整個過程如下:

在PGA中生產Redo Enrey -> 服務進程獲取Redo Copy latch(存在多個---CPU_COUNT*2) -> 服務進程獲取redo allocation latch(僅1個) -> 分配log buffer -> 釋放redo allocation latch -> 將Redo Entry寫入Log Buffer -> 釋放Redo Copy latch;

shared strand

為了減少redo allocation latch等待,在oracle 9.2中,引入了log buffer的并行機制。其基本原理就是,將log buffer劃分為多個小的buffer,這些小的buffer被成為strand(為了和之后出現的private strand區別,它們被稱之為shared strand)。每一個strand受到一個單獨redo allocation latch的保護。多個shared strand的出現,使原來序列化的redo buffer分配變成了并行的過程,從而減少了redo allocation latch等待。

shared strand的初始數據量是由參數log_parallelism控制的;在10g中,該參數成為隱含參數,并新增參數_log_parallelism_max控制shared strand的最大數量;_log_parallelism_dynamic則控制是否允許shared strand數量在_log_parallelism和_log_parallelism_max之間動態變化。

  1. HELLODBA.COM>select  nam.ksppinm, val.KSPPSTVL, nam.ksppdesc      
  2.   2  from    sys.x$ksppi nam,      
  3.   3          sys.x$ksppsv val      
  4.   4  where nam.indx = val.indx      
  5.   5  --AND   nam.ksppinm LIKE '_%'      
  6.   6  AND   upper(nam.ksppinm) LIKE '%LOG_PARALLE%';      
  7.      
  8. KSPPINM                    KSPPSTVL   KSPPDESC      
  9. -------------------------- ---------- ------------------------------------------      
  10. _log_parallelism           1          Number of log buffer strands      
  11. _log_parallelism_max       2          Maximum number of log buffer strands      
  12. _log_parallelism_dynamic   TRUE       Enable dynamic strands  

每一個shared strand的大小 = log_buffer/(shared strand數量)。strand信息可以由表x$kcrfstrand查到(包含shared strand和后面介紹的private strand,10g以后存在)。 

  1. HELLODBA.COM>select indx,strand_size_kcrfa from x$kcrfstrand where last_buf_kcrfa != '00';      
  2.      
  3.       INDX STRAND_SIZE_KCRFA      
  4. ---------- -----------------      
  5.          0           3514368      
  6.          1           3514368      
  7.      
  8. HELLODBA.COM>show parameter log_buffer      
  9.      
  10. NAME                                 TYPE        VALUE      
  11. ------------------------------------ ----------- ------------------------------      
  12. log_buffer                           integer     7028736    

關于shared strand的數量設置,16個cpu之內最大默認為2,當系統中存在redo allocation latch等待時,每增加16個cpu可以考慮增加1個strand,最大不應該超過8。并且_log_parallelism_max不允許大于cpu_count。

注意:在11g中,參數_log_parallelism被取消,shared strand數量由_log_parallelism_max、_log_parallelism_dynamic和cpu_count控制。

Private strand

為了進一步降低redo buffer沖突,在10g中引入了新的strand機制——Private strand。Private strand不是從log buffer中劃分的,而是在shared pool中分配的一塊內存空間。

  1. HELLODBA.COM>select * from V$sgastat where name like '%strand%';  
  2.  
  3.   POOL NAME BYTES  
  4.  
  5.   ------------ -------------------------- ----------  
  6.  
  7.   shared pool private strands 2684928  
  8.  
  9.   HELLODBA.COM>select indx,strand_size_kcrfa from x$kcrfstrand where last_buf_kcrfa = '00';  
  10.  
  11.   INDX STRAND_SIZE_KCRFA  
  12.  
  13.   ---------- -----------------  
  14.  
  15.   2 66560  
  16.  
  17.   3 66560  
  18.  
  19.   4 66560  
  20.  
  21.   5 66560  
  22.  
  23.   6 66560  
  24.  
  25.   7 66560  
  26.  
  27.   8 66560  
  28.  
  29.   ... 

Private strand的引入為Oracle的Redo/Undo機制帶來很大的變化。每一個Private strand受到一個單獨的redo allocation latch保護,每個Private strand作為“私有的”strand只會服務于一個活動事務。獲取到了Private strand的用戶事務不是在PGA中而是在Private strand生成Redo,當flush private strand或者commit時,Private strand被批量寫入log文件中。如果新事務申請不到Private strand的redo allocation latch,則會繼續遵循舊的redo buffer機制,申請寫入shared strand中。事務是否使用Private strand,可以由x$ktcxb的字段ktcxbflg的新增的第13位鑒定:

  1. HELLODBA.COM>select decode(bitand(ktcxbflg, 4096),0,1,0) used_private_strand, count(*)  
  2.  
  3.   2 from x$ktcxb  
  4.  
  5.   3 where bitand(ksspaflg, 1) != 0  
  6.  
  7.   4 and bitand(ktcxbflg, 2) != 0  
  8.  
  9.   5 group by bitand(ktcxbflg, 4096);  
  10.  
  11.   USED_PRIVATE_STRAND COUNT(*)  
  12.  
  13.   ------------------- ----------  
  14.  
  15.   1 10  
  16.  
  17.   0 1 

對于使用Private strand的事務,無需先申請Redo Copy Latch,也無需申請Shared Strand的redo allocation latch,而是flush或commit是批量寫入磁盤,因此減少了Redo Copy Latch和redo allocation latch申請/釋放次數、也減少了這些latch的等待,從而降低了CPU的負荷。過程如下:

事務開始 -> 申請Private strand的redo allocation latch (申請失敗則申請Shared Strand的redo allocation latch) -> 在Private strand中生產Redo Enrey -> Flush/Commit -> 申請Redo Copy Latch -> 服務進程將Redo Entry批量寫入Log File -> 釋放Redo Copy Latch -> 釋放Private strand的redo allocation latch 。#p#

注意:對于未能獲取到Private strand的redo allocation latch的事務,在事務結束前,即使已經有其它事務釋放了Private strand,也不會再申請Private strand了。

每個Private strand的大小為65K。10g中,shared pool中的Private strands的大小就是活躍會話數乘以65K,而11g中,在shared pool中需要為每個Private strand額外分配4k的管理空間,即:數量*69k。

  1. --10g:  
  2.  
  3.   SQL> select * from V$sgastat where name like '%strand%';  
  4.  
  5.   POOL NAME BYTES  
  6.  
  7.   ------------ -------------------------- ----------  
  8.  
  9.   shared pool private strands 1198080  
  10.  
  11.   HELLODBA.COM>select trunc(value * KSPPSTVL / 100) * 65 * 1024  
  12.  
  13.   2 from (select value from v$parameter where name = 'transactions') a,  
  14.  
  15.   3 (select val.KSPPSTVL  
  16.  
  17.   4 from sys.x$ksppi nam, sys.x$ksppsv val  
  18.  
  19.   5 where nam.indx = val.indx  
  20.  
  21.   6 AND nam.ksppinm = '_log_private_parallelism_mul') b;  
  22.  
  23.   TRUNC(VALUE*KSPPSTVL/100)*65*1024  
  24.  
  25.   -------------------------------------  
  26.  
  27.   1198080  
  28.  
  29.   --11g:  
  30.  
  31.   HELLODBA.COM>select * from V$sgastat where name like '%strand%';  
  32.  
  33.   POOL NAME BYTES  
  34.  
  35.   ------------ -------------------------- ----------  
  36.  
  37.   shared pool private strands 706560  
  38.  
  39.   HELLODBA.COM>select trunc(value * KSPPSTVL / 100) * (65 + 4) * 1024  
  40.  
  41.   2 from (select value from v$parameter where name = 'transactions') a,  
  42.  
  43.   3 (select val.KSPPSTVL  
  44.  
  45.   4 from sys.x$ksppi nam, sys.x$ksppsv val  
  46.  
  47.   5 where nam.indx = val.indx  
  48.  
  49.   6 AND nam.ksppinm = '_log_private_parallelism_mul') b;  
  50.  
  51.   TRUNC(VALUE*KSPPSTVL/100)*(65+4)*1024  
  52.  
  53.   -------------------------------------  
  54.  
  55.   706560 

Private strand的數量受到2個方面的影響:logfile的大小和活躍事務數量。

參數_log_private_mul指定了使用多少logfile空間預分配給Private strand,默認為5。我們可以根據當前logfile的大小(要除去預分配給log buffer的空間)計算出這一約束條件下能夠預分配多少個Private strand:

  1. HELLODBA.COM>select bytes from v$log where status = 'CURRENT';  
  2.  
  3.   BYTES  
  4.  
  5.   ----------  
  6.  
  7.   52428800  
  8.  
  9.   HELLODBA.COM>select trunc(((select bytes from v$log where status = 'CURRENT') - (select to_number(value) from v$parameter where name = 'log_buffer'))*  
  10.  
  11.   2 (select to_number(val.KSPPSTVL)  
  12.  
  13.   3 from sys.x$ksppi nam, sys.x$ksppsv val  
  14.  
  15.   4 where nam.indx = val.indx  
  16.  
  17.   5 AND nam.ksppinm = '_log_private_mul') / 100 / 66560)  
  18.  
  19.   6 as "calculated private strands" 
  20.  
  21.   7 from dual;  
  22.  
  23.   calculated private strands  
  24.  
  25.   --------------------------  
  26.  
  27.   5  
  28.  
  29.   HELLODBA.COM>select count(1) "actual private strands" from x$kcrfstrand where last_buf_kcrfa = '00';  
  30.  
  31.   actual private strands  
  32.  
  33.   ----------------------  
  34.  
  35.   5 

當logfile切換后(和checkpoint一樣,切換之前必須要將所有Private strand的內容flush到logfile中,因此我們在alert log中可能會發現日志切換信息之前會有這樣的信息:"Private strand flush not complete",這是可以被忽略的),會重新根據切換后的logfile的大小計算對Private strand的限制:

  1. HELLODBA.COM>alter system switch logfile;  
  2.  
  3.   System altered.  
  4.  
  5.   HELLODBA.COM>select bytes from v$log where status = 'CURRENT';  
  6.  
  7.   BYTES  
  8.  
  9.   ----------  
  10.  
  11.   104857600  
  12.  
  13.   HELLODBA.COM>select trunc(((select bytes from v$log where status = 'CURRENT') - (select to_number(value) from v$parameter where name = 'log_buffer'))*  
  14.  
  15.   2 (select to_number(val.KSPPSTVL)  
  16.  
  17.   3 from sys.x$ksppi nam, sys.x$ksppsv val  
  18.  
  19.   4 where nam.indx = val.indx  
  20.  
  21.   5 AND nam.ksppinm = '_log_private_mul') / 100 / 66560)  
  22.  
  23.   6 as "calculated private strands" 
  24.  
  25.   7 from dual;  
  26.  
  27.   calculated private strands  
  28.  
  29.   --------------------------  
  30.  
  31.   13  
  32.  
  33.   HELLODBA.COM>select count(1) "actual private strands" from x$kcrfstrand where last_buf_kcrfa = '00';  
  34.  
  35.   actual private strands  
  36.  
  37.   ----------------------  
  38.  
  39.   13 

參數_log_private_parallelism_mul用于推算活躍事務數量在最大事務數量中的百分比,默認為10。Private strand的數量不能大于活躍事務的數量。

  1. HELLODBA.COM>show parameter transactions  
  2.  
  3.   NAME TYPE VALUE  
  4.  
  5.   ------------------------------------ ----------- ------------------------------  
  6.  
  7.   transactions integer 222  
  8.  
  9.   transactions_per_rollback_segment integer 5  
  10.  
  11.   HELLODBA.COM>select trunc((select to_number(value) from v$parameter where name = 'transactions') *  
  12.  
  13.   2 (select to_number(val.KSPPSTVL)  
  14.  
  15.   3 from sys.x$ksppi nam, sys.x$ksppsv val  
  16.  
  17.   4 where nam.indx = val.indx  
  18.  
  19.   5 AND nam.ksppinm = '_log_private_parallelism_mul') / 100 )  
  20.  
  21.   6 as "calculated private strands" 
  22.  
  23.   7 from dual;  
  24.  
  25.   calculated private strands  
  26.  
  27.   --------------------------  
  28.  
  29.   22  
  30.  
  31.   HELLODBA.COM>select count(1) "actual private strands" from x$kcrfstrand where last_buf_kcrfa = '00';  
  32.  
  33.   actual private strands  
  34.  
  35.   ----------------------  
  36.  
  37.   22 

注:在預分配Private strand時,會選擇上述2個條件限制下最小一個數量。但相應的shared pool的內存分配和redo allocation latch的數量是按照活躍事務數預分配的。

因此,如果logfile足夠大,_log_private_parallelism_mul與實際活躍進程百分比基本相符的話,Private strand的引入基本可以消除redo allocation latch的爭用問題。

【編輯推薦】

  1. 淺談在Oracle中如何利用REDO實現故障恢復
  2. 簡析REDO LOGFILE
  3. 詳解Oracle中數字與大寫交換
  4. 淺析Oracle對象和數據的導入導出
  5. 分析探討Oracle Data Guard
責任編輯:佚名 來源: HelloDBA
相關推薦

2010-04-30 13:44:36

Oracle Redo

2025-06-06 07:02:43

2019-05-06 15:27:48

Oracle數據庫數據

2024-06-11 00:00:02

MySQL數據庫系統

2021-07-28 08:32:03

MySQLRedo存儲

2023-11-23 13:17:39

MySQL?數據庫

2009-09-02 18:52:38

Oracle數據庫并行

2021-10-04 09:23:30

Redo日志內存

2025-01-20 08:20:00

redo logMySQL數據庫

2010-04-07 14:22:46

2021-05-28 11:18:50

MySQLbin logredo log

2021-01-26 13:47:08

MySQL存儲數據

2020-08-20 12:10:42

MySQL日志數據庫

2011-05-26 09:36:07

Oracle數據庫Redo故障

2024-05-28 00:10:00

JavaMySQL數據庫

2025-01-15 13:19:09

MySQL日志事務

2011-03-24 17:21:42

Oracle數據庫Redo故障

2019-12-03 09:00:59

Oracle數據庫等待事件

2024-05-30 08:03:17

2009-07-16 09:46:20

iBATIS Log機
點贊
收藏

51CTO技術棧公眾號

成人免费视频观看视频| 久久视频在线直播| 8x8x最新地址| 在线免费观看a视频| 99国产精品久久| 国产精品入口免费视| 欧美日韩免费做爰视频| 欧美欧美黄在线二区| 欧美一区欧美二区| 日韩手机在线观看视频| av文字幕在线观看| 久久久99精品免费观看| 超碰国产精品久久国产精品99| 国产剧情在线视频| 欧美有码视频| 在线视频欧美日韩| 欧美极品jizzhd欧美仙踪林| a屁视频一区二区三区四区| 一区二区三区精品在线| 一区二区三区av在线| 亚洲色图另类小说| 国产成a人亚洲精| 国产精品男人的天堂| 在线观看中文字幕视频| 欧美体内she精视频在线观看| 色哟哟入口国产精品| 欧美成人午夜精品免费| 高清日韩欧美| 日韩一区二区视频| 亚洲精品成人在线播放| 91精品影视| 欧美日韩国产专区| 日韩极品视频在线观看| 黄网址在线观看| 国产欧美精品区一区二区三区 | 久久综合免费视频影院| 无码 人妻 在线 视频| 懂色av一区二区| 欧美一二三区在线观看| 爱爱爱爱免费视频| 成人不卡视频| 91黄视频在线| 国产精品69页| 中文字幕av一区二区三区佐山爱| 精品国产成人在线| 人妻久久久一区二区三区| 亚洲精品白浆| 亚洲毛片av在线| 一道本在线观看视频| porn视频在线观看| 中文字幕+乱码+中文字幕一区| 美女一区视频| 美国成人毛片| 国产视频一区不卡| 日本最新一区二区三区视频观看| 欧洲亚洲精品视频| 久久看人人爽人人| 日本视频一区二区在线观看| 国产在线日本| 国产精品丝袜久久久久久app| 欧美一区二区三区精美影视 | 久久久久久久综合| 婷婷精品国产一区二区三区日韩| 加勒比一区二区三区在线| 久久久精品国产免大香伊| 蜜桃狠狠色伊人亚洲综合网站| 色哟哟在线观看| 国产午夜精品久久久久久免费视| 日本一区二区三不卡| 97电影在线看视频| 中文字幕色av一区二区三区| 亚洲色图都市激情| 91桃色在线观看| 色哟哟欧美精品| 亚洲精品手机在线观看| 亚洲日本一区二区三区在线| 亚洲激情电影中文字幕| 久久久久无码精品国产sm果冻| 日韩在线观看电影完整版高清免费悬疑悬疑| 日日骚久久av| 久久亚洲国产成人精品性色| 亚洲永久网站| 国产日韩欧美影视| 亚洲第一免费视频| 久久久综合视频| 日本免费在线视频观看| 秋霞在线视频| 色一区在线观看| 亚洲一区二区中文字幕在线观看| 北条麻妃一区二区三区在线| 国产一区二区三区四区福利| 老妇女50岁三级| 亚洲综合电影一区二区三区| 成人a在线观看| 日韩资源在线| 亚洲色图一区二区| 国产91在线免费| 99视频有精品高清视频| 日韩av一区二区在线| 国产乱子轮xxx农村| 亚洲免费播放| 成人午夜一级二级三级| 天堂av中文在线资源库| **网站欧美大片在线观看| 亚洲中文字幕无码专区| 亚洲欧美专区| 亚洲人成77777在线观看网| 欧美日韩三级在线观看 | 亚洲自拍第三页| 久久99青青| 欧美精品久久久久a| 中文字幕av免费观看| 9久草视频在线视频精品| 在线视频精品一区| 超碰超碰人人人人精品| 精品免费99久久| 中国一级片在线观看| 日日欢夜夜爽一区| 精品国产综合| 黄色羞羞视频在线观看| 欧美老女人在线| 午夜精产品一区二区在线观看的| 亚洲精品免费观看| 97人人干人人| 在线视频观看国产| 欧美精品aⅴ在线视频| аⅴ天堂中文在线网| 亚洲综合国产激情另类一区| 成人午夜电影免费在线观看| 成人在线观看亚洲| 正在播放亚洲一区| 国产真人真事毛片视频| 日韩影院免费视频| 欧美高清性xxxxhdvideosex| 女厕盗摄一区二区三区| 亚洲电影中文字幕| 国产系列精品av| 国产成人在线视频网站| 99久久99久久精品| 日韩亚洲精品在线观看| 欧美乱妇40p| 99精品免费观看| 亚洲人被黑人高潮完整版| 午夜免费福利视频在线观看| 日韩视频在线观看| 国产免费亚洲高清| 日本福利在线| 91精品国产综合久久福利| 黄色录像一级片| 国产毛片精品一区| 99久久免费观看| 1313精品午夜理伦电影| 欧美福利视频网站| 人人妻人人澡人人爽精品日本 | 国产欧美日韩不卡| 日韩大片一区二区| 国产二区精品| 91麻豆精品秘密入口| 性欧美1819sex性高清大胸| 日韩欧美在线网站| 日本中文字幕免费| 久久综合九色综合欧美亚洲| 蜜臀久久99精品久久久酒店新书| 国产成人一区| 国产日韩欧美在线观看| 久操视频在线观看| 精品国产一区二区三区久久影院| 日本a在线观看| 久久日一线二线三线suv| 妓院一钑片免看黄大片| 国产精品毛片一区二区在线看| 91在线免费网站| 99在线视频影院| 亚洲夜晚福利在线观看| 国产精品久久久久久久一区二区| 亚洲精品欧美专区| 波多野结衣办公室33分钟| 日韩在线一区二区| 无码毛片aaa在线| 久久夜色精品国产噜噜av小说| 国产99视频精品免视看7| 欧美边添边摸边做边爱免费| 精品88久久久久88久久久| 99精品人妻国产毛片| 亚洲特黄一级片| 亚洲中文字幕无码av| 男女视频一区二区| 国产九色porny| 欧美一区二区三| 国产chinese精品一区二区| 吞精囗交69激情欧美| 久久艹在线视频| 欧美在线观看在线观看| 欧美一区二区三区在线观看| www.国产高清| 亚洲免费资源在线播放| 欧美日韩高清丝袜| 国产91丝袜在线播放| 国产视频一区二区视频| 欧美成熟视频| 亚洲欧美日韩在线综合| 精品久久ai电影| 亚洲自拍偷拍色片视频| 韩国成人在线| 97国产suv精品一区二区62| 亚洲麻豆精品| 亚洲欧美日韩国产中文专区| www.蜜臀av.com| 欧美日韩一区国产| √资源天堂中文在线| 一区二区三区在线免费播放| 337人体粉嫩噜噜噜| 99热这里都是精品| 亚洲高清av一区二区三区| 久久久国产亚洲精品| 福利视频免费在线观看| 91精品国偷自产在线电影| 蜜桃视频成人| 黑人久久a级毛片免费观看| 成人黄色免费片| 国产精品字幕| 国产ts一区二区| 天堂av在线网| 国内外成人免费激情在线视频 | 日韩精品免费一区二区在线观看| 国产伦精品一区二区三毛| 国产精品成人**免费视频| 国产美女搞久久| 欧美日一区二区三区| 日本一本a高清免费不卡| 麻豆网站免费在线观看| 韩国美女主播一区| 欧美人与禽性xxxxx杂性| 美女精品视频一区| 国产区在线观看| 日韩中文有码在线视频| 日日夜夜精品一区| 亚洲人永久免费| 欧美成人免费| 国产亚洲激情在线| 国产对白叫床清晰在线播放| 亚洲全黄一级网站| yw视频在线观看| 中文字幕v亚洲ⅴv天堂| av在线电影免费观看| 国产一区av在线| 最新国产在线观看| 色yeye香蕉凹凸一区二区av| 日本在线观看视频| 久久精品国产69国产精品亚洲 | 青青免费在线视频| 亚洲精品在线视频| 国产精品影院在线| 视频直播国产精品| a免费在线观看| 久久久久免费精品国产| 成人ssswww在线播放| 国产91精品黑色丝袜高跟鞋| 欧美一区 二区 三区| 国产精品免费久久久| 国产精品美女久久久久| 99精品在线直播| 老牛国内精品亚洲成av人片| 欧美久久久久久一卡四| 欧美码中文字幕在线| 欧美 日韩 国产 在线观看| 综合av在线| 国精产品一区一区三区视频| 三级一区在线视频先锋| 福利在线一区二区三区| 国产在线播放一区三区四| 国产亚洲精品成人a| 91麻豆成人久久精品二区三区| 一级片视频免费看| 自拍偷拍国产精品| 久草精品视频在线观看| 欧美在线一二三四区| 国产精品欧美综合亚洲| 亚洲国模精品私拍| 丁香在线视频| 欧美激情精品久久久久| 神马午夜在线视频| 成人动漫网站在线观看| 国产精品成人自拍| 天堂精品一区二区三区| 国产精品99免费看| 宅男噜噜噜66国产免费观看| 国产精品91xxx| 亚洲自拍偷拍图| 亚洲一区二区三区爽爽爽爽爽| 欧美特黄aaaaaa| 日韩一区二区三区三四区视频在线观看| 五月婷婷伊人网| 日韩中文字幕在线观看| 人人草在线视频| 亚洲mm色国产网站| 九九久久婷婷| 人人干视频在线| 国产在线精品一区在线观看麻豆| 国产美女视频免费观看下载软件| 国产欧美一区二区三区沐欲 | aiai在线| 97欧美精品一区二区三区| 四虎精品永久免费| 欧美二区在线| 激情婷婷亚洲| 激情久久综合网| 欧美国产精品劲爆| 国产农村妇女aaaaa视频| 欧美xxxxxxxxx| 久久精品视频观看| 国产精品jizz在线观看麻豆| 国产精品2023| 亚洲天堂第一区| 久久99在线观看| av永久免费观看| 欧美日韩综合视频| 黄色av网址在线| 久久久999国产精品| 麻豆精品蜜桃| 蜜桃视频成人| 国产欧美日韩一区二区三区在线| 苍井空张开腿实干12次| 亚洲天堂久久久久久久| 中文字幕一区2区3区| 亚洲精品之草原avav久久| 国产福利电影在线播放| 岛国视频一区| 欧美日本不卡高清| 韩国三级丰满少妇高潮| 中文字幕永久在线不卡| 中文字幕视频免费观看| 国产亚洲一区二区精品| 日韩伦理三区| 欧美凹凸一区二区三区视频| 亚洲视频二区| 偷拍女澡堂一区二区三区| 欧美日韩国产麻豆| 亚洲AV成人无码一二三区在线| 97精品国产97久久久久久春色| 视频精品二区| 久久人人爽人人爽人人av| 国产精品一级片在线观看| 男女做暖暖视频| 91精品国产91久久久久久一区二区 | 欧美激情在线观看| 8848成人影院| 黄色片网址在线观看| 91小视频在线| 国产精品va无码一区二区三区| 亚洲精品在线视频| 日韩一级二级| 正在播放精油久久| 国产在线视频不卡二| 久久精品视频免费在线观看| 精品久久久久一区| av电影在线地址| 欧美不卡三区| 老色鬼精品视频在线观看播放| 99自拍偷拍视频| 欧美一区二区啪啪| 51漫画成人app入口| 欧美日韩精品一区| 蜜桃精品在线观看| www.av成人| 亚洲精品一区二区三区香蕉| 亚洲欧美一区二区三区| 日日噜噜噜噜夜夜爽亚洲精品| 九九九久久久精品| 国产在线视频99| 亚洲欧美日韩精品久久| 亚洲成人高清| 青青青在线视频播放| 久久精品在这里| 97国产精品久久久| 国产综合在线视频| 国产亚洲欧美日韩在线观看一区二区 | 免费亚洲精品视频| 久久er精品视频| 国产香蕉在线视频| 国产亚洲精品久久久优势| 国产色99精品9i| 欧美日本视频在线观看| 国产精品人人做人人爽人人添| 99久久久久久久| 欧洲日韩成人av| 亚洲九九在线| 亚洲成人网在线播放| 欧美一区二区三区免费观看视频| а√在线天堂官网| 一本一道久久a久久综合精品 | 官网99热精品| 日韩中文字幕av电影| 免费人成视频在线| 国产一区二区免费| 成人春色在线观看免费网站| 欧美精品久久久久久久久25p| 午夜婷婷国产麻豆精品| 蜜桃视频在线观看www社区| 精品一区在线播放|