日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Oracle、SQL Server中如何鎖定DB和解鎖DB

瀏覽:233日期:2023-11-06 11:53:48

今天有同事問(wèn)到關(guān)于多人同時(shí)更新和操作DB時(shí),如何防止數(shù)據(jù)沖突的問(wèn)題,整理了一篇文檔,雖然不是原創(chuàng),但對(duì)于理解數(shù)據(jù)庫(kù)的鎖定,DB解鎖等都有一定的幫助。

一. 為什么要引入鎖

多個(gè)用戶同時(shí)對(duì)數(shù)據(jù)庫(kù)的并發(fā)操作時(shí)會(huì)帶來(lái)以下數(shù)據(jù)不一致的問(wèn)題:

丟失更新

A,B兩個(gè)用戶讀同一數(shù)據(jù)并進(jìn)行修改,其中一個(gè)用戶的修改結(jié)果破壞了另一個(gè)修改的結(jié)果,比如訂票系統(tǒng)

臟讀

A用戶修改了數(shù)據(jù),隨后B用戶又讀出該數(shù)據(jù),但A用戶因?yàn)槟承┰蛉∠藢?duì)數(shù)據(jù)的修改,數(shù)據(jù)恢復(fù)原值,此時(shí)B得到的數(shù)據(jù)就與數(shù)據(jù)庫(kù)內(nèi)的數(shù)據(jù)產(chǎn)生了不一致

不可重復(fù)讀

A用戶讀取數(shù)據(jù),隨后B用戶讀出該數(shù)據(jù)并修改,此時(shí)A用戶再讀取數(shù)據(jù)時(shí)發(fā)現(xiàn)前后兩次的值不一致

并發(fā)控制的主要方法是封鎖,鎖就是在一段時(shí)間內(nèi)禁止用戶做某些操作以避免產(chǎn)生數(shù)據(jù)不一致

二 鎖的分類

鎖的類別有兩種分法:

1. 從數(shù)據(jù)庫(kù)系統(tǒng)的角度來(lái)看:分為獨(dú)占鎖(即排它鎖),共享鎖和更新鎖

MS-SQL Server 使用以下資源鎖模式。

鎖模式 描述

共享 (S) 用于不更改或不更新數(shù)據(jù)的操作(只讀操作),如 SELECT 語(yǔ)句。

更新 (U) 用于可更新的資源中。防止當(dāng)多個(gè)會(huì)話在讀取、鎖定以及隨后可能進(jìn)行的資源更新時(shí)發(fā)生常見形式的死鎖。

排它 (X) 用于數(shù)據(jù)修改操作,例如 INSERT、UPDATE 或 DELETE。確保不會(huì)同時(shí)同一資源進(jìn)行多重更新。

意向鎖 用于建立鎖的層次結(jié)構(gòu)。意向鎖的類型為:意向共享 (IS)、意向排它 (IX) 以及與意向排它共享 (SIX)。

架構(gòu)鎖 在執(zhí)行依賴于表架構(gòu)的操作時(shí)使用。架構(gòu)鎖的類型為:架構(gòu)修改 (Sch-M) 和架構(gòu)穩(wěn)定性 (Sch-S)。

大容量更新 (BU) 向表中大容量復(fù)制數(shù)據(jù)并指定了 TABLOCK 提示時(shí)使用。

共享鎖

共享 (S) 鎖允許并發(fā)事務(wù)讀取 (SELECT) 一個(gè)資源。資源上存在共享 (S) 鎖時(shí),任何其它事務(wù)都不能修改數(shù)據(jù)。一旦已經(jīng)讀取數(shù)據(jù),便立即釋放資源上的共享 (S) 鎖,除非將事務(wù)隔離級(jí)別設(shè)置為可重復(fù)讀或更高級(jí)別,或者在事務(wù)生存周期內(nèi)用鎖定提示保留共享 (S) 鎖。

更新鎖

更新 (U) 鎖可以防止通常形式的死鎖。一般更新模式由一個(gè)事務(wù)組成,此事務(wù)讀取記錄,獲取資源(頁(yè)或行)的共享 (S) 鎖,然后修改行,此操作要求鎖轉(zhuǎn)換為排它 (X) 鎖。如果兩個(gè)事務(wù)獲得了資源上的共享模式鎖,然后試圖同時(shí)更新數(shù)據(jù),則一個(gè)事務(wù)嘗試將鎖轉(zhuǎn)換為排它 (X) 鎖。共享模式到排它鎖的轉(zhuǎn)換必須等待一段時(shí)間,因?yàn)橐粋€(gè)事務(wù)的排它鎖與其它事務(wù)的共享模式鎖不兼容;發(fā)生鎖等待。第二個(gè)事務(wù)試圖獲取排它 (X) 鎖以進(jìn)行更新。由于兩個(gè)事務(wù)都要轉(zhuǎn)換為排它 (X) 鎖,并且每個(gè)事務(wù)都等待另一個(gè)事務(wù)釋放共享模式鎖,因此發(fā)生死鎖。

若要避免這種潛在的死鎖問(wèn)題,請(qǐng)使用更新 (U) 鎖。一次只有一個(gè)事務(wù)可以獲得資源的更新 (U) 鎖。如果事務(wù)修改資源,則更新 (U) 鎖轉(zhuǎn)換為排它 (X) 鎖。否則,鎖轉(zhuǎn)換為共享鎖。

排它鎖

排它 (X) 鎖可以防止并發(fā)事務(wù)對(duì)資源進(jìn)行訪問(wèn)。其它事務(wù)不能讀取或修改排它 (X) 鎖鎖定的數(shù)據(jù)。

意向鎖

意向鎖表示 SQL Server 需要在層次結(jié)構(gòu)中的某些底層資源上獲取共享 (S) 鎖或排它 (X) 鎖。例如,放置在表級(jí)的共享意向鎖表示事務(wù)打算在表中的頁(yè)或行上放置共享 (S) 鎖。在表級(jí)設(shè)置意向鎖可防止另一個(gè)事務(wù)隨后在包含那一頁(yè)的表上獲取排它 (X) 鎖。意向鎖可以提高性能,因?yàn)?SQL Server 僅在表級(jí)檢查意向鎖來(lái)確定事務(wù)是否可以安全地獲取該表上的鎖。而無(wú)須檢查表中的每行或每頁(yè)上的鎖以確定事務(wù)是否可以鎖定整個(gè)表。

意向鎖包括意向共享 (IS)、意向排它 (IX) 以及與意向排它共享 (SIX)。

鎖模式 描述

意向共享 (IS) 通過(guò)在各資源上放置 S 鎖,表明事務(wù)的意向是讀取層次結(jié)構(gòu)中的部分(而不是全部)底層資源。

意向排它 (IX) 通過(guò)在各資源上放置 X 鎖,表明事務(wù)的意向是修改層次結(jié)構(gòu)中的部分(而不是全部)底層資源。IX 是 IS 的超集。

與意向排它共享 (SIX) 通過(guò)在各資源上放置 IX 鎖,表明事務(wù)的意向是讀取層次結(jié)構(gòu)中的全部底層資源并修改部分(而不是全部)底層資源。允許頂層資源上的并發(fā) IS 鎖。例如,表的 SIX 鎖在表上放置一個(gè) SIX 鎖(允許并發(fā) IS 鎖),在當(dāng)前所修改頁(yè)上放置 IX 鎖(在已修改行上放置 X 鎖)。雖然每個(gè)資源在一段時(shí)間內(nèi)只能有一個(gè) SIX 鎖,以防止其它事務(wù)對(duì)資源進(jìn)行更新,但是其它事務(wù)可以通過(guò)獲取表級(jí)的 IS 鎖來(lái)讀取層次結(jié)構(gòu)中的底層資源。

獨(dú)占鎖:只允許進(jìn)行鎖定操作的程序使用,其他任何對(duì)他的操作均不會(huì)被接受。執(zhí)行數(shù)據(jù)更新命令時(shí),SQL Server會(huì)自動(dòng)使用獨(dú)占鎖。當(dāng)對(duì)象上有其他鎖存在時(shí),無(wú)法對(duì)其加獨(dú)占鎖。

共享鎖:共享鎖鎖定的資源可以被其他用戶讀取,但其他用戶無(wú)法修改它,在執(zhí)行Select時(shí),SQL Server會(huì)對(duì)對(duì)象加共享鎖。

更新鎖:當(dāng)SQL Server準(zhǔn)備更新數(shù)據(jù)時(shí),它首先對(duì)數(shù)據(jù)對(duì)象作更新鎖鎖定,這樣數(shù)據(jù)將不能被修改,但可以讀取。等到SQL Server確定要進(jìn)行更新數(shù)據(jù)操作時(shí),他會(huì)自動(dòng)將更新鎖換為獨(dú)占鎖,當(dāng)對(duì)象上有其他鎖存在時(shí),無(wú)法對(duì)其加更新鎖。

2. 從程序員的角度看:分為樂(lè)觀鎖和悲觀鎖

樂(lè)觀鎖:完全依靠數(shù)據(jù)庫(kù)來(lái)管理鎖的工作。

悲觀鎖:程序員自己管理數(shù)據(jù)或?qū)ο笊系逆i處理。

MS-SQLSERVER 使用鎖在多個(gè)同時(shí)在數(shù)據(jù)庫(kù)內(nèi)執(zhí)行修改的用戶間實(shí)現(xiàn)悲觀并發(fā)控制

三 鎖的粒度

鎖粒度是被封鎖目標(biāo)的大小,封鎖粒度小則并發(fā)性高,但開銷大,封鎖粒度大則并發(fā)性低但開銷小

SQL Server支持的鎖粒度可以分為為行、頁(yè)、鍵、鍵范圍、索引、表或數(shù)據(jù)庫(kù)獲取鎖

資源 描述

RID 行標(biāo)識(shí)符。用于單獨(dú)鎖定表中的一行。

鍵 索引中的行鎖。用于保護(hù)可串行事務(wù)中的鍵范圍。

頁(yè) 8 千字節(jié) (KB) 的數(shù)據(jù)頁(yè)或索引頁(yè)。

擴(kuò)展盤區(qū) 相鄰的八個(gè)數(shù)據(jù)頁(yè)或索引頁(yè)構(gòu)成的一組。

表 包括所有數(shù)據(jù)和索引在內(nèi)的整個(gè)表。

DB 數(shù)據(jù)庫(kù)。

四 鎖定時(shí)間的長(zhǎng)短

鎖保持的時(shí)間長(zhǎng)度為保護(hù)所請(qǐng)求級(jí)別上的資源所需的時(shí)間長(zhǎng)度。

用于保護(hù)讀取操作的共享鎖的保持時(shí)間取決于事務(wù)隔離級(jí)別。采用 READ COMMITTED 的默認(rèn)事務(wù)隔離級(jí)別時(shí),只在讀取頁(yè)的期間內(nèi)控制共享鎖。在掃描中,直到在掃描內(nèi)的下一頁(yè)上獲取鎖時(shí)才釋放鎖。如果指定 HOLDLOCK 提示或者將事務(wù)隔離級(jí)別設(shè)置為 REPEATABLE READ 或 SERIALIZABLE,則直到事務(wù)結(jié)束才釋放鎖。

根據(jù)為游標(biāo)設(shè)置的并發(fā)選項(xiàng),游標(biāo)可以獲取共享模式的滾動(dòng)鎖以保護(hù)提取。當(dāng)需要滾動(dòng)鎖時(shí),直到下一次提取或關(guān)閉游標(biāo)(以先發(fā)生者為準(zhǔn))時(shí)才釋放滾動(dòng)鎖。但是,如果指定 HOLDLOCK,則直到事務(wù)結(jié)束才釋放滾動(dòng)鎖。

用于保護(hù)更新的排它鎖將直到事務(wù)結(jié)束才釋放。

如果一個(gè)連接試圖獲取一個(gè)鎖,而該鎖與另一個(gè)連接所控制的鎖沖突,則試圖獲取鎖的連接將一直阻塞到:

將沖突鎖釋放而且連接獲取了所請(qǐng)求的鎖。

連接的超時(shí)間隔已到期。默認(rèn)情況下沒有超時(shí)間隔,但是一些應(yīng)用程序設(shè)置超時(shí)間隔以防止無(wú)限期等待

五 SQL Server 中鎖的自定義

1 處理死鎖和設(shè)置死鎖優(yōu)先級(jí)

死鎖就是多個(gè)用戶申請(qǐng)不同封鎖,由于申請(qǐng)者均擁有一部分封鎖權(quán)而又等待其他用戶擁有的部分封鎖而引起的無(wú)休止的等待

可以使用SET DEADLOCK_PRIORITY控制在發(fā)生死鎖情況時(shí)會(huì)話的反應(yīng)方式。如果兩個(gè)進(jìn)程都鎖定數(shù)據(jù),并且直到其它進(jìn)程釋放自己的鎖時(shí),每個(gè)進(jìn)程才能釋放自己的鎖,即發(fā)生死鎖情況。

2 處理超時(shí)和設(shè)置鎖超時(shí)持續(xù)時(shí)間

@@LOCK_TIMEOUT 返回當(dāng)前會(huì)話的當(dāng)前鎖超時(shí)設(shè)置,單位為毫秒

SET LOCK_TIMEOUT 設(shè)置允許應(yīng)用程序設(shè)置語(yǔ)句等待阻塞資源的最長(zhǎng)時(shí)間。當(dāng)語(yǔ)句等待的時(shí)間大于 LOCK_TIMEOUT 設(shè)置時(shí),系統(tǒng)將自動(dòng)取消阻塞的語(yǔ)句,并給應(yīng)用程序返回'已超過(guò)了鎖請(qǐng)求超時(shí)時(shí)段'的 1222 號(hào)錯(cuò)誤信息

示例

下例將鎖超時(shí)期限設(shè)置為 1,800 毫秒。

SET LOCK_TIMEOUT 1800

3) 設(shè)置事務(wù)隔離級(jí)別。

4 ) 對(duì) SELECT、INSERT、UPDATE 和 DELETE 語(yǔ)句使用表級(jí)鎖定提示。

5) 配置索引的鎖定粒度

可以使用 sp_indexoption 系統(tǒng)存儲(chǔ)過(guò)程來(lái)設(shè)置用于索引的鎖定粒度

六 查看鎖的信息

1 執(zhí)行 EXEC SP_LOCK 報(bào)告有關(guān)鎖的信息

2 查詢分析器中按Ctrl+2可以看到鎖的信息

七 使用注意事項(xiàng)

如何避免死鎖

1 使用事務(wù)時(shí),盡量縮短事務(wù)的邏輯處理過(guò)程,及早提交或回滾事務(wù);

2 設(shè)置死鎖超時(shí)參數(shù)為合理范圍,如:3分鐘-10分種;超過(guò)時(shí)間,自動(dòng)放棄本次操作,避免進(jìn)程懸掛;

3 優(yōu)化程序,檢查并避免死鎖現(xiàn)象出現(xiàn);

4 .對(duì)所有的腳本和SP都要仔細(xì)測(cè)試,在正是版本之前。

5 所有的SP都要有錯(cuò)誤處理(通過(guò)@error)

6 一般不要修改SQL SERVER事務(wù)的默認(rèn)級(jí)別。不推薦強(qiáng)行加鎖

解決問(wèn)題 如何對(duì)行 表 數(shù)據(jù)庫(kù)加鎖

八 幾個(gè)有關(guān)鎖的問(wèn)題

1 如何鎖一個(gè)表的某一行

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED

SELECT * FROM table ROWLOCK WHERE id = 1

2 鎖定數(shù)據(jù)庫(kù)的一個(gè)表

SELECT * FROM table WITH (HOLDLOCK)

加鎖語(yǔ)句:

sybase:

update 表 set col1=col1 where 1=0 ;

MSSQL:

select col1 from 表 (tablockx) where 1=0 ;

oracle:

LOCK TABLE 表 IN EXCLUSIVE MODE ;

加鎖后其它人不可操作,直到加鎖用戶解鎖,用commit或rollback解鎖

幾個(gè)例子幫助大家加深印象

設(shè)table1(A,B,C)

A B C

a1 b1 c1

a2 b2 c2

a3 b3 c3

1)排它鎖

新建兩個(gè)連接

在第一個(gè)連接中執(zhí)行以下語(yǔ)句

begin tran

update table1

set A='aa'

where B='b2'

waitfor delay '00:00:30' --等待30秒

commit tran

在第二個(gè)連接中執(zhí)行以下語(yǔ)句

begin tran

select * from table1

where B='b2'

commit tran

若同時(shí)執(zhí)行上述兩個(gè)語(yǔ)句,則select查詢必須等待update執(zhí)行完畢才能執(zhí)行即要等待30秒

2)共享鎖

在第一個(gè)連接中執(zhí)行以下語(yǔ)句

begin tran

select * from table1 holdlock -holdlock人為加鎖

where B='b2'

waitfor delay '00:00:30' --等待30秒

commit tran

在第二個(gè)連接中執(zhí)行以下語(yǔ)句

begin tran

select A,C from table1

where B='b2'

update table1

set A='aa'

where B='b2'

commit tran

若同時(shí)執(zhí)行上述兩個(gè)語(yǔ)句,則第二個(gè)連接中的select查詢可以執(zhí)行

而update必須等待第一個(gè)事務(wù)釋放共享鎖轉(zhuǎn)為排它鎖后才能執(zhí)行 即要等待30秒

3)死鎖

增設(shè)table2(D,E)

D E

d1 e1

d2 e2

在第一個(gè)連接中執(zhí)行以下語(yǔ)句

begin tran

update table1

set A='aa'

where B='b2'

waitfor delay '00:00:30'

update table2

set D='d5'

where E='e1'

commit tran

在第二個(gè)連接中執(zhí)行以下語(yǔ)句

begin tran

update table2

set D='d5'

where E='e1'

waitfor delay '00:00:10'

update table1

set A='aa'

where B='b2'

commit tran

同時(shí)執(zhí)行,系統(tǒng)會(huì)檢測(cè)出死鎖,并中止進(jìn)程

補(bǔ)充一點(diǎn):

Sql Server2000支持的表級(jí)鎖定提示

HOLDLOCK 持有共享鎖,直到整個(gè)事務(wù)完成,應(yīng)該在被鎖對(duì)象不需要時(shí)立即釋放,等于SERIALIZABLE事務(wù)隔離級(jí)別

NOLOCK 語(yǔ)句執(zhí)行時(shí)不發(fā)出共享鎖,允許臟讀 ,等于 READ UNCOMMITTED事務(wù)隔離級(jí)別

PAGLOCK 在使用一個(gè)表鎖的地方用多個(gè)頁(yè)鎖

READPAST 讓sql server跳過(guò)任何鎖定行,執(zhí)行事務(wù),適用于READ UNCOMMITTED事務(wù)隔離級(jí)別只跳過(guò)RID鎖,不跳過(guò)頁(yè),區(qū)域和表鎖

ROWLOCK 強(qiáng)制使用行鎖

TABLOCKX 強(qiáng)制使用獨(dú)占表級(jí)鎖,這個(gè)鎖在事務(wù)期間阻止任何其他事務(wù)使用這個(gè)表

UPLOCK 強(qiáng)制在讀表時(shí)使用更新而不用共享鎖

應(yīng)用程序鎖:

應(yīng)用程序鎖就是客戶端代碼生成的鎖,而不是sql server本身生成的鎖

處理應(yīng)用程序鎖的兩個(gè)過(guò)程

sp_getapplock 鎖定應(yīng)用程序資源

sp_releaseapplock 為應(yīng)用程序資源解鎖

注意: 鎖定數(shù)據(jù)庫(kù)的一個(gè)表的區(qū)別

SELECT * FROM table WITH (HOLDLOCK) 其他事務(wù)可以讀取表,但不能更新刪除

SELECT * FROM table WITH (TABLOCKX) 其他事務(wù)不能讀取表,更新和刪除

日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
四虎精品一区二区免费| 99久久激情| 91精品丝袜国产高跟在线| 麻豆一区二区99久久久久| yellow在线观看网址| 中文字幕免费一区二区| 精品视频国产| 综合一区二区三区| 成人日韩精品| 91嫩草精品| 美女精品久久| 久久亚洲在线| 国产不卡av一区二区| 欧美日一区二区三区在线观看国产免| 免费av一区| av资源亚洲| 国产一区二区三区四区五区传媒| 亚洲制服欧美另类| 红桃视频国产精品| 亚洲成av人片一区二区密柚| 国产精品玖玖玖在线资源| 亚洲日韩视频| 国产视频久久| 九九在线精品| 另类中文字幕国产精品| 高清av一区| 中文精品电影| 久久一二三区| 视频一区免费在线观看| 亚洲午夜精品久久久久久app| 久久亚洲人体| 国精品产品一区| 中文字幕在线免费观看视频| 国内精品伊人| 成人国产综合| 成人小电影网站| 日韩精品免费一区二区三区| 国产伦久视频在线观看| 成人午夜网址| av中文资源在线资源免费观看| 色婷婷综合网| 国产精品一区二区美女视频免费看 | 亚洲精品欧洲| 日韩av影院| 久久久久亚洲精品中文字幕| 久久激情网站| 日韩高清在线观看一区二区| 国产精品草草| 亚洲一区网站| 日韩精品乱码av一区二区| 日韩精品一级二级 | 亚洲一区二区三区四区五区午夜| 最新国产精品久久久| 精品视频免费| 亚洲免费一区三区| 日韩伦理在线一区| 视频一区欧美精品| 精品国产麻豆| 亚洲久草在线| 亚洲精品在线影院| 欧美日韩亚洲一区三区| 精品三级在线观看视频| 自由日本语亚洲人高潮| 一本综合精品| 精精国产xxxx视频在线播放| 蜜桃久久久久久| 久久久久欧美精品| 国产日韩视频在线| 久久午夜精品一区二区| 97视频热人人精品免费| 日韩国产精品久久久久久亚洲| 久久一区二区三区电影| 麻豆久久一区| 亚洲精品少妇| 亚洲一区二区三区四区五区午夜| 国产精品日韩| 国产精品88久久久久久| 国产精品试看| 视频国产精品| 免费在线观看一区| 一区二区精品伦理...| 激情欧美国产欧美| 久久亚洲视频| 97久久精品| 蜜臀久久99精品久久久久宅男| 久久av综合| 国产精品av一区二区| 精品捆绑调教一区二区三区| 精品中文在线| 久久精品主播| 最新亚洲国产| 国产探花在线精品一区二区| 亚洲不卡视频| 国语精品一区| 亚洲精品乱码久久久久久蜜桃麻豆| 久久爱www成人| 美女亚洲一区| 不卡专区在线| 国产欧美视频在线| 亚洲精品一级二级三级| 中文精品在线| 肉色欧美久久久久久久免费看 | 午夜免费一区| 91精品美女| 男女性色大片免费观看一区二区| 国产精品字幕| 久久久国产精品网站| 日韩国产91| 日韩福利视频导航| 中文一区一区三区免费在线观 | 日韩精品一区二区三区中文| 欧美亚洲激情| 91精品国产自产精品男人的天堂| 国产亚洲网站| 激情视频一区二区三区| 亚洲午夜黄色| 亚洲天堂免费电影| 中文字幕人成乱码在线观看 | 欧美1区二区| 国产欧美日韩视频在线| 久久精品 人人爱| 美女久久精品| 久久久久久久久久久妇女| 激情欧美日韩一区| 国产午夜精品一区二区三区欧美 | 91成人在线精品视频| 日韩高清一区| 欧美亚洲综合视频| 国内自拍视频一区二区三区| 日韩精品一区二区三区免费观影| 五月天综合网站| 日韩精品高清不卡| 成人精品久久| 另类激情亚洲| 国产精品va| 日韩精品第二页| 成人在线免费观看网站| 亚洲一区资源| 欧美日韩精品免费观看视欧美高清免费大片 | 日韩久久电影| 国产亚洲精品v| 久久69成人| 久久电影一区| 国产999精品在线观看| 国产精品日韩| 欧美精品日日操| 欧美日本一区| 在线日韩欧美| 免费国产亚洲视频| 亚洲欧美日韩国产一区二区| 国产精品久久久久久久久久齐齐| 日韩精品中文字幕第1页| 日韩av网站在线免费观看| 国产一区二区三区国产精品| 玖玖玖国产精品| 欧美日韩精品免费观看视完整| 日本va欧美va精品发布| 亚洲国产成人精品女人| 成人精品久久| 国产精品综合| 日韩高清一区二区| 亚洲日产国产精品| 午夜欧美精品| 欧美国产不卡| 亚洲精品精选| 爽好多水快深点欧美视频| 亚洲国产专区校园欧美| 国产suv精品一区| 欧美精品97| 国产精品久久久久久久免费软件| 亚洲另类黄色| 日本久久二区| 欧美一区自拍| 国产精品超碰| 美女国产一区二区三区| 国产精品成人**免费视频 | 精品国产欧美| 免费在线亚洲欧美| 奇米色欧美一区二区三区| 国精品产品一区| 国产成人精品一区二区三区视频| 国产欧美日韩亚洲一区二区三区| 久久国内精品视频| 久久精品二区亚洲w码| 亚洲色图综合| 国产探花一区在线观看| 欧美激情日韩| 成人精品天堂一区二区三区| 国产乱码精品一区二区三区亚洲人 | 国产精品视频一区视频二区| 麻豆精品视频在线观看免费| 国产美女亚洲精品7777| 精品色999| 天堂日韩电影| 免费看一区二区三区| 国产福利91精品一区二区| 日韩伦理一区| 亚洲免费影视| 国产亚洲久久| 狠狠躁少妇一区二区三区|