亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Oracle數(shù)據(jù)塊的概念總結(jié)

系統(tǒng) 2035 0

Oracle數(shù)據(jù)內(nèi)部的邏輯存儲(chǔ) ?

Oracle存儲(chǔ)數(shù)據(jù)的最小粒度(finest level of granularity)被稱為數(shù)據(jù)塊 (data block)(也叫做邏輯塊 (logical block),Oracle塊 (Oracle block)或頁 (page))。一個(gè)數(shù)據(jù)塊對應(yīng)于磁盤上數(shù)個(gè)字節(jié)(byte)的物理數(shù)據(jù)庫空間。

處于數(shù)據(jù)塊之上的邏輯數(shù)據(jù)庫空間是數(shù)據(jù)擴(kuò)展 (extent)。數(shù)據(jù)擴(kuò)展是為存儲(chǔ)數(shù)據(jù)而分配的一組連續(xù)的數(shù)據(jù)塊。

位于數(shù)據(jù)擴(kuò)展之上的邏輯數(shù)據(jù)庫存儲(chǔ)結(jié)構(gòu)是段 (segment)。段由一組數(shù)據(jù)擴(kuò)展 (extent)構(gòu)成,這些數(shù)據(jù)擴(kuò)展位于同一表空間(tablespace)中,用于存儲(chǔ)各種邏輯數(shù)據(jù)結(jié)構(gòu)。例如每個(gè)表(table)的數(shù)據(jù)都存儲(chǔ)在其自身的數(shù)據(jù)段 (data segment)中,每個(gè)索引(index)的數(shù)據(jù)都存儲(chǔ)在其自身的索引段 (index segment)中。如果表或索引是分區(qū)存儲(chǔ)(partitioned)的,則每個(gè)分區(qū)擁有自己的段。

Oracle為段(segment)分配空間時(shí)以數(shù)據(jù)擴(kuò)展(extent)為單位。當(dāng)段內(nèi)已有的數(shù)據(jù)擴(kuò)展沒有可用空間時(shí),Oracle為此段分配一個(gè)新的數(shù)據(jù)擴(kuò)展。因?yàn)閿?shù)據(jù)擴(kuò)展是隨需分配的,所以一個(gè)段內(nèi)的數(shù)據(jù)擴(kuò)展在磁盤上未必是連續(xù)的。

這三者直接的關(guān)系如下圖

?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Oracle數(shù)據(jù)塊的概念總結(jié)(原創(chuàng)) - czmcj - czmcj 的博客

?


一個(gè)段(segment)以及屬于她的所有數(shù)據(jù)擴(kuò)展(extent)必須包含在同一表空間中。但在一個(gè)表空間內(nèi),屬于同一個(gè)段的數(shù)據(jù)擴(kuò)展可以分布在多個(gè)數(shù)據(jù)文件(datafile)上,即段可以跨文件存儲(chǔ)。但是每個(gè)數(shù)據(jù)擴(kuò)展只能包含于同一個(gè)數(shù)據(jù)文件中。

在用戶分配一個(gè)新的數(shù)據(jù)擴(kuò)展(extent)時(shí),其中的數(shù)據(jù)塊(data block)未必被同時(shí)分配。如果用戶是為某個(gè)數(shù)據(jù)庫對象分配數(shù)據(jù)擴(kuò)展 ,那么數(shù)據(jù)塊也同時(shí)被立即分配并加入可用塊列表(free list)中。如果數(shù)據(jù)擴(kuò)展并非專為某數(shù)據(jù)庫對象分配,那么數(shù)據(jù)塊只在 高水位線 ? (high water mark)移動(dòng)時(shí)才被分配。高水位線是段(segment)中已用和未用空間的邊界。

數(shù)據(jù)塊概述 ?

Oracle對數(shù)據(jù)庫數(shù)據(jù)文件(datafile)中的存儲(chǔ)空間進(jìn)行管理的單位是數(shù)據(jù)塊(data block)。數(shù)據(jù)塊是數(shù)據(jù)庫中最小的(邏輯)數(shù)據(jù)單位。與數(shù)據(jù)塊對應(yīng)的,所有數(shù)據(jù)在操作系統(tǒng)級的最小物理存儲(chǔ)單位是字節(jié)(byte)。每種操作系統(tǒng)都有一個(gè)被稱為塊容量 (block size)的參數(shù)。Oracle每次獲取數(shù)據(jù)時(shí),總是訪問整數(shù)個(gè)(Oracle)數(shù)據(jù)塊,而不是按照操作系統(tǒng)塊的容量訪問數(shù)據(jù)。

數(shù)據(jù)庫中標(biāo)準(zhǔn)的數(shù)據(jù)塊(data block)容量是由初始化參數(shù)? DB_BLOCK_SIZE ? 指定的。除此之外,用戶還可以指定五個(gè)非標(biāo)準(zhǔn)的數(shù)據(jù)塊容量(nonstandard block size,在10g R2 32bit版本中可以指定2k,4k,16k,32k四個(gè)非標(biāo)準(zhǔn)數(shù)據(jù)塊容量)。數(shù)據(jù)塊容量應(yīng)該設(shè)為操作系統(tǒng)塊容量的整數(shù)倍(同時(shí)小于數(shù)據(jù)塊容量的最大限 制),以便減少不必要的I/O操作。Oracle的數(shù)據(jù)塊是Oracle可以使用和分配的最小存儲(chǔ)單位。

數(shù)據(jù)塊結(jié)構(gòu)

在Oracle中,不論數(shù)據(jù)塊中存儲(chǔ)的是表(table)、索引(index)或簇表(clustered data),其內(nèi)部結(jié)構(gòu)都是類似的。下圖說明了數(shù)據(jù)塊的結(jié)構(gòu)

??????????????????????????????????????????????????????????????????????????? Oracle數(shù)據(jù)塊的概念總結(jié) ?????????????????????????????????????????????????????????????

數(shù)據(jù)塊頭(包含可變內(nèi)容和標(biāo)準(zhǔn)內(nèi)容)

標(biāo)準(zhǔn)內(nèi)容:數(shù)據(jù)塊頭中包含了此數(shù)據(jù)塊的概要信息,例如塊地址(block address)及此數(shù)據(jù)塊所屬的段(segment)的類型,例如,表或索引,該部分為??勺儍?nèi)容:ITL(Interested Transaction List)用來記錄該塊所有發(fā)生的事務(wù),一個(gè)itl可以看作是一個(gè)記錄,在一個(gè)時(shí)間,可以記錄一個(gè)事務(wù)(包括提交或者未提交事務(wù))。當(dāng)然,如果這個(gè)事務(wù)已 經(jīng)提交,那么這個(gè)itl的位置就可以被反復(fù)使用了,因?yàn)閕tl類似記錄,所以,有的時(shí)候也叫itl槽位。 如果一個(gè)事務(wù)一直沒有提交,那么,這個(gè)事務(wù)將一直占用一個(gè)itl槽位,itl里面記錄了事務(wù)信息,回滾段的入口,事務(wù)類型等等。如果這個(gè)事務(wù)已經(jīng)提交,那 么,itl槽位中還保存的有這個(gè)事務(wù)提交時(shí)候的SCN號。

表目錄區(qū)

如果一個(gè)數(shù)據(jù)表在此數(shù)據(jù)塊中儲(chǔ)存了數(shù)據(jù)行,那么數(shù)據(jù)表的信息將被記錄在數(shù)據(jù)塊的表目錄區(qū)(table directory)中。

行目錄區(qū)

此區(qū)域包含數(shù)據(jù)塊中存儲(chǔ)的數(shù)據(jù)行的信息(每個(gè)數(shù)據(jù)行片斷(row piece) 在行數(shù)據(jù)區(qū)(row data area)中的地址)。 ? (一個(gè)數(shù)據(jù)塊中可能保存一個(gè)完整的數(shù)據(jù)行,也可能只保存數(shù)據(jù)行的一部分 ,所以文中使用row piece)

當(dāng)一個(gè)數(shù)據(jù)塊(data block)的行目錄區(qū)(row directory)空間被使用后,即使數(shù)據(jù)行被刪除(delete),行目錄區(qū)空間也不會(huì)被回收。舉例來說,當(dāng)一個(gè)曾經(jīng)包含50條記錄的數(shù)據(jù)塊被清空 后,其塊頭(header)的行目錄區(qū)仍然占用100字節(jié)(byte)的空間。只有在數(shù)據(jù)塊中插入(insert)新數(shù)據(jù)時(shí),行目錄區(qū)空間才會(huì)被重新利用。

管理開銷

數(shù)據(jù)塊頭(data block header),表目錄區(qū)(table directory),行目錄區(qū)(row directory)被統(tǒng)稱為管理開銷。其中 有些開銷的容量是固定的;而有些開銷的總?cè)萘渴强勺兊?ITL)。數(shù)據(jù)塊中固定及可變管理開銷的容量平均在84到107字節(jié)(byte)之間。

行數(shù)據(jù)

數(shù)據(jù)塊(data block)中行數(shù)據(jù)區(qū)(row data)包含了表或索引的實(shí)際數(shù)據(jù)。一個(gè)數(shù)據(jù)行可以跨多個(gè)數(shù)據(jù)塊(是行鏈接和行遷移下文會(huì)講到)

可用空間

在插入新數(shù)據(jù)行,或在更新數(shù)據(jù)行需要更多空間時(shí)(例如,原來某行最后一個(gè)字段為空(trailing null),現(xiàn)在要更新為非空值),將使用可用空間區(qū)(free space)中的空間。

如果一個(gè)數(shù)據(jù)塊(data block)屬于表或簇表的數(shù)據(jù)段(data segment),或?qū)儆谒饕乃饕危╥ndex segment),那么在其數(shù)據(jù)塊頭中還可能會(huì)存儲(chǔ)事務(wù)條目 。如果一個(gè)數(shù)據(jù)塊中的數(shù)據(jù)行正在由? INSERT, ? UPDATE, ? DELETE,及 SELECT...FOR UPDATE 語句訪問,此數(shù)據(jù)塊中就需要保存事務(wù)條目。

事務(wù)條目所需的存儲(chǔ)空間依據(jù)操作系統(tǒng)而定。在常見的操作系統(tǒng)中事務(wù)條目大約需要占用23字節(jié)(byte )。

數(shù)據(jù)塊中的可用空間管理

數(shù)據(jù)庫中段的管理方式?jīng)Q定了數(shù)據(jù)塊中可用空間的管理方式。的可用空間可以被自動(dòng)管理。段內(nèi)的可用/已用空間以位圖(bitmap)形式記錄(自動(dòng)管理模式下),這與手動(dòng)管理采用free list以列表方式的管理不同。段空間自動(dòng)管理(Automatic segment-space management)具備以下優(yōu)勢:

1、空間利用效率更高,尤其針對每行數(shù)據(jù)容量差異大的表(或其他對象)

2、能夠更好地針對當(dāng)前數(shù)據(jù)的情況實(shí)時(shí)調(diào)整

3、易于使用

4、在RAC環(huán)境下能更好的提升性能和空間利用(個(gè)人認(rèn)為是因?yàn)榈谝缓偷诙c(diǎn)的優(yōu)勢在RAC環(huán)境下能更明顯的體現(xiàn)出來的原因。)

用戶可以在創(chuàng)建一個(gè)本地管理的表空間(locally managed tablespace)時(shí)選擇自動(dòng)段空間管理(automatic segment-space management)功能。這樣在此表空間內(nèi)創(chuàng)建的段都將默認(rèn)地設(shè)置為自動(dòng)段空間管理。

數(shù)據(jù)塊可用空間的有效性及優(yōu)化

有兩種SQL語句可以增加數(shù)據(jù)塊中的可用空間:分別是? DELETE ? 語句,和將現(xiàn)有數(shù)據(jù)值更新為占用容量更小值的? UPDATE 語句。在以下兩種條件下,上述兩中操作釋放的空間可以被后續(xù)的? INSERT ? 語句使用:

如果? INSERT ? 語句與上述兩種操作在同一事務(wù)(transaction)中,且位于釋放空間的語句之后,那么? INSERT ? 語句可以使用被釋放的空間。

如果? INSERT ? 語句與釋放空間的語句在不同的事務(wù)中(比如兩者是由不同的用戶提交的),那么只有在釋放空間的語句提交后,且插入數(shù)據(jù)必需使用此數(shù)據(jù)塊時(shí), ? INSERT ? 語句才會(huì)使用被釋放的空間。

數(shù)據(jù)塊(data block)中被釋放出的空間未必與可用空間區(qū)(free space)相連續(xù)。Oracle在滿足以下條件時(shí)才會(huì)將釋放的空間合并到可用空間區(qū):(1) ? INSERT ? 或? UPDATE ? 語句選中了一個(gè)有足夠可用空間容納新數(shù)據(jù)的數(shù)據(jù)塊,(2)但是此塊中的可用空間不連續(xù),數(shù)據(jù)無法被寫入到數(shù)據(jù)塊中連續(xù)的空間里。Oracle只在 滿足上述條件時(shí)才對數(shù)據(jù)塊中的可用空間進(jìn)行合并,這樣做是為了避免過于頻繁的空間合并工作影響數(shù)據(jù)庫性能。

數(shù)據(jù)塊中行片段

Oracle 使用一個(gè)或多個(gè)行片斷(row piece)來存儲(chǔ)表的每一行數(shù)據(jù)的前255列。當(dāng)一個(gè)數(shù)據(jù)塊(data block)可以容納一個(gè)完整的數(shù)據(jù)行時(shí)(且表的列數(shù)小于等于 256),那么此行就可以使用一個(gè)行片斷來存儲(chǔ)。當(dāng)插入(insert)一個(gè)數(shù)據(jù)行,或更新(update)已有數(shù)據(jù)行時(shí),數(shù)據(jù)行容量大于數(shù)據(jù)塊容量,那么 Oracle 將使用多個(gè)行片斷來存儲(chǔ)此行。大多數(shù)情況下,每個(gè)數(shù)據(jù)行只存儲(chǔ)于一個(gè)行片斷中,且在同一數(shù)據(jù)塊內(nèi)。

有兩種情況會(huì)導(dǎo)致表中某行數(shù)據(jù)過大,一個(gè)數(shù)據(jù)塊(data block)無法容納。

第一種情況,行鏈接

當(dāng)一行數(shù)據(jù)被插入時(shí)一個(gè)數(shù)據(jù)塊就無法容納 ? 。在這種情況下Oracle將這行數(shù)據(jù)存儲(chǔ)在段內(nèi)的一個(gè)數(shù)據(jù)塊鏈 (chain)中。在插入數(shù)據(jù)量大的行時(shí)常會(huì)發(fā)生行鏈接(row chaining),例如一個(gè)包含數(shù)據(jù)類型為? LONG ? 或? LONG RAW? 列的數(shù)據(jù)行。此時(shí)行鏈接不可避免。當(dāng) Oracle 必須使用多個(gè)行片斷來存儲(chǔ)同一數(shù)據(jù)行時(shí)(且每個(gè)行片斷位于不同的數(shù)據(jù)塊內(nèi)),此行將在多個(gè)數(shù)據(jù)塊間構(gòu)成行鏈接 (Row Chaining)。

當(dāng)一個(gè)表超過 255 列時(shí),每行第255列之后的數(shù)據(jù)將作為一個(gè)新的行片斷(row piece)存儲(chǔ)在相同的數(shù)據(jù)塊(data block)中,這被稱為塊內(nèi)鏈接 (intra-block chaining)。由多個(gè)行片斷組成的行進(jìn)行塊內(nèi)鏈接時(shí),使用各行片斷的 rowid 進(jìn)行鏈接。當(dāng)一個(gè)行為塊內(nèi)鏈接時(shí),用戶可以從同一數(shù)據(jù)塊中訪問此行的全部數(shù)據(jù)。如果一個(gè)數(shù)據(jù)行位于同一數(shù)據(jù)塊內(nèi),那么訪問此行不會(huì)影響 I/O 性能,因?yàn)樵L問此行不會(huì)帶來額外的 I/O 開銷。

行遷移

原本存儲(chǔ)在一個(gè)數(shù)據(jù)塊(data block)內(nèi)的數(shù)據(jù)行,因?yàn)楦虏僮鲗?dǎo)致長度增長,而所在數(shù)據(jù)塊的可用空間也不能容納增長后的數(shù)據(jù)行 ? 。在這種情況下,Oracle將此行數(shù)據(jù)遷移到新的數(shù)據(jù)塊中。Oracle在被遷移數(shù)據(jù)行原來所在位置保存一個(gè)指向新數(shù)據(jù)塊的指針。被遷移數(shù)據(jù)行的 rowid 保持不變。

當(dāng)數(shù)據(jù)行發(fā)生鏈接(chain)或遷移(migrate)時(shí),對其訪問將會(huì)造成 I/O 性能降低,因?yàn)镺racle為獲取這些數(shù)據(jù)行的數(shù)據(jù)時(shí),必須訪問更多的數(shù)據(jù)塊(data block)。

PCTUSED、PCTFREE

在手動(dòng)管理的表空間(manually managed tablespaces)中,用戶可以使用? PCTFREE ? 和? PCTUSED? 這兩個(gè)存儲(chǔ)管理參數(shù)來控制對某段(segment)進(jìn)行插入和更新操作時(shí),如何利用屬于此段的數(shù)據(jù)塊(data block)中的可用空間。用戶也可以在創(chuàng)建或修改索引時(shí)為其設(shè)定? PCTFREE ? 參數(shù)(索引存儲(chǔ)在索引段(index segment)中)。

PCTFREE

PCTFREE ? 參數(shù)用來設(shè)置一個(gè)數(shù)據(jù)塊(data block)中至少需要保留 (reserve)多少可用空間(百分比值),為數(shù)據(jù)塊中已有數(shù)據(jù)更新時(shí)可能發(fā)生的數(shù)據(jù)量增長做準(zhǔn)備。例如,當(dāng)用戶用 ? CREATE TABLE ? 語句創(chuàng)建表時(shí)指定了以下參數(shù): ? PCTFREE 20。

這個(gè)參數(shù)設(shè)定了此表對應(yīng)的數(shù)據(jù)段(data segment)中的每個(gè)數(shù)據(jù)塊(data block)至少保留20%的可用空間,以備塊中已有數(shù)據(jù)更新時(shí)使用。只要數(shù)據(jù)塊中行數(shù)據(jù)區(qū)與數(shù)據(jù)塊頭的容量之和不超過數(shù)據(jù)塊總?cè)萘康?0%,用戶就可以向其中插入新數(shù)據(jù),數(shù)據(jù)行被放入行數(shù)據(jù)區(qū)(row data area),相關(guān)信息被寫入數(shù)據(jù)塊頭(overhead area)。下圖說明了? PCTFREE ? 的作用。

?

?????????????????????????????????????????????????????????????????????? Oracle數(shù)據(jù)塊的概念總結(jié)

?

PCTUSED

PCTUSED ? 參數(shù)用于決定一個(gè)數(shù)據(jù)塊(data block)是否可被用于插入新數(shù)據(jù),她的依據(jù)是數(shù)據(jù)區(qū)(row data)與數(shù)據(jù)塊頭(overhead)的容量之和占數(shù)據(jù)塊全部容量的最大百分比。當(dāng)一個(gè)數(shù)據(jù)塊中的可用空間比例小于? PCTFREE? 參數(shù)的規(guī)定時(shí),Oracle就認(rèn)為此數(shù)據(jù)塊無法被用于插入新數(shù)據(jù),直到數(shù)據(jù)塊中的占用容量比例小于? PCTUSED? 參數(shù)的限定。 ? 在數(shù)據(jù)塊中的可用空間PCTFREE重新大于且占用容量比例大于 PCTUSED 參數(shù)的限定之前,Oracle只在更新數(shù)據(jù)塊內(nèi)已有數(shù)據(jù)時(shí)才會(huì)使用此數(shù)據(jù)塊的可用空間,插入操作不使用該數(shù)據(jù)塊的可用空間 ? 。例如,當(dāng)用戶用 ? CREATE TABLE ? 語句創(chuàng)建表時(shí)指定了以下參數(shù):PCTUSED 40。

在例子中,當(dāng)此表的某數(shù)據(jù)塊占用容量比例高于40%時(shí),Oracle不會(huì)將此數(shù)據(jù)塊用于插入新數(shù)據(jù)行(假設(shè)此數(shù)據(jù)塊的可用空間曾經(jīng)低于? PCTFREE ? 的限定)。 下圖說明了? PCTUSED ? 的作用。

???????????????????????????????????????????????????????????????????? Oracle數(shù)據(jù)塊的概念總結(jié)

?

?

在新分配的數(shù)據(jù)塊中(data block),可用于插入(insert)數(shù)據(jù)的空間等于數(shù)據(jù)塊總?cè)萘繙p去數(shù)據(jù)塊頭(block overhead)再減去預(yù)留可用空間( ? PCTFREE ? )。而更新(update)數(shù)據(jù)塊內(nèi)已有數(shù)據(jù)可使用數(shù)據(jù)塊中的所有可用空間。因此,更新操作能夠使數(shù)據(jù)塊內(nèi)的可用空間低于的? PCTFREE ? 限制,因?yàn)檫@些空間是專為更新操作而預(yù)留的。

在每個(gè)數(shù)據(jù)段(data segment)與索引段(index segment)中,選擇段的手動(dòng)方式時(shí),ORACLE管理著一個(gè)或多個(gè)可用塊列表(free list)--其中列出了所有屬于此段的數(shù)據(jù)擴(kuò)展(extent),且可用空間比例大于? PCTFREE? 限定的數(shù)據(jù)塊。這些塊可以被插入(insert)操作使用。 ? 當(dāng)用戶提交了 INSERT 語句后,Oracle從free list列表中選擇第一個(gè)有效的數(shù)據(jù)塊使用。如果此數(shù)據(jù)塊的可用空間不夠容納? INSERT 語句提交的數(shù)據(jù),且此塊的占用容量已經(jīng)超過 ? PCTUSED 的限定,Oracle就將其從可用塊列表中移出。一個(gè)段可以同時(shí)使用多個(gè)可用塊列表,以減少對一個(gè)表進(jìn)行并發(fā)插入時(shí)產(chǎn)生的競爭。

當(dāng)用戶提交了? DELETE 或? UPDATE 語句后,Oracle處理語句并檢查相關(guān)數(shù)據(jù)塊中的占用空間比例是否小于? PCTUSED 的規(guī)定。如果滿足,那么這個(gè)數(shù)據(jù)塊就被放入當(dāng)前事務(wù)正在使用的可用塊列表(free list)的頭部,如果當(dāng)前事務(wù)還需要寫入數(shù)據(jù),此塊將被首先使用。當(dāng)事務(wù)提交后,此數(shù)據(jù)塊中的可用空間還可被其他事務(wù)使用。

在段的手動(dòng)管理模式下塊的空間管理可參見下圖

Oracle數(shù)據(jù)塊的概念總結(jié)


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會(huì)非常 感謝您的哦!??!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产成人精品男人的天堂网站 | 经典邵氏三级 在线观看 | 91精品成人免费国产片 | 情欲综合网 | 亚洲另类老妇videos | 日本黄色mv| 正在播放亚洲一区 | 免费福利网站在线观看 | 亚洲综合成人网在线观看 | 婷婷亚洲五月 | 国产一级高清 | 久久精品一区二区三区资源网 | 亚洲涩涩精品专区 | 激情午夜网 | 国产成人综合高清在线观看 | 日韩爱爱小视频 | 97精品国产综合久久久久久欧美 | 爆操极品美女 | 欧美aⅴ在线 | 小明看看成人免费 | 好吊788gaoco| 日本人69视频页码jlzz | 国产在线一区二区三区欧美 | 国产成人精品亚洲日本在线 | 久久97精品久久久久久清纯 | 东京干手机福利视频 | 成人 亚洲 | 精品亚洲无人区一区二区 | 99久久综合久中文字幕 | 欧美在线视频在线观看 | 九九久久久久午夜精选 | 高清一级做a爱过程免费视频 | a免费国产一级特黄aa大 | 天海翼一区二区三区免费 | 91在线视频在线观看 | 午夜久久久久久网站 | 亚洲成年人在线 | 国产在线观看成人免费视频 | 欧美在线视频一区二区 | 欧美另类性视频在线看 | 成人啪啪97丁香 |