日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

for update引发的血案

發(fā)布時(shí)間:2025/3/21 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 for update引发的血案 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

公司的某些業(yè)務(wù)用到了數(shù)據(jù)庫(kù)的悲觀(guān)鎖 for update,但有些同事沒(méi)有把 for update 放在 Spring 事務(wù)中執(zhí)行,在并發(fā)場(chǎng)景下發(fā)生了嚴(yán)重的線(xiàn)程阻塞問(wèn)題,為了把這個(gè)問(wèn)題吃透,秉承著老司機(jī)的職業(yè)素養(yǎng),我決定要給同事們一個(gè)交代。

案發(fā)現(xiàn)場(chǎng)

最近公司的某些 Dubbo 服務(wù)之間的 RPC 調(diào)用過(guò)程中,偶然性地發(fā)生了若干起嚴(yán)重的超時(shí)問(wèn)題,導(dǎo)致了某些模塊不能正常提供服務(wù)。我們的數(shù)據(jù)庫(kù)用的是 Oracle,經(jīng)過(guò) DBA 排查,發(fā)現(xiàn)了一些 sql 的執(zhí)行時(shí)間特別長(zhǎng),對(duì)比發(fā)現(xiàn)這些執(zhí)行時(shí)間長(zhǎng)的 sql 都帶有 for update 悲觀(guān)鎖,于是相關(guān)開(kāi)發(fā)人員查看 sql 對(duì)應(yīng)的業(yè)務(wù)代碼,發(fā)現(xiàn) for update 沒(méi)有放在 Spring 事務(wù)中執(zhí)行,但是按照常理來(lái)說(shuō),如果 for update 沒(méi)有加 Spring 事務(wù),每次執(zhí)行完 Mybatis 都會(huì)幫我們 commit 釋放掉資源,并發(fā)時(shí)出現(xiàn)的問(wèn)題應(yīng)該是沒(méi)有鎖住對(duì)應(yīng)資源產(chǎn)生臟數(shù)據(jù)而不是發(fā)生阻塞。但是經(jīng)過(guò)代碼的調(diào)試,不加 Spring 事務(wù)并發(fā)執(zhí)行確實(shí)會(huì)阻塞。

案例分析

基于案發(fā)現(xiàn)場(chǎng)的問(wèn)題所在,我特地寫(xiě)了幾個(gè)針對(duì)問(wèn)題的案例分析測(cè)試代碼,"talk is cheap, show you the code":

加 Spring 事務(wù)執(zhí)行但不提交事務(wù)

public void forupdateByTransaction() throws Exception {// 主線(xiàn)程獲取獨(dú)占鎖reentrantLock.lock();new Thread(() -> transactionTemplate.execute(transactionStatus -> {// select * from forupdate where name = #{name} for updatethis.forupdateMapper.findByName("testforupdate");System.out.println("==========for update==========");countDownLatch.countDown();// 阻塞不讓提交事務(wù)reentrantLock.lock();return null;})).start();countDownLatch.await();System.out.println("==========for update has countdown==========");this.forupdateMapper.updateByName("testforupdate");System.out.println("==========update success==========");reentrantLock.unlock(); }

此時(shí) for update 被包裝在 Spring 事務(wù)中,將事務(wù)交由 Spring 管理,根據(jù)數(shù)據(jù)事務(wù)機(jī)制,sql 執(zhí)行過(guò)程中,只有執(zhí)行了 commit 或者 rollback 操作, 才會(huì)提交事務(wù),所以此時(shí)每次執(zhí)行 commit,for update 沒(méi)有被釋放,會(huì)鎖住對(duì)應(yīng)資源,直到提交事務(wù)釋放 for udpate。所以此時(shí)的主線(xiàn)程執(zhí)行更新操作會(huì)阻塞。

不加 Spring 事務(wù)并發(fā)執(zhí)行

public void forupdateByConcurrent() {AtomicInteger atomicInteger = new AtomicInteger();for (int i = 0; i < 100; i++) {new Thread(() -> {// select * from forupdate where name = #{name} for updatethis.forupdateMapper.findByName("testforupdate");System.out.println("========ok:" + atomicInteger.getAndIncrement());}).start();}}

首先我們先將數(shù)據(jù)庫(kù)連接池的初始化大小調(diào)大一點(diǎn),使該次并發(fā)執(zhí)行至少會(huì)獲取 2 個(gè)以上 ID 不同的 connection 對(duì)象來(lái)執(zhí)行 for update,以下是某一次的執(zhí)行日志:

得到測(cè)試結(jié)果,發(fā)現(xiàn)如果有 2 個(gè)或以上 ID 不同的 connection 對(duì)象執(zhí)行 sql,會(huì)發(fā)生阻塞,而 Mysql 不會(huì)發(fā)生阻塞,至于 Mysql 為什么不會(huì)發(fā)生阻塞,后面我再給大家解釋。

由于我們使用的 druid 連接池,它的 autoCommit 默認(rèn)為 true,所以我此時(shí)將 druid 連接池的 autoCommit 參數(shù)設(shè)置為 false,再次跑測(cè)試代碼,發(fā)現(xiàn)此時(shí) oracle 不會(huì)發(fā)生阻塞,我們先記住這個(gè)測(cè)試結(jié)果,下面我會(huì)帶大家走一波源碼,來(lái)解釋這個(gè)現(xiàn)象。

聰明的你可能會(huì)想到,Mybatis 的底層源碼不是給我們封裝了一些重復(fù)性操作嗎,比如我們執(zhí)行一條 sql 語(yǔ)句,mybatis 自動(dòng)為我們 commit 或者 rollback了,這也是 JDBC 框架的基本要求,那么既然 Mybatis 幫我們 commit 了,for update 應(yīng)該會(huì)被釋放才對(duì),為什么還會(huì)發(fā)生阻塞問(wèn)題呢?如果你能想到這個(gè)問(wèn)題,說(shuō)明你是個(gè)認(rèn)真思考的人,這個(gè)問(wèn)題我們也是先記住,后面會(huì)有解釋。

加 Spring 事務(wù)并發(fā)執(zhí)行

private void forupdateByConcurrentAndTransaction() {AtomicInteger atomicInteger = new AtomicInteger();for (int i = 0; i < 100; i++) {new Thread(() -> transactionTemplate.execute(transactionStatus -> {// select * from forupdate where name = #{name} for updatethis.forupdateMapper.findByName("testforupdate");System.out.println("========ok:" + atomicInteger.getAndIncrement());return null;})).start();} }

這個(gè)案例分析主要是為了測(cè)試是否跟 Spring 事務(wù)有關(guān)聯(lián),我將 druid 鏈接池的 autoCommit 參數(shù)分別設(shè)置為 true 和 false,發(fā)現(xiàn) for update 在 Spring 事務(wù)的包裝下并發(fā)執(zhí)行,并不會(huì)發(fā)生阻塞,從測(cè)試結(jié)果來(lái)看,似乎是跟 Spring 事務(wù)有很大的關(guān)系。

我們現(xiàn)在總結(jié)一下案例分析測(cè)試結(jié)果:

1.事務(wù)不提交,for update 悲觀(guān)鎖不會(huì)被釋放;2.不加 Spring 事務(wù)并發(fā)執(zhí)行 for update 語(yǔ)句,如果有兩個(gè)以上的不同 ID 的 connection 執(zhí)行 for update,會(huì)發(fā)生阻塞現(xiàn)象,Mysql 則不會(huì)阻塞;3.不加 Spring 事務(wù)并發(fā)執(zhí)行 for update 語(yǔ)句,并且 druid 連接池的 autocommit=false,不會(huì)發(fā)生阻塞;4.加 Spring 事務(wù)并發(fā)執(zhí)行 for update 語(yǔ)句,不會(huì)發(fā)生阻塞。

貼上測(cè)試代碼地址:https://github.com/objcoding/test-forupdate

源碼走一波

基于上述的案例分析,我們?cè)创a走一波,從底層源碼的角度來(lái)解析為什么會(huì)有這樣的結(jié)果。

Mybatis 事務(wù)管理器

有沒(méi)有發(fā)現(xiàn),我到現(xiàn)在也是一直在強(qiáng)調(diào) Spring 事務(wù),其實(shí)在數(shù)據(jù)庫(kù)的角度來(lái)說(shuō),sql 只要在 START TRANSACTION 與 COMMIT 或者 ROLLBACK 之間執(zhí)行,就算是一個(gè)事務(wù),而我強(qiáng)調(diào)的 Spring 事務(wù),指的是在Spring 管理下的事務(wù),而 Mybatis 也有自己的事務(wù)管理器,通常我們使用 Mybatis 都是配合 Spring 來(lái)使用,而 Spring 整合 Mybatis,在 Mybatis-spring 包中,有一個(gè)名叫 SpringManagedTransaction 的類(lèi),這個(gè)就是 Mybatis 在 Spring 體系下的的 JDBC 事務(wù)管理器,Mybatis 用它來(lái)管理 JDBC connection 的生命周期,別看它名字是以 Spring 開(kāi)頭,但它和 Spring 的事務(wù)管理器沒(méi)有半毛錢(qián)關(guān)系。

Mybatis 執(zhí)行 sql 時(shí)會(huì)創(chuàng)建一個(gè) SqlSession 會(huì)話(huà),關(guān)于 SqlSession,坐我旁邊的鐘同學(xué)之前有向我提問(wèn)過(guò) SqlSession 的創(chuàng)建機(jī)制,我特意寫(xiě)了一篇文章,感興趣的可以看看,這里就不再重復(fù)述說(shuō)了:

「鐘同學(xué),this is for you!」

在創(chuàng)建 SqlSession 時(shí),相應(yīng)地會(huì)創(chuàng)建一個(gè)事務(wù)管理器:

org.mybatis.spring.transaction.SpringManagedTransactionFactory#newTransaction:

public Transaction newTransaction(DataSource dataSource, TransactionIsolationLevel level, boolean autoCommit) {return new SpringManagedTransaction(dataSource); }

創(chuàng)建一個(gè) transaction 時(shí),我們發(fā)現(xiàn)傳入的 autoCommit 根本沒(méi)有賦值給 SpringManagedTransaction,這里暗藏玄機(jī),我們繼續(xù)往下看:

執(zhí)行 sql 時(shí),Mybatis 會(huì)從事務(wù)管理器中從數(shù)據(jù)庫(kù)連接池中獲取一個(gè) connection 對(duì)象:

org.mybatis.spring.transaction.SpringManagedTransaction#openConnection:

private void openConnection() throws SQLException {this.connection = DataSourceUtils.getConnection(this.dataSource);this.autoCommit = this.connection.getAutoCommit();this.isConnectionTransactional = DataSourceUtils.isConnectionTransactional(this.connection, this.dataSource);if (LOGGER.isDebugEnabled()) {LOGGER.debug("JDBC Connection ["+ this.connection+ "] will"+ (this.isConnectionTransactional ? " " : " not ")+ "be managed by Spring");} }

這里會(huì)從數(shù)據(jù)庫(kù)連接池中獲取 connection 對(duì)象,然后將 connection 對(duì)象中的 autoCommit 值賦值給 SpringManagedTransaction!可以這么理解,在 Spring 體系下的 Mybatis 事務(wù)管理器,autoCommit 的值被數(shù)據(jù)庫(kù)連接池的覆蓋掉了!而后面的 debug 日志也說(shuō)明了,這個(gè) JDBC connection 對(duì)象不歸你 Spring 管理,我 Mybatis 自己就可以管理了,你 Spring 就別瞎參合了。

sql 執(zhí)行完之后,Mybatis 會(huì)自動(dòng)幫我們 commit,我們來(lái)看 SqlSessionTemplate 的 sqlSession 代理:

org.mybatis.spring.SqlSessionTemplate.SqlSessionInterceptor:

if (!isSqlSessionTransactional(sqlSession, SqlSessionTemplate.this.sqlSessionFactory)) {// force commit even on non-dirty sessions because some databases require// a commit/rollback before calling close()sqlSession.commit(true); }

判斷如果不歸 Spring 事務(wù)管理,那么會(huì)強(qiáng)制執(zhí)行 commit 操作,我們點(diǎn)進(jìn)去,發(fā)現(xiàn)最終調(diào)用的是 Mybatis 的事務(wù)管理器的 commit 方法:

org.mybatis.spring.transaction.SpringManagedTransaction#commit:

public void commit() throws SQLException {if (this.connection != null && !this.isConnectionTransactional && !this.autoCommit) {if (LOGGER.isDebugEnabled()) {LOGGER.debug("Committing JDBC Connection [" + this.connection + "]");}this.connection.commit();} }

問(wèn)題就出現(xiàn)在這里,前面我也說(shuō)了,我們使用的 druid 數(shù)據(jù)庫(kù)連接池的 autoCommit 默認(rèn)為 true,而事務(wù)管理器獲取 connection 對(duì)象時(shí),又將 connection 的 autocommit 賦值給事務(wù)管理器,如果此時(shí) autoCommit 為 true,Mybatis 認(rèn)為 connection 已經(jīng)自動(dòng)提交事務(wù)了,既然這事不歸我管,那么我 Mybatis 自然就不會(huì)再去 commit 了。

根據(jù)測(cè)試結(jié)果,將 druid 的 autoCommit 設(shè)置為 false 后,不會(huì)發(fā)生阻塞現(xiàn)象,即 Mybaits 會(huì)執(zhí)行下面的 commit 操作。那么問(wèn)題來(lái)了,connection 的 autocommit = true 時(shí),到底有沒(méi)有 commit ?從測(cè)試結(jié)果來(lái)看,很明顯沒(méi)有 commit。這里就要從數(shù)據(jù)庫(kù)層來(lái)解釋了,由于公司 Oracle 數(shù)據(jù)庫(kù)的 autocommit 使用的是默認(rèn)的 false 值,即需要顯式提交 commit 事務(wù)才會(huì)被提交。這也就是為什么當(dāng) druid 的 autoCommit=false 時(shí),并發(fā)執(zhí)行不會(huì)產(chǎn)生阻塞現(xiàn)象,因?yàn)?Mybatis 已經(jīng)幫我們自動(dòng) commit 了。

而為什么當(dāng) druid 的 autoCommit=true 時(shí),Mysql 依然不會(huì)阻塞呢?我先開(kāi)啟 Mysql 的日志打印:

set global general_log = 1;

查看日志,發(fā)現(xiàn) Mysql 會(huì)為每條執(zhí)行的 sql 設(shè)置 autocommit=1,即自動(dòng)提交事務(wù),無(wú)須顯式提交 commit,每條 sql 就是一個(gè)事務(wù)。

Spring 事務(wù)管理器

上面的案例分析中,加了 Spring 事務(wù)的并發(fā)執(zhí)行,并不會(huì)產(chǎn)生阻塞現(xiàn)象,顯然肯定是 Spring 事務(wù)做了一些不可描述的動(dòng)作,Spring 的事務(wù)管理器有很多個(gè),這里我們用的是數(shù)據(jù)庫(kù)連接池那個(gè)管理器,叫 DataSourceTransactionManager,我這里為了靈活控制事務(wù)范圍的細(xì)粒度,用的是聲明式事務(wù),我們繼續(xù)走一波源碼,從事務(wù)入口一路跟蹤進(jìn)來(lái),發(fā)現(xiàn)第一步需要調(diào)用 doBegin 方法:

org.springframework.jdbc.datasource.DataSourceTransactionManager#doBegin:

// Switch to manual commit if necessary. This is very expensive in some JDBC drivers, // so we don't want to do it unnecessarily (for example if we've explicitly // configured the connection pool to set it already). if (con.getAutoCommit()) {txObject.setMustRestoreAutoCommit(true);if (logger.isDebugEnabled()) {logger.debug("Switching JDBC Connection [" + con + "] to manual commit");}con.setAutoCommit(false); }

我們?cè)?doBegin 方法發(fā)現(xiàn)了它偷偷地篡改了連接對(duì)象 autoCommit 的值,將它設(shè)為 false,這里想必大家都會(huì)明白其中的原理吧,Spring 管理事務(wù)其實(shí)就是在 sql 執(zhí)行前將當(dāng)前的 connection 對(duì)象設(shè)置為不自動(dòng)提交模式,接下來(lái)執(zhí)行的 sql 都不會(huì)自動(dòng)提交,等待事務(wù)結(jié)束時(shí),Spring 事務(wù)管理器會(huì)幫我們 commit 提交事務(wù)。這也就是為什么加了 Spring 事務(wù)的并發(fā)執(zhí)行并不會(huì)產(chǎn)生阻塞的原因,原理與上述 Mybatis 所描述的一樣。

org.springframework.jdbc.datasource.DataSourceTransactionManager#doCleanupAfterCompletion:

// Reset connection. Connection con = txObject.getConnectionHolder().getConnection(); try {if (txObject.isMustRestoreAutoCommit()) {con.setAutoCommit(true);}DataSourceUtils.resetConnectionAfterTransaction(con, txObject.getPreviousIsolationLevel()); } catch (Throwable ex) {logger.debug("Could not reset JDBC Connection after transaction", ex); }

在事務(wù)完成之后,我們還需要將 connection 對(duì)象還原,因?yàn)?connection 存在于連接池當(dāng)中,close 時(shí)并不會(huì)真正關(guān)閉,而是被回收回連接池當(dāng)中了,如果不對(duì) connection 對(duì)象進(jìn)行還原,那么當(dāng)下一次會(huì)話(huà)拿到該 connection 對(duì)象,autoCommit 還是上一次會(huì)話(huà)的值,就會(huì)產(chǎn)生一些很隱晦的問(wèn)題。

寫(xiě)在最后

其實(shí)這個(gè)問(wèn)題從應(yīng)用層來(lái)分析還好,直接擼源碼就完了,主要是這個(gè)問(wèn)題還涉及一些數(shù)據(jù)庫(kù)底層的一些原理,由于我對(duì)數(shù)據(jù)庫(kù)還不是那么地專(zhuān)業(yè),所以在這過(guò)程中,還特別請(qǐng)教了公司的 DBA 斌哥哥,非常感謝他的協(xié)助。

另外,我其實(shí)是不太建議使用 for update 這種悲觀(guān)鎖的,它太過(guò)于依賴(lài)數(shù)據(jù)庫(kù)層了,而且當(dāng)并發(fā)量起來(lái)了,雖然可以保證數(shù)據(jù)一致性,但是這樣犧牲了性能,會(huì)大大影響效率,嚴(yán)重拖垮數(shù)據(jù)庫(kù)資源,而且像這次一樣,有些開(kāi)發(fā)人員使用了 for update 卻忘記 commit 事務(wù)了,導(dǎo)致引起很多鎖故障。

總結(jié)

以上是生活随笔為你收集整理的for update引发的血案的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

日本久久高清视频 | 欧美国产日韩一区二区 | 天天干天天干天天干天天干天天干天天干 | 人人爱人人射 | 亚洲天堂网在线观看视频 | 久草视频免费在线播放 | 免费在线观看av | 婷婷久久丁香 | 日韩在线观看第一页 | 亚洲精品一区二区三区四区高清 | 久久久久久综合 | 一色屋精品视频在线观看 | 国产99自拍| 久久久五月天 | 99久e精品热线免费 99国产精品久久久久久久久久 | 91成年人网站 | 中文字幕在线观看一区 | 天天干,夜夜操 | 97视频亚洲 | 国产亚洲高清视频 | 亚洲一区视频免费观看 | 色综合 久久精品 | www.在线观看av | 97视频免费在线观看 | 婷婷激情五月 | 久久这里只有精品久久 | 久久96国产精品久久99软件 | 亚洲一区二区视频 | 男女拍拍免费视频 | 免费看黄的视频 | 99免费观看视频 | 日韩欧美xxxx | 国产一二三四在线观看视频 | 91久久精品一区二区二区 | 成人教育av | 人人射人人 | 成人av一区二区兰花在线播放 | 美女网站视频免费都是黄 | 国产va饥渴难耐女保洁员在线观看 | 精品福利网 | 天堂av在线免费观看 | 国产午夜精品久久久久久久久久 | 日韩欧美高清一区二区 | 人人添人人澡 | 午夜在线日韩 | 综合色久 | 69亚洲视频 | 欧美一区二区三区免费看 | 成年人黄色av | 天天色天天综合 | 亚洲国产播放 | av+在线播放在线播放 | av在线超碰 | 天天舔夜夜操 | 性色视频在线 | 久久久黄色 | 色国产视频 | 久久毛片视频 | www.91国产 | 国产精品一区在线观看你懂的 | 亚洲爱视频 | 在线电影日韩 | 91视频在线自拍 | 91福利视频免费 | 一级成人免费 | 91在线中文字幕 | 在线观看你懂的网站 | 亚州免费视频 | 国产欧美三级 | 在线午夜电影神马影院 | 色偷偷人人澡久久超碰69 | 日日日操| 97网在线观看 | 亚洲精品国产精品国自 | av在线网站大全 | 日韩理论 | 国产精品成人一区二区三区 | 国产精品手机在线播放 | 免费观看性生活大片3 | 手机看片国产日韩 | 麻花传媒mv免费观看 | 久久视频这里有精品 | 99精品区| 国产视频二区三区 | 久草视频在线观 | 免费中文字幕 | 亚洲理论在线观看 | av在线等 | 97av色 | 精品在线看 | 五月婷丁香网 | 91手机电视 | av电影中文字幕在线观看 | 夜夜天天干 | 国产不卡视频在线 | 探花视频免费在线观看 | 黄色a在线观看 | 欧美性猛片,| 国产无遮挡又黄又爽在线观看 | av中文电影| 99久久精品国产一区 | 日韩久久在线 | 91在线观看高清 | 最近中文字幕免费观看 | 3d黄动漫免费看 | 久久人人97超碰精品888 | 美女一二三区 | 99国内精品| 日韩特级黄色片 | 黄色不卡av | 玖玖综合网 | 日日操夜夜操狠狠操 | 成人福利在线播放 | 国产视频综合在线 | 国产麻豆剧果冻传媒视频播放量 | 亚洲专区在线视频 | 免费观看成人 | 天天干天天综合 | va视频在线 | 国产精品二区三区 | 欧美另类z0zx | 在线免费国产视频 | 成人免费看片98欧美 | 欧美精品午夜 | 欧美一性一交一乱 | 最新日韩视频在线观看 | 久久精品视频免费播放 | 欧美日韩一区二区三区在线观看视频 | 国产你懂的在线 | 欧美一区二区在线 | .国产精品成人自产拍在线观看6 | 久久99国产精品久久99 | 中文字幕美女免费在线 | 精品国产久 | 黄p在线播放 | 丁香婷婷在线观看 | 99久e精品热线免费 99国产精品久久久久久久久久 | 香蕉视频在线观看免费 | 高清不卡一区二区在线 | 成人网色 | 久久久精品国产一区二区三区 | 色婷婷久久一区二区 | 麻豆91视频| 91网在线| 九九影视理伦片 | 国产精品igao视频网入口 | 欧产日产国产69 | 天天做天天看 | 日韩一区正在播放 | 久久精品亚洲一区二区三区观看模式 | 欧美精品午夜 | 久久综合久久综合久久 | 日韩三区在线观看 | 亚洲精品自在在线观看 | av在线播放一区二区三区 | 日韩在线视 | 黄色大全免费观看 | 久久国产精品影片 | 亚av在线 | 成人黄色大片 | 九九热免费观看 | 五月婷婷综合激情网 | 国产天天爽| 国产精品久久99综合免费观看尤物 | 999国产 | 午夜体验区| 国产区免费在线 | 午夜精品久久久久久 | 91电影福利 | 国产精品一区二区三区免费看 | 国产一区在线视频播放 | 青青河边草免费视频 | 一级性视频 | 亚洲人成网站精品片在线观看 | 国产精品va在线播放 | 亚洲九九九在线观看 | 欧美日韩一区二区视频在线观看 | 亚洲精品国偷自产在线91正片 | 91精品啪在线观看国产81旧版 | 97人人超 | 激情五月综合网 | 免费av福利 | 国产在线专区 | 99视频精品免费观看, | 91成人在线视频观看 | 天天操人人要 | 国产日韩欧美在线观看视频 | 人人干网 | 一区二区三区高清在线观看 | 69亚洲精品 | 在线精品一区二区 | japanesefreesex中国少妇 | 91视频久久久久久 | 久久综合狠狠 | 国产伦理剧 | 国产91aaa| 欧美激情一区不卡 | 免费人人干 | 中文字幕第一页在线视频 | 日日成人网 | 97超碰在线久草超碰在线观看 | 干天天| 五月婷婷在线观看 | www天天操| 99精品欧美一区二区蜜桃免费 | 午夜精品中文字幕 | 97天天综合网 | 五月婷香蕉久色在线看 | 日韩av看片| 亚洲一区二区三区91 | 日三级在线 | 日韩一级电影网站 | 国产精品久久久久久久久蜜臀 | 亚州视频在线 | 久久国产日韩 | 99久久精品国产亚洲 | 亚洲视频在线观看网站 | 欧美黄色高清 | 国产精品v a免费视频 | 免费视频久久久久 | 在线日韩中文 | 国产日韩一区在线 | 国产精品久久久久久久久久99 | 免费久久99精品国产婷婷六月 | 色综合天天视频在线观看 | 国产精品麻豆果冻传媒在线播放 | 超碰人人在 | 正在播放亚洲精品 | 国产美女免费观看 | 五月天狠狠操 | 最近中文字幕视频网 | 日韩中文字幕免费电影 | 久久成 | 一区二区影院 | 亚洲国产精品女人久久久 | 制服丝袜在线 | 久久最新 | 久久久久黄| 在线亚洲天堂网 | 亚洲区精品视频 | 99超碰在线观看 | 蜜臀久久99精品久久久酒店新书 | 精品国产观看 | 国产精品一区久久久久 | 国产精品入口66mio女同 | 欧美精品日韩 | 欧美性生活久久 | 国产一级视频 | 四虎在线免费观看 | 黄色成人毛片 | 99九九99九九九视频精品 | 日本视频高清 | 亚洲精品小区久久久久久 | 亚洲欧美国内爽妇网 | 亚洲资源一区 | 久久综合九色综合欧美就去吻 | 久久综合狠狠狠色97 | 国产福利在线免费观看 | 国产99久久99热这里精品5 | 九九九在线观看 | 99久久精品免费看国产一区二区三区 | 美女视频一区 | 欧美精品一区二区免费 | 国内精品久久久久久久影视简单 | 中文字幕999 | 日韩欧美一区二区在线 | 久久草精品 | 婷婷综合影院 | 久久 精品一区 | 久久成人一区 | 夜色成人网 | 美女在线黄 | 天天干,夜夜操 | 日韩欧美久久 | 午夜影院一级片 | 97视频人人免费看 | 日韩a欧美 | 亚洲一级片在线看 | 麻豆视频免费在线观看 | 亚洲黄色激情小说 | 国产在线第三页 | 国产高清久久久 | 国产91在线播放 | 在线免费视频a | 日韩中文字幕免费视频 | 亚洲电影图片小说 | 久久1区| 亚洲成人精品 | 日韩精品免费 | 99精品福利| 亚洲在线a | 大荫蒂欧美视频另类xxxx | 96精品高清视频在线观看软件特色 | av亚洲产国偷v产偷v自拍小说 | 色a资源在线| 黄色小说免费在线观看 | 国产一性一爱一乱一交 | 婷婷在线免费观看 | 国产精品12345 | 亚洲精品国产精品久久99 | 久久综合色婷婷 | 欧美精品在线观看免费 | 久久伊人精品天天 | 久久热亚洲 | 精品一区二区三区在线播放 | 午夜久久福利 | 三级av片| 久久综合亚洲鲁鲁五月久久 | 久久dvd| 高清国产午夜精品久久久久久 | 狠狠色香婷婷久久亚洲精品 | 国内视频1区 | 日韩精品欧美精品 | 天堂av一区二区 | 黄色免费av | 91成人在线网站 | www.久久久精品 | 婷婷日日 | 99久久er热在这里只有精品66 | 婷婷六月激情 | avwww在线观看 | 在线亚洲观看 | 91免费高清视频 | 天天射天天搞 | 亚洲清纯国产 | 91视频免费看网站 | 日韩免费观看一区二区三区 | 欧美中文字幕久久 | 亚洲欧美日韩一级 | 欧美日韩另类在线 | 亚洲91中文字幕无线码三区 | 欧美午夜寂寞影院 | 麻豆视频免费 | 日韩av在线一区二区 | 夜夜骑天天操 | 久久亚洲日本 | 久久成人人人人精品欧 | 婷婷免费在线视频 | 国产精品99蜜臀久久不卡二区 | 日韩网站一区二区 | 成人黄色片免费看 | 日韩精品一区二区在线观看视频 | 丁香六月中文字幕 | www.com久久久 | 伊人久久影视 | 99视频免费观看 | 黄色三级在线 | 丁香五月亚洲综合在线 | 国内精品久久久久影院一蜜桃 | 久99久精品| 伊人资源视频在线 | 中文字幕黄色网址 | 日韩av免费一区二区 | 91免费高清在线观看 | 91x色 | 国产精品毛片一区视频播 | 成人黄色av网站 | 99久久久久久 | 久草在线中文视频 | 韩日三级av | 在线看成人 | 成人av在线亚洲 | 欧女人精69xxxxxx| 午夜久久电影网 | 久久精品中文字幕一区二区三区 | 亚洲国产福利视频 | 亚洲欧美视频在线播放 | 在线观看久久 | 亚洲午夜精品一区二区三区电影院 | 激情欧美丁香 | 日日操网 | 菠萝菠萝蜜在线播放 | 欧美一级黄色网 | 国产视频九色蝌蚪 | 免费一级日韩欧美性大片 | 久久视频在线观看 | 91精品一区二区三区蜜桃 | 最近中文字幕国语免费高清6 | 激情网站免费观看 | 欧美国产日韩一区二区 | 高清免费在线视频 | 日韩欧美99 | 欧美日韩国产欧美 | 久久精品99国产精品日本 | 在线观看成人福利 | 国产成人1区| 2020天天干天天操 | 日本韩国精品在线 | 精品免费一区二区三区 | 91福利区一区二区三区 | 日韩在线观看网站 | 麻豆高清免费国产一区 | 青草视频在线播放 | 国产三级精品三级在线观看 | 国产区久久 | 日韩av手机在线看 | 亚洲一二三久久 | 不卡精品视频 | 永久免费av在线播放 | 日韩激情免费视频 | 91精品综合在线观看 | 69xx视频 | 人人插人人艹 | 亚洲九九影院 | 国产精品久久久久久久久久免费看 | 成 人 免费 黄 色 视频 | 国内视频1区 | 91九色porny蝌蚪主页 | 香蕉视频网站在线观看 | 亚洲成av人片在线观看www | 午夜资源站| 人人要人人澡人人爽人人dvd | 在线看中文字幕 | 国产欧美日韩视频 | 一区二区不卡视频在线观看 | 久久精品一 | 国产一区欧美日韩 | 亚洲国产av精品毛片鲁大师 | 久久亚洲私人国产精品 | 欧美日韩中文字幕在线视频 | 手机色在线 | 国产99久久久国产精品免费看 | 国产婷婷 | 国产精品久久久久久久久久99 | 色综合久久88色综合天天6 | 国产精品去看片 | 操操日日 | 97超碰在线资源 | 啪啪免费观看网站 | 伊人五月综合 | 亚洲精品国内 | 欧美成a人片在线观看久 | 久久免费av电影 | 日韩成人中文字幕 | 国产在线视频不卡 | 少妇高潮冒白浆 | 一区二区精 | 亚洲一区二区黄色 | 探花视频在线观看免费版 | 午夜黄色一级片 | www夜夜| 99精品国自产在线 | 草久视频在线观看 | www.干| 玖玖爱免费视频 | 免费看黄色小说的网站 | 狠狠干天天操 | 在线观看亚洲国产精品 | 丁香婷婷综合色啪 | 丁香六月色| 久久久久久高潮国产精品视 | 久久久久久久久久久久久国产精品 | 在线观看免费91 | 69性欧美| 日韩一区二区三区高清免费看看 | 日韩精品中文字幕在线 | 嫩草伊人久久精品少妇av | 久久久www成人免费毛片麻豆 | 狠狠色婷婷丁香六月 | 天天干天天插伊人网 | 激情综合中文娱乐网 | 成人毛片在线视频 | 在线国产黄色 | 亚洲91中文字幕无线码三区 | 中日韩在线视频 | 亚洲人成网站精品片在线观看 | 欧美做受69 | 91av官网 | 久久天天躁夜夜躁狠狠85麻豆 | 日韩av在线不卡 | 欧美人牲 | 亚洲欧美日韩国产一区二区三区 | 91网站在线视频 | 在线视频欧美精品 | 久久国产亚洲精品 | 最近在线中文字幕 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 久久av在线播放 | 99精品国产在热久久下载 | 日本亚洲国产 | 91亚洲精品久久久蜜桃 | 香蕉视频在线免费 | 亚洲欧美激情精品一区二区 | 天天操天天综合网 | 国产精品9999久久久久仙踪林 | 国产精品一区免费在线观看 | 深夜视频久久 | 免费色婷婷| 911香蕉视频 | 干亚洲少妇 | av超碰在线 | 激情欧美丁香 | 国产一在线精品一区在线观看 | 国产精品12345| 五月天婷亚洲天综合网鲁鲁鲁 | 日韩精品视频一二三 | 亚洲h色精品 | 久草免费在线视频 | 亚洲 欧洲av| 青青草国产成人99久久 | 黄色影院在线播放 | 久久成人18免费网站 | 九九九热精品免费视频观看 | 精品自拍网 | 97超碰中文| 91高清视频免费 | 在线视频欧美精品 | 激情婷婷 | 亚洲一区二区天堂 | 91丨九色丨蝌蚪丨对白 | 成全免费观看视频 | 91精品视频一区 | 中文字幕视频在线播放 | 亚洲涩涩色 | 国产视频在线看 | 亚洲午夜久久久久久久久电影网 | 国产福利在线免费观看 | 在线精品亚洲 | 国产二区电影 | 亚洲黄a | 久久亚洲日本 | 成年人毛片在线观看 | 久久少妇| 久久久久久97三级 | 亚洲一区二区精品3399 | 亚洲精品自在在线观看 | 黄色成年 | 久久久久网站 | 美女天天操 | 人人爱天天操 | 天天天在线综合网 | 日本动漫做毛片一区二区 | www.色综合.com| 手机av在线免费观看 | 久艹在线观看视频 | 亚洲精品五月 | 黄色av成人在线 | 国产成人一区二区三区 | 天天爱天天插 | 激情五月六月婷婷 | 婷婷丁香六月天 | 国产福利在线 | 久久a国产 | 中文在线中文a | 亚洲综合小说电影qvod | 婷婷久久综合网 | 天天天综合网 | av在线免费网站 | 久草在线视频首页 | 国产欧美最新羞羞视频在线观看 | 在线观看中文字幕网站 | 久久精品国产一区 | 日本韩国精品一区二区在线观看 | 999免费视频| 中文av资源站 | 91视频大全| 性色av免费在线观看 | www久久精品 | 91综合色 | 丝袜一区在线 | 在线之家官网 | 欧美国产日韩在线观看 | 亚洲人毛片 | 久久国产电影 | 欧美日韩在线观看一区二区 | 精品欧美一区二区三区久久久 | 在线中文字母电影观看 | 久久艹在线 | 五月天国产精品 | 免费看黄视频 | 一级成人免费 | 国产精品免费在线视频 | 在线欧美日韩 | 美女国产| 亚洲精品资源 | 国产老太婆免费交性大片 | 91在线国产观看 | 欧美天天综合网 | 91香蕉视频在线下载 | 久久人人爽人人 | 蜜臀精品久久久久久蜜臀 | 久久综合精品国产一区二区三区 | 99色婷婷| 国产手机在线播放 | 免费观看的黄色片 | 日韩激情视频 | 日韩最新在线视频 | 久草色在线观看 | 久草在线久草在线2 | 波多野结衣视频一区二区 | 麻豆视频大全 | 国产精品第 | 久久婷婷国产色一区二区三区 | 久久女同性恋中文字幕 | av千婊在线免费观看 | 国产日本亚洲高清 | 欧美日韩国产在线精品 | 久久久久成人精品 | 久久久 激情 | 色综合天天射 | 中文字字幕在线 | 人人干在线 | 99久久精品免费 | 亚洲精品高清一区二区三区四区 | 久久精品久久久久 | 在线а√天堂中文官网 | 国产精品久久一 | 欧美日韩高清免费 | 久久人人爽人人爽人人片av免费 | 免费福利小视频 | 久久精品视频在线免费观看 | 久久婷婷一区 | 夜夜躁日日躁狠狠久久88av | 玖玖国产精品视频 | 丁香花中文字幕 | 精品欧美在线视频 | 久久久久久久久久影院 | 亚洲精品国偷拍自产在线观看蜜桃 | 中国一级特黄毛片大片久久 | 日本高清免费中文字幕 | 81国产精品久久久久久久久久 | 久久99精品久久久久久秒播蜜臀 | 欧美一级淫片videoshd | 日韩电影久久久 | 久久精品激情 | 久草网在线 | 国产无套一区二区三区久久 | 中文字幕在线播放第一页 | 97成人超碰 | 久久精品一区二区三区四区 | 亚洲九九九在线观看 | 成人在线观看免费 | 日韩亚洲国产精品 | 日韩精品久久久久久中文字幕8 | 国产麻豆精品在线观看 | 久久99精品久久久久久 | 久久精品96 | 99九九免费视频 | 九九99视频 | 2021国产精品视频 | 99热超碰 | 国产精品igao视频网网址 | 国产精品久久久久久久电影 | 99视频在线免费播放 | 在线看片一区 | 一色屋精品视频在线观看 | 亚洲国产欧美在线看片xxoo | 五月婷婷欧美 | 精品欧美一区二区精品久久 | 国产成人久久77777精品 | 中文字幕区 | 亚州国产视频 | 亚洲精品久久久久58 | 久久不见久久见免费影院 | 国产永久免费观看 | 欧美日韩国产一区二区三区 | 午夜精品一区二区三区在线观看 | 国产精品人成电影在线观看 | 亚洲午夜久久久久久久久久久 | www.99av| 欧美a级成人淫片免费看 | 青春草视频在线播放 | 中文字幕资源网在线观看 | 成人国产精品一区 | 美女福利视频 | 久久综合电影 | 中文字幕免费观看全部电影 | av亚洲产国偷v产偷v自拍小说 | 日韩精品视频免费专区在线播放 | 国产做aⅴ在线视频播放 | 人人爱人人添 | 97狠狠操| 久久99偷拍视频 | 蜜桃视频成人在线观看 | 免费日韩电影 | 久久久视屏 | 欧美日韩精品免费观看 | www操操操 | 亚洲视频在线免费看 | 国精产品999国精产品岳 | 日韩欧美大片免费观看 | 亚洲精品国产精品国自产 | 成人h动漫精品一区二 | 天天干夜夜爱 | 黄色www免费| 99久久精品国产毛片 | 久久久91精品国产一区二区三区 | 久久精品导航 | 天天爽天天爽天天爽 | 韩国精品在线观看 | 91福利社区在线观看 | 一区二区三区在线影院 | 五月婷婷在线播放 | 欧美在线视频精品 | avwww在线| 日精品在线观看 | 国产精品96久久久久久吹潮 | 人成午夜视频 | 狠狠网站| 日韩一区二区三区免费视频 | 伊人精品在线 | 色偷偷88欧美精品久久久 | 美女久久视频 | 激情视频91 | 国产日韩欧美在线观看 | av色网站| 91麻豆精品国产自产 | 色5月婷婷| 久久爱导航 | 99久久精品国产网站 | 99精品国产在热久久下载 | 黄污网| 国产一级片网站 | 国产一区二区三区在线免费观看 | 在线性视频日韩欧美 | 国产中文在线观看 | 日本一区二区三区视频在线播放 | 在线观看免费观看在线91 | 成人一区电影 | 视频一区久久 | 天天干 天天摸 天天操 | 免费在线日韩 | 日韩字幕 | 久久永久免费视频 | 一区二区三区电影大全 | 99免费精品视频 | 国产精品99久久久久人中文网介绍 | 天天爱天天操天天干 | 国产福利资源 | www.天天色 | 激情在线网| 日韩av手机在线看 | 久久精品国亚洲 | 啪啪动态视频 | 成人久久久久久久久久 | 欧美巨乳波霸 | 手机看片中文字幕 | av短片在线 | 十八岁以下禁止观看的1000个网站 | 免费看v片 | 日韩夜夜爽 | 日韩在线资源 | 久久久久久久久影视 | 亚洲黄色一级电影 | 亚洲精品毛片一级91精品 | 美腿丝袜av | 日韩精品在线免费观看 | 中文字幕免费成人 | 国内99视频| 五月婷婷视频 | 日韩欧美一级二级 | 日韩在线观看一区二区 | 91视频 - v11av | 最近高清中文字幕在线国语5 | 美腿丝袜av | 五月婷婷激情六月 | 一区二区三区精品久久久 | 狠狠色2019综合网 | 久久午夜色播影院免费高清 | 91丨九色丨首页 | 欧美人体xx | 午夜精品av在线 | 亚洲视频在线观看免费 | h动漫中文字幕 | 天干啦夜天干天干在线线 | 2019精品手机国产品在线 | 久草亚洲视频 | 91视频 - x99av| 中文区中文字幕免费看 | wwwwwww黄| 日韩激情网 | av在线影视| av在线电影网站 | 久久草草影视免费网 | 免费看一级黄色 | 国产精品久久久久久久久久了 | av在线激情 | 香蕉国产91 | 欧美aa在线 | 久久好看免费视频 | 国产精品自拍在线 | 91九色最新地址 | 美女天天操 | 国产亚洲精品日韩在线tv黄 | 91看片淫黄大片一级在线观看 | 久久综合色播五月 | 成人国产亚洲 | 国产中文伊人 | 成片免费观看视频999 | 国产精品久久麻豆 | 国产精品久久久久久欧美 | 91精品推荐| 999ZYZ玖玖资源站永久 | 色在线免费观看 | 国产资源站| 日日日爽爽爽 | 亚洲日本在线视频观看 | 伊人网av| 国产精品久久综合 | 成人久久亚洲 | 中文在线亚洲 | 国产美女免费观看 | 夜夜操天天 | 免费人做人爱www的视 | 国产手机视频在线 | 欧美综合色在线图区 | 天天做天天看 | 精品久久久久久久久久久久久久久久久久 | 久久久国产毛片 | 婷婷5月色 | 人人澡超碰碰 | 国产一二区在线观看 | 亚洲精选久久 | 天天操夜夜操夜夜操 | 五月天久久久 | 国产黄色观看 | 久久久久久久网 | 国产精品久久久久久久久久久久 | 丁香婷婷色综合亚洲电影 | 波多野结衣最新 | 在线亚洲成人 | 三级黄色大片在线观看 | 成人黄色资源 | 日韩激情中文字幕 | 中文在线www| 一区二区三区精品在线视频 | 在线观看免费色 | 国产一级电影在线 | 一区二区三区电影在线播 | 色综合激情久久 | 中文字幕av在线 | 欧美一级片免费观看 | 波多野结衣在线观看视频 | 黄色91免费观看 | 一区二区三区四区免费视频 | 狠狠色丁香婷婷综合视频 | 中文在线中文资源 | 夜色在线资源 | 国产午夜精品一区二区三区在线观看 | 综合久久网 | 亚洲区视频在线 | 日韩av进入 | 欧美日韩一区二区免费在线观看 | 在线观看免费日韩 | 99成人在线视频 | 色五婷婷 | 五月天网页 | 91精品国产91热久久久做人人 | 亚洲精品乱码久久久久久写真 | www.色com| 又湿又紧又大又爽a视频国产 | 美女视频黄频大全免费 | 婷婷伊人综合亚洲综合网 | 超碰人人在线观看 | 91av电影网| 亚洲精品综合在线观看 | 国产一区在线播放 | 国产乱码精品一区二区蜜臀 | 国产精品免费观看在线 | 欧美激精品 | 丁香花在线视频观看免费 | 亚洲黄色免费网站 | 国产美女免费观看 | 欧美激情视频一区二区三区免费 | 免费www视频| 韩国av电影在线观看 | av黄色一级片 | 欧美一区二区三区在线观看 | 成人午夜电影免费在线观看 | 99草视频 | 色多多视频在线 | 久久er99热精品一区二区 | 国产黄在线免费观看 | 亚洲精品午夜国产va久久成人 | 国产精品初高中精品久久 | 香蕉视频18 | 亚洲第一区在线观看 | 菠萝菠萝在线精品视频 | 欧美精品999| 国产成人福利在线 | 久草网在线视频 | 久久国产品| 成人欧美日韩国产 | 成人午夜剧场在线观看 | 精品天堂av| 片网站 | 69国产在线观看 | 亚洲精品大片www | 一区二区三区视频网站 | 免费又黄又爽视频 | 久久久久久久电影 | 久久婷婷色 | 国产精品一区在线观看你懂的 | 夜夜操网 | 久久av福利 | 97超碰在线久草超碰在线观看 | 超级碰碰碰免费视频 | 久久五月天婷婷 | 一级a性色生活片久久毛片波多野 | 日韩激情影院 | 免费国产在线精品 | 韩国在线视频一区 | 最新不卡av | 日韩小视频 | 最新av在线播放 | 狠狠色丁香婷婷综合久久片 | 国内精品久久久久影院一蜜桃 | 中文超碰字幕 | 99久久夜色精品国产亚洲96 | 5月丁香婷婷综合 | 日韩在线三区 | 在线亚州| 天堂久久电影网 | 国产精品黄网站在线观看 | 国产精品久久一 | 日韩在线理论 | 欧美aⅴ在线观看 | 日韩一区二区三区在线观看 | 久久国产精品精品国产色婷婷 | www.五月天婷婷.com | 99久久婷婷国产精品综合 | 天天激情天天干 | 美女av电影 | 久久国产精品免费一区 | 久草在线在线视频 | 97超级碰碰碰视频在线观看 | 免费日韩| 片网址 | 欧美日韩另类在线 | 国内久久精品视频 | avove黑丝 | www.狠狠色.com | 99国产精品一区二区 | 国产视频亚洲视频 | 午夜国产一区二区三区四区 | 国产精品69久久久久 | 国产精品毛片久久久久久久 | 深夜福利视频在线观看 | 欧美另类69 | 成人免费视频观看 | 91看片黄色| 国产精品1区2区3区在线观看 | av福利免费 | 亚洲伊人色 | 免费av在| 丁香5月婷婷久久 | 一区免费在线 | 国产精品亚洲片夜色在线 | 国产视频久 | 午夜久久电影网 | 狠狠久久 | 亚洲在线精品 | 国产黑丝袜在线 | 国产精品igao视频网入口 | 色婷婷av一区 | 国产精品亚洲片夜色在线 | 日韩a在线看 | 国产精品h在线观看 | 成年人电影毛片 | 国产综合激情 | 91麻豆精品久久久久久 | 亚洲综合视频在线 | 又黄又刺激又爽的视频 | 日本最大色倩网站www | 国产色网站 | 欧美少妇xx | 日韩在线理论 | 天天操天天舔天天干 | 国产97超碰| 久草干 | 国产亚洲精品久久久久久久久久 | 日日日视频 | 国产999精品| 久久99精品久久久久蜜臀 | 国产福利精品在线观看 | 久久在线精品视频 | 不卡精品 | 国产精品免费在线视频 | 国产精品久久一区二区三区不卡 | 欧美日韩电影在线播放 | 成人免费一级片 | 国产 欧美 日产久久 | 9在线观看免费高清完整 | 亚洲精品高清视频在线观看 | 亚洲精品在线免费 | 99精品国产兔费观看久久99 | 国产日韩欧美在线 | 国产美女视频黄a视频免费 久久综合九色欧美综合狠狠 | 日韩欧美视频二区 | www.在线观看视频 | 国产精品不卡在线 | 91精品久久久久久久久久入口 | 欧美成天堂网地址 | 天堂v中文 | 97碰碰碰| 国内久久久 | 在线国产一区二区三区 | 大荫蒂欧美视频另类xxxx |