日韩精品一区二区三区在线视频放-无码中文字幕V?一区二区-成年片免费观看视频-国内少妇人妻丰满av-国产精品中文字幕免费观看-亚洲成人久久一区二区三区-国内少妇偷人精品视频无缓冲-一区二区国产精品日本一区二区三区在线网

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營的一線實(shí)戰(zhàn)洞察。

MySQL事務(wù)底層原理:redo log、undo log、MVCC與鎖機(jī)制全解析

MySQL事務(wù)底層原理:redo log、undo log、MVCC與鎖機(jī)制全解析 前幾天我一個(gè)朋友去面某廠的Java后端崗被問到“MySQL事務(wù)的底層原理是什么”他說自己當(dāng)時(shí)腦子里蹦出來的只有ACID四個(gè)字母其他的什么redo log、undo log、MVCC、間隙鎖全卡殼了。這個(gè)問題我去面別人的時(shí)候也喜歡問倒不是為了刁難人而是它真的很能區(qū)分一個(gè)人是背過八股還是真把數(shù)據(jù)庫搞通過。MySQL事務(wù)這塊的知識(shí)點(diǎn)是隔離級(jí)別、日志機(jī)制、索引結(jié)構(gòu)、并發(fā)控制、甚至Spring事務(wù)管理的交匯點(diǎn)你把這一條線理清了數(shù)據(jù)庫這塊的面試基本就穩(wěn)了一大半。這篇文章我按我自己做面試復(fù)盤的習(xí)慣來寫把MySQL事務(wù)底層原理拆成六塊先講事務(wù)解決什么問題再講redo log、undo log、binlog三大日志然后是MVCC和ReadView接著是鎖和幻讀的解法最后補(bǔ)上長事務(wù)、Spring事務(wù)失效這些高頻追問以及一份可以直接背的面試速查。適合準(zhǔn)備秋招春招的Java后端、需要梳理知識(shí)體系的MySQL使用者還有那些“用事務(wù)用了好幾年但說不清原理”的工程師。1. 先弄明白事務(wù)到底在解決什么問題1.1 從一個(gè)經(jīng)典的扣款場景說起講事務(wù)原理之前先想一個(gè)每個(gè)后端都寫過的代碼轉(zhuǎn)賬。A賬戶扣100塊B賬戶加100塊。如果扣完A的錢之后系統(tǒng)突然斷電了B的錢沒加這錢就憑空消失了。業(yè)務(wù)上絕對不允許這種狀態(tài)出現(xiàn)所以我們要把“扣A”和“加B”綁成一個(gè)整體要么都成功要么都失敗——這個(gè)“整體”就是事務(wù)。但事務(wù)不是只解決“全成功或全失敗”這一個(gè)問題。你在高并發(fā)場景下還會(huì)遇到別的麻煩兩個(gè)用戶同時(shí)讀同一個(gè)數(shù)據(jù)一個(gè)改了另一個(gè)還在用舊值一個(gè)事務(wù)在統(tǒng)計(jì)總額另一個(gè)事務(wù)在瘋狂插入新訂單統(tǒng)計(jì)結(jié)果一會(huì)兒多一條一會(huì)兒少一條兩個(gè)人同時(shí)改同一行數(shù)據(jù)最后誰覆蓋誰……這些問題事務(wù)都要管。所以數(shù)據(jù)庫的事務(wù)機(jī)制本質(zhì)上是應(yīng)對四類問題的工具原子性管“要么全做要么全不做”一致性管“數(shù)據(jù)永遠(yuǎn)滿足業(yè)務(wù)規(guī)則”隔離性管“并發(fā)事務(wù)之間互不干擾”持久性管“數(shù)據(jù)提交了就不會(huì)丟”。這四件事看著抽象底層都有實(shí)打?qū)嵉臋C(jī)制在支撐后面幾節(jié)我會(huì)一個(gè)個(gè)對應(yīng)著講。1.2 ACID四兄弟各自的底層靠山很多人背ACID就是背字母面試被追問一句“原子性靠什么實(shí)現(xiàn)”就啞火了。這里給你一張對照表把四兄弟和底層機(jī)制對應(yīng)起來ACID特性解決什么問題底層核心機(jī)制原子性 Atomicity事務(wù)內(nèi)操作要么全成功要么全回滾undo log回滾日志一致性 Consistency數(shù)據(jù)在事務(wù)前后滿足約束和業(yè)務(wù)規(guī)則應(yīng)用代碼 數(shù)據(jù)庫約束 其他三個(gè)特性共同保證隔離性 Isolation并發(fā)事務(wù)不互相干擾鎖機(jī)制 MVCC多版本并發(fā)控制持久性 Durability事務(wù)提交后數(shù)據(jù)不丟失redo log重做日志 binlog注意一致性跟前三個(gè)不一樣它不是一個(gè)獨(dú)立的機(jī)制更像是“目的”。原子性、隔離性、持久性都做到了一致性這個(gè)結(jié)果自然就有了。比如轉(zhuǎn)賬場景只要原子性保證了扣款和加款同時(shí)成功或同時(shí)失敗賬就是平的一致性就滿足了。但有些一致性靠數(shù)據(jù)庫管不了比如“庫存不能為負(fù)數(shù)”你得在業(yè)務(wù)代碼里判斷或者建一個(gè)CHECK約束數(shù)據(jù)庫沒有義務(wù)替你想業(yè)務(wù)規(guī)則。面試官如果問“ACID分別靠什么實(shí)現(xiàn)”你就說原子性靠undo log回滾持久性靠redo log和binlog隔離性靠鎖和MVCC一致性是前三者共同作用的結(jié)果。這個(gè)答案一句話就把后面所有細(xì)節(jié)串起來了。2. 三大日志redo log、undo log、binlog底層持久化的命根子2.1 redo log為什么必須存在隨機(jī)寫和順序?qū)懙牟顒e先問一個(gè)問題InnoDB的數(shù)據(jù)是存在哪里的存在磁盤上的B樹索引文件里這個(gè)沒問題。但你要知道你執(zhí)行一條UPDATE語句InnoDB不是馬上去改磁盤上那個(gè)B樹頁里的數(shù)據(jù)因?yàn)榇疟P隨機(jī)讀寫太慢了。它是先把對應(yīng)的數(shù)據(jù)頁加載到內(nèi)存的Buffer Pool里在內(nèi)存里改掉然后事務(wù)提交的時(shí)候就把這個(gè)修改記錄到redo log里redo log是順序追加寫的比隨機(jī)寫快幾個(gè)數(shù)量級(jí)。之后系統(tǒng)會(huì)在某個(gè)合適的時(shí)間再把內(nèi)存里的臟頁刷回磁盤。這就是WAL機(jī)制Write-Ahead Logging先寫日志再寫數(shù)據(jù)。為什么要這么設(shè)計(jì)生活化類比一下你開了個(gè)飯店每天的流水很大每來一桌客人都把賬本翻出來改會(huì)很慢你也怕客人走了忘記。所以你先在一個(gè)小本子上按順序記“今天第幾桌點(diǎn)了什么菜花了多少錢”晚上打烊了再慢慢把它謄寫到正式賬本上。萬一中途停電了你手上的小本子還在賬就不會(huì)丟。redo log有兩個(gè)關(guān)鍵特性它是物理日志記錄的是“某個(gè)頁的某個(gè)偏移量改成了什么值”而不是“執(zhí)行了什么SQL”所以恢復(fù)速度很快它的文件是固定大小、循環(huán)寫的寫滿了會(huì)觸發(fā)checkpoint把臟頁刷盤、推進(jìn)LSN日志序列號(hào)然后把舊日志覆蓋掉。redo log的“重做”能力就是崩潰恢復(fù)時(shí)把那些已經(jīng)提交但還沒來得及刷盤的數(shù)據(jù)頁重新應(yīng)用一遍日志保證不會(huì)丟已提交的事務(wù)。這也正是持久性的核心。2.2 undo log回滾和MVCC版本鏈的起點(diǎn)redo log負(fù)責(zé)“重做”undo log正好相反負(fù)責(zé)“撤銷”。事務(wù)執(zhí)行過程中每改一行數(shù)據(jù)InnoDB都會(huì)記一條undo log里面保存的是這行數(shù)據(jù)修改前的樣子。事務(wù)回滾的時(shí)候就拿著undo log把數(shù)據(jù)改回去。舉個(gè)簡潔的例子事務(wù)T1執(zhí)行UPDATE user SET age 30 WHERE id 1原來age是20。InnoDB會(huì)先寫一條undo logid1這行原來的age20然后才把a(bǔ)ge改成30。如果T1要回滾就根據(jù)這條undo log把a(bǔ)ge改回20。但undo log的作用不止回滾它還是MVCC的地基。每一行數(shù)據(jù)上都會(huì)有一個(gè)隱藏的DB_ROLL_PTR字段指向它上一個(gè)版本的undo log這樣多個(gè)版本的數(shù)據(jù)就串成了一條“版本鏈”。后面講MVCC時(shí)你會(huì)看到這條版本鏈就是事務(wù)判斷“哪個(gè)版本對我來說可見”的關(guān)鍵。另外有個(gè)很多人忽略的細(xì)節(jié)undo log也是要持久化的它也要寫redo log因?yàn)槿绻罎⒘藘?nèi)存里的undo信息丟了沒有redo的話連回滾都做不了。這個(gè)點(diǎn)面試不常見但提出來會(huì)顯得你確實(shí)讀過源碼層面的東西。2.3 binlog 兩階段提交主從復(fù)制和數(shù)據(jù)一致性的保障redo log是InnoDB存儲(chǔ)引擎層的日志binlog則是MySQL Server層的日志。redo log記錄頁級(jí)物理修改binlog記錄的是邏輯SQL或者說“做了什么變更”并且binlog是追加寫的不會(huì)覆蓋所以它才是主從復(fù)制和數(shù)據(jù)恢復(fù)的主角從庫拿到binlog在本地重放一遍就變成了主庫的樣子。但這就有個(gè)嚴(yán)重問題redo log是引擎層的binlog是Server層的兩層日志各自寫各自的萬一寫完還沒寫完就崩了數(shù)據(jù)就不一致了。比如主庫redo log里已經(jīng)標(biāo)記事務(wù)提交了但binlog還沒來得及寫這時(shí)候從庫同步不到這條變更主從就亂了。解決辦法是兩階段提交事務(wù)提交時(shí)先寫redo log并標(biāo)記為prepare狀態(tài)然后寫binlog最后再把redo log標(biāo)記為commit狀態(tài)。崩潰恢復(fù)時(shí)MySQL會(huì)檢查所有狀態(tài)為prepare的redo log看對應(yīng)的binlog是否完整如果binlog完整就判定事務(wù)可以提交補(bǔ)一條commit如果binlog不完整就回滾這個(gè)事務(wù)。因?yàn)閎inlog寫完整的那一刻主從才能拿到一致的數(shù)據(jù)。這個(gè)設(shè)計(jì)保證了引擎日志和Server日志的最終一致也是面試?yán)铩癲istributed transaction的Mini版”——兩階段提交的思想在MySQL內(nèi)部就是真實(shí)落地了的。注意很多人會(huì)問“既然有redo log了為什么還需要binlog”。本質(zhì)原因是分工不同redo log是InnoDB為了崩潰恢復(fù)和持久性設(shè)計(jì)的它循環(huán)寫、會(huì)覆蓋不能用于全量時(shí)間點(diǎn)恢復(fù)和主從同步binlog是MySQL提供邏輯復(fù)制和審計(jì)能力的二進(jìn)制事件完整、可回溯二者缺一不可。3. MVCC全解析快照讀不鎖行到底靠什么隔離3.1 行記錄里的三個(gè)隱藏字段MVCC全稱Multi-Version Concurrency Control多版本并發(fā)控制。這個(gè)名字聽起來高大上核心就一句話數(shù)據(jù)庫存了這行數(shù)據(jù)的多個(gè)歷史版本事務(wù)讀的時(shí)候通過判斷版本可見性選一個(gè)自己能看的版本這樣就實(shí)現(xiàn)了讀寫互不阻塞。那多版本存在哪除了我們剛說的undo log版本鏈還有一個(gè)關(guān)鍵角色每一行記錄上都有三個(gè)隱藏字段。隱藏字段作用DB_TRX_ID最近一次修改這行記錄的事務(wù)IDDB_ROLL_PTR回滾指針指向上一個(gè)版本的 undo logDB_ROW_ID隱藏主鍵表沒有顯式主鍵時(shí)InnoDB用它生成聚簇索引這三兄弟的分工很明確DB_TRX_ID告訴你這行是誰改的DB_ROLL_PTR告訴你它改之前的舊版在哪。你要看這個(gè)版本對自己可不可見核心就是拿DB_TRX_ID和“當(dāng)前有哪些事務(wù)在跑”這個(gè)信息做比較——這個(gè)信息就是ReadView。有一種叫RR可重復(fù)讀的隔離級(jí)別下事務(wù)第一次執(zhí)行快照讀生成一套R(shí)eadView之后整個(gè)事務(wù)期間都用同一套所以你在同一個(gè)事務(wù)里反復(fù)查看到的數(shù)據(jù)始終是第一次讀時(shí)那個(gè)快照。這就是“可重復(fù)讀”名稱的由來。3.2 ReadView的可見性判斷規(guī)則逐條拆解ReadView不是一張表Transaction隔離級(jí)別的實(shí)現(xiàn)機(jī)制。生成ReadView的那一刻它會(huì)記錄四樣?xùn)|西creator_trx_id創(chuàng)建這個(gè)ReadView的事務(wù)ID。m_ids生成ReadView時(shí)當(dāng)前系統(tǒng)里所有“活躍事務(wù)”的ID列表?;钴S的意思是還沒提交。min_trx_idm_ids里最小的那個(gè)事務(wù)ID。max_trx_id生成ReadView時(shí)系統(tǒng)分配過的下一個(gè)事務(wù)ID。注意這不是當(dāng)前最大的事務(wù)ID而是“預(yù)分配”的表示以后新建的事務(wù)ID都會(huì)大于等于這個(gè)值。有了這四個(gè)值判斷某一行記錄的DB_TRX_ID對當(dāng)前事務(wù)是否可見按下面順序走如果 DB_TRX_ID creator_trx_id說明這行就是當(dāng)前事務(wù)自己改的當(dāng)然可見。如果 DB_TRX_ID min_trx_id說明修改這行的事務(wù)在ReadView生成之前就提交了可見。如果 DB_TRX_ID max_trx_id說明修改這行的事務(wù)是在ReadView生成之后才開啟的不可見。如果 min_trx_id DB_TRX_ID max_trx_id就要查它是否在m_ids里如果在說明這個(gè)事務(wù)還沒提交不可見如果不在說明它已經(jīng)提交了可見。如果按這些規(guī)則判斷當(dāng)前版本不可見就通過DB_ROLL_PTR沿著undo log版本鏈表往前找一直找到可見的版本或者找到頭為止。這個(gè)過程就是MVCC的“版本鏈回溯”。這也是為什么undo log不能隨便刪只要還有活躍的ReadView在用舊版本對應(yīng)的undo log就必須保留下來。3.3 RC和RR的區(qū)別就一個(gè)生成時(shí)機(jī)的事讀已提交RC和可重復(fù)讀RR是MySQL最常用的兩種隔離級(jí)別它們的MVCC判斷邏輯一模一樣唯一區(qū)別就是ReadView的生成時(shí)機(jī)RC每次執(zhí)行快照讀都會(huì)生成一個(gè)新的ReadView所以同一個(gè)事務(wù)里兩次SELECT查詢可能看到別的事務(wù)剛剛提交的新數(shù)據(jù)這就導(dǎo)致不可重復(fù)讀。RR事務(wù)第一次執(zhí)行快照讀時(shí)生成ReadView之后整個(gè)事務(wù)都用這一套不重新生成所以能看到的數(shù)據(jù)始終是第一次讀時(shí)的快照這就是可重復(fù)讀。你看精髓就一句話??芍貜?fù)讀和讀已提交底層不是兩套機(jī)制就是同一個(gè)機(jī)制換了“什么時(shí)候睜眼”的策略。面試的時(shí)候能把這個(gè)區(qū)別講出來比背一百遍定義都有用。3.4 快照讀和當(dāng)前讀面試時(shí)別搞混講MVCC的可見性時(shí)我一直在強(qiáng)調(diào)“快照讀”因?yàn)镸VCC只管不加鎖的普通SELECT。但還有一類操作叫“當(dāng)前讀”它讀的是數(shù)據(jù)的最新版本并且會(huì)加鎖包括SELECT ... FOR UPDATE加排他鎖SELECT ... LOCK IN SHARE MODE加共享鎖UPDATE、DELETE、INSERT這些操作不能用MVCC的快照必須讀到當(dāng)前最新值否則更新就可能基于舊數(shù)據(jù)覆蓋別人的修改。當(dāng)前讀的并發(fā)控制靠的是鎖這就是下一節(jié)要講的鎖機(jī)制。很多人面試翻車就翻在把“MVCC解決了幻讀”這句話說得太絕對。實(shí)際情況是普通的快照讀靠MVCC解決了幻讀的一部分而當(dāng)前讀靠的是間隙鎖和臨鍵鎖。你要分清楚面試官追問“那如果先用快照讀看到?jīng)]有某行再用當(dāng)前讀去插入會(huì)不會(huì)出問題”你能答出來才算真的懂。4. 鎖機(jī)制當(dāng)前讀并發(fā)控制的地基4.1 S鎖、X鎖、意向鎖先分清粒度InnoDB的鎖可以從多個(gè)維度分類。按“讀寫模式”分有共享鎖S鎖和排他鎖X鎖規(guī)則很簡單S鎖和S鎖可以共存因?yàn)槎贾皇亲x不會(huì)互相影響S鎖和X鎖不能共存X鎖和X鎖也不能共存。一句話總結(jié)——只有讀讀兼容讀寫和寫寫都不兼容。按“鎖粒度”分有行級(jí)鎖和表級(jí)鎖。InnoDB支持行鎖這也是它比MyISAM適合并發(fā)寫的原因之一。但注意InnoDB還有一個(gè)特殊的表級(jí)鎖叫意向鎖當(dāng)一個(gè)事務(wù)要給某一行加S鎖它會(huì)先自動(dòng)在表上加意向共享鎖IS要給某一行加X鎖就先在表上加意向排他鎖IX。意向鎖的意義是當(dāng)一個(gè)事務(wù)想對整張表加鎖比如ALTER TABLE時(shí)可以快速判斷表上有沒有行鎖存在而不需要一行一行去掃描。IS和IX之間是兼容的因?yàn)樗鼈冎皇窃凇氨砑?jí)別打個(gè)標(biāo)記”真正互斥的判斷還是落到行級(jí)別。4.2 記錄鎖、間隙鎖、臨鍵鎖從行鎖到范圍鎖行級(jí)鎖里還有細(xì)分記錄鎖Record Lock鎖的是索引記錄本身。注意InnoDB的行鎖是通過索引實(shí)現(xiàn)的如果你更新數(shù)據(jù)時(shí)沒有走索引那可能會(huì)鎖全表這個(gè)坑后面細(xì)說。間隙鎖Gap Lock鎖的是兩個(gè)索引記錄之間的“間隙”范圍是左開右開比如索引上有1、5、10三條記錄間隙鎖可以鎖1,5這個(gè)區(qū)間在這個(gè)區(qū)間內(nèi)不允許插入新記錄目的是防止“幻讀”——防止別的事務(wù)往縫隙里插入新數(shù)據(jù)。臨鍵鎖Next-Key Lock記錄鎖和間隙鎖的組合范圍是左開右閉。比如鎖的是(1,5]這個(gè)區(qū)間它既鎖住5這條記錄也鎖住1到5之間的間隙。InnoDB在RR隔離級(jí)別下默認(rèn)使用的就是臨鍵鎖。為什么要搞出這么多種鎖因?yàn)楣怄i住已有記錄是不夠的幻讀的本質(zhì)是“事務(wù)A兩次查詢第二次多出來一些之前不存在的記錄”這些新記錄是別的事務(wù)插入進(jìn)來的而插入發(fā)生的位置正是索引記錄之間的“間隙”。所以不鎖住間隙就封不住新插入。4.3 幻讀到底怎么沒的臨鍵鎖實(shí)戰(zhàn)推演我們用一個(gè)具體場景推演一下。假設(shè)一張訂單表orderid是主鍵索引當(dāng)前有id為1、5、10的三條記錄。事務(wù)A執(zhí)行SELECT * FROM order WHERE id 3 FOR UPDATE這是當(dāng)前讀InnoDB會(huì)對滿足條件的范圍加臨鍵鎖實(shí)際鎖住的區(qū)間是(1,5]、(5,10]和(10,正無窮)也就是鎖住了5、10這兩條已有記錄同時(shí)鎖住了它們之間的所有間隙。這時(shí)如果事務(wù)B要插入一條id7的新訂單插入時(shí)它要判斷7落在哪個(gè)間隙里發(fā)現(xiàn)落在(5,10)這個(gè)間隙而這個(gè)間隙被事務(wù)A的間隙鎖鎖住了于是事務(wù)B只能阻塞等待直到事務(wù)A提交或回滾釋放鎖。這樣一來事務(wù)A在事務(wù)期間不管執(zhí)行多少次當(dāng)前讀查到的記錄都不會(huì)多出新的幻讀就被堵死了。如果是普通的快照讀比如不帶 FOR UPDATE 的 SELECT事務(wù)A第一次查詢時(shí)生成了ReadView后續(xù)一直在快照里看本來就不會(huì)看到新插入的數(shù)據(jù)所以也不會(huì)有幻讀問題。但要注意如果事務(wù)A先用快照讀查了一次沒有查到id7然后事務(wù)B插入并提交了id7事務(wù)A此時(shí)執(zhí)行INSERT INTO order ... id7會(huì)因?yàn)橹麈I沖突或者間隙鎖阻塞而報(bào)錯(cuò)——這在RR級(jí)別下確實(shí)可能發(fā)生所以不能把MVCC吹成“完全杜絕一切并發(fā)沖突”只能說它在大部分讀寫場景下保證了隔離性和性能的平衡。注意間隙鎖是有副作用的它會(huì)讓插入操作被莫名阻塞降低并發(fā)度。所以在RC級(jí)別下InnoDB默認(rèn)關(guān)閉了間隙鎖只保留記錄鎖這也是為什么很多高并發(fā)系統(tǒng)會(huì)選擇RC而不是RR——可重復(fù)讀的隔離性帶來了一部分并發(fā)損耗。當(dāng)然RC會(huì)有不可重復(fù)讀問題這就需要業(yè)務(wù)自己權(quán)衡了。5. 面試官愛追的連環(huán)問長事務(wù)、引擎差異和Spring事務(wù)失效5.1 長事務(wù)的危害為什么DBA強(qiáng)調(diào)別開長事務(wù)面試官前面問完原理后面通常喜歡來一句“那長事務(wù)有什么危害”這個(gè)問題看著簡單其實(shí)是在考你的綜合理解。長事務(wù)指的是長時(shí)間不提交的事務(wù)它的危害可以連著原理推導(dǎo)出來一是鎖資源長期占用。RR級(jí)別下當(dāng)前讀加了臨鍵鎖事務(wù)不提交鎖就不釋放其他事務(wù)的DML會(huì)被阻塞接口RT肉眼可見地上升。二是undo log膨脹。MVCC要求舊版本不能被清理因?yàn)榭赡苓€有事務(wù)在按舊ReadView讀數(shù)據(jù)。長事務(wù)一直不提交它生成的ReadView一直存著undo log版本鏈就越攢越長數(shù)據(jù)文件越來越大之后的快照讀要沿著版本鏈回溯很多層才能找到可見版本查詢性能直線下降。三是binlog和redo log相關(guān)的問題。雖然日志本身有存儲(chǔ)清理策略但長事務(wù)會(huì)讓purge線程無法推進(jìn)undo表空間沒法收縮甚至可能因?yàn)閡ndo log膨脹導(dǎo)致磁盤打滿。實(shí)戰(zhàn)建議就是事務(wù)里只放必要的DML和業(yè)務(wù)操作遠(yuǎn)程調(diào)用、消息發(fā)送、文件處理這些耗時(shí)操作千萬別放在事務(wù)里代碼里設(shè)置事務(wù)超時(shí)時(shí)間兜底防止事務(wù)一直掛在那。5.2 為什么MyISAM不支持事務(wù)引擎選型和安裝時(shí)的坑MySQL的存儲(chǔ)引擎是插件式的MyISAM和InnoDB是兩套完全不同的實(shí)現(xiàn)。MyISAM不支持事務(wù)也不支持行級(jí)鎖它當(dāng)年靠的是全表鎖和超快的讀性能在只讀報(bào)表場景還有一定優(yōu)勢但在OLTP高并發(fā)寫場景完全不行。這里要理解一個(gè)關(guān)鍵點(diǎn)事務(wù)的三大底層機(jī)制——redo log、undo log、MVCC、行鎖——都是InnoDB寫在引擎內(nèi)部的。MyISAM引擎沒有實(shí)現(xiàn)這層?xùn)|西所以不管你的事務(wù)隔離級(jí)別設(shè)成什么MyISAM表都不會(huì)真正開啟事務(wù)執(zhí)行事務(wù)操作時(shí)不會(huì)報(bào)錯(cuò)但回滾和原子性保證都不存在。這跟Spring的Transactional注解沒有關(guān)系注解只是告訴Spring去協(xié)調(diào)引擎本身不支持再好的協(xié)調(diào)也沒用。如果你在安裝或使用MySQL時(shí)發(fā)現(xiàn)“事務(wù)不生效”第一件事就是查表的存儲(chǔ)引擎是不是MyISAM。建表時(shí)顯式指定ENGINEInnoDB或者修改default_storage_engineInnoDB這算是DBA和新手最常遇到的坑之一?,F(xiàn)在MySQL 8.0默認(rèn)就是InnoDB但老項(xiàng)目或某些云數(shù)據(jù)庫里MyISAM殘留的情況并不少見。5.3 Spring事務(wù)失效的幾類經(jīng)典場景盤點(diǎn)后端面試到這里Spring事務(wù)失效幾乎是必問的而且特別適合出成“你覺得這個(gè)事務(wù)會(huì)回滾嗎”這種題。我盤一下我自己踩過和見過的高頻踩坑場景第一方法自調(diào)用。在一個(gè)類里方法A調(diào)用同類方法BB上有Transactional但事務(wù)不生效。原因是Spring事務(wù)基于AOP代理實(shí)現(xiàn)只有通過代理對象調(diào)用方法事務(wù)通知才會(huì)介入而自調(diào)用走的是this直接調(diào)用繞過了代理。解決辦法是注入自己的代理或者把B挪到另一個(gè)類。第二非public方法。Spring事務(wù)切面對非public方法不生效這是代理機(jī)制的限制。與其糾結(jié)怎么配置繞過不如直接規(guī)定“事務(wù)方法必須是public”。第三異常被catch吞掉。方法里try-catch捕獲了異常但是沒有拋出Spring感知不到異常自然不會(huì)回滾。解決辦法是不要在事務(wù)方法里吞異常要么重新拋出要么手動(dòng)TransactionAspectSupport.currentTransactionStatus().setRollbackOnly()。第四拋出的是受檢異常。Spring默認(rèn)只對RuntimeException和Error回滾對受檢異常默認(rèn)不回滾。所以如果要讓受檢異常也回滾要在Transactional(rollbackFor Exception.class)里顯式聲明。第五事務(wù)傳播行為設(shè)置錯(cuò)誤。比如內(nèi)層方法用了REQUIRES_NEW外層事務(wù)回滾時(shí)內(nèi)層已經(jīng)提交了你看到的結(jié)果就是“部分回滾”。第六數(shù)據(jù)庫引擎不支持。這跟前面講的MyISAM問題對應(yīng)上了如果表是MyISAM事務(wù)注解等于白寫。這六類場景每一類都能單獨(dú)出一道面試題而且每一類背后都指向一個(gè)底層原理Spring事務(wù)是通過AOP動(dòng)態(tài)代理協(xié)調(diào)數(shù)據(jù)庫事務(wù)的代理、異常類型、傳播機(jī)制、存儲(chǔ)引擎能力任何一環(huán)不對事務(wù)就失效。6. 常見問題排查與面試速查6.1 面試高頻追問QA速查表整理一份我自己面試時(shí)常用的口答模板用口語化的方式把核心觀點(diǎn)說清楚比背長定義有競爭力得多。面試問題推薦回答思路說一下MySQL事務(wù)的隔離級(jí)別讀未提交有臟讀讀已提交解決臟讀但有不可重復(fù)讀可重復(fù)讀是InnoDB默認(rèn)級(jí)別解決不可重復(fù)讀串行化最嚴(yán)格但性能差。重點(diǎn)說RC和RR的區(qū)別??芍貜?fù)讀怎么解決幻讀分兩條快照讀靠MVCC的ReadView當(dāng)前讀靠間隙鎖和臨鍵鎖。要主動(dòng)提到“RR下當(dāng)前讀和快照讀可能看到不一致數(shù)據(jù)”這個(gè)坑。MVCC是怎么實(shí)現(xiàn)的隱藏字段DB_TRX_ID、DB_ROLL_PTR加undo log版本鏈外加ReadView的四個(gè)組成值和可見性判斷規(guī)則。redo log和binlog的區(qū)別redo log是InnoDB層物理日志、循環(huán)寫、用于崩潰恢復(fù)binlog是Server層邏輯日志、追加寫、用于主從復(fù)制和時(shí)間點(diǎn)恢復(fù)兩者靠兩階段提交保證一致。什么情況下會(huì)發(fā)生死鎖多個(gè)事務(wù)以不同順序申請同一批資源比如事務(wù)A先鎖id1再鎖id2事務(wù)B先鎖id2再鎖id1互相等著對方釋放。InnoDB會(huì)檢測死鎖并回滾代價(jià)較小的事務(wù)但最好還是通過固定加鎖順序避免死鎖。事務(wù)提交時(shí)數(shù)據(jù)什么時(shí)候落盤提交時(shí)只保證redo log落盤數(shù)據(jù)頁靠checkpoint機(jī)制在后臺(tái)異步刷盤這就是WAL。一條UPDATE的執(zhí)行鏈路先寫undo log在Buffer Pool中改數(shù)據(jù)頁記錄redo logprepare寫binlogredo log標(biāo)記commit最終臟頁異步刷盤。這套QA不是讓你背答案而是幫你建立“先結(jié)論后原理”的答題結(jié)構(gòu)。面試官聽的是你推導(dǎo)過程是否清晰不是聽你背得多流利。6.2 我實(shí)戰(zhàn)中踩過的幾個(gè)事務(wù)相關(guān)的坑最后分享幾個(gè)我在真實(shí)項(xiàng)目里排查過的坑每一個(gè)都花了不小的代價(jià)才定位到根因?qū)懗鰜硐M蠹疑僮邚澛?。第一個(gè)坑是“事務(wù)里做了遠(yuǎn)程調(diào)用”。當(dāng)時(shí)一個(gè)下單接口開啟事務(wù)后調(diào)用了庫存服務(wù)的HTTP接口結(jié)果庫存服務(wù)響應(yīng)超時(shí)HTTP調(diào)用的等待時(shí)間把事務(wù)拉得特別長數(shù)據(jù)庫連接池被占滿整個(gè)服務(wù)雪崩。后來把遠(yuǎn)程調(diào)用挪到事務(wù)外面事務(wù)里只留著更新本庫訂單表的操作問題立刻緩解。第二個(gè)坑是“大事務(wù)批量更新導(dǎo)致的死鎖”。系統(tǒng)里有個(gè)月度結(jié)算任務(wù)開啟一個(gè)大事務(wù)循環(huán)更新幾千條數(shù)據(jù)。因?yàn)檠h(huán)里更新是無序的兩個(gè)批次之間加鎖順序不一致偶爾就觸發(fā)死鎖。后來把所有更新的主鍵排序統(tǒng)一按順序更新死鎖基本消失。第三個(gè)坑是“RC下間隙鎖關(guān)閉帶來的并發(fā)問題”。一個(gè)高并發(fā)扣減庫存的系統(tǒng)把數(shù)據(jù)庫隔離級(jí)別從RR調(diào)成了RC來提升并發(fā)性能結(jié)果扣減后超賣——因?yàn)镽C下沒有間隙鎖兩個(gè)事務(wù)同時(shí)讀到庫存為1都執(zhí)行了扣減。最后在UPDATE語句里加了UPDATE ... WHERE stock 0的原子條件靠數(shù)據(jù)庫層面的條件判斷來兜底才徹底解決超賣問題。這三個(gè)坑的共同點(diǎn)是事務(wù)原理不是書上的理論只要線上出問題最終都會(huì)回到鎖、日志、隔離級(jí)別這些底層概念上。你理解得越透排查越快。我個(gè)人更推薦在學(xué)習(xí)事務(wù)原理時(shí)找一臺(tái)本地MySQL實(shí)例開兩個(gè)終端用BEGIN開事務(wù)手動(dòng)在不同隔離級(jí)別下做實(shí)驗(yàn)查information_schema.innodb_trx看活躍事務(wù)用SHOW ENGINE INNODB STATUS看鎖等待和死鎖信息。這種“動(dòng)手推演”的方式比背任何八股文都管用。面試遇到事務(wù)題時(shí)能舉一個(gè)自己實(shí)驗(yàn)過的例子比夸夸其談強(qiáng)一百倍。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
国产馆极品诱惑| 久久久久久中文版| 91精品成人| 手机av亚洲丝袜美腿日韩第一页二页| 天天激色| 国产 日韩 欧美一区| 自拍偷拍2025在线观看| 色婷婷综合久久久久中文国产精品一区中文字幕,国产福利电影一区二区三区 | 东京成人一区| 97国产精品| 探花精品 一区二区| 91精品国产91综合久久蜜臀| 91国产丝袜美女| 啪啪啪亚欧美视频| 九九在线视频| 一区二区影院| 伊人大香蕉在线| 精品四五区| 91美女视频。| 国产二区三区免费视频| 国产成人一级av88| 久久婷婷五月天| 久久九九精品一区二区| 欧美系列在线一区二区| 国产伊人精品在线| 一二三四免费视频| 午夜激情成人在线观看| 女人高潮大叫一级毛片| 欧美日本天堂| 成人三一级一片aaa| 久久久艹艹艹| 黄色香蕉视频网站一区| 免费亚洲国产精品久久一区| 中文字幕aⅴ在线视频| 久久夜嗨| 日本视频一区二区三区| 草草草视频| 亚洲欧洲另类| 欧美真人抽搐一进一出gif| 久草精品热视| 欧美日韩国产高清在线一二三区| 97在线观| 人妻黑丝袜电影| 亚洲另类欧美精品| 色www精品视频在线观看| 国产日韩在线播放| 福利视频香蕉免费一区二区在线| 黄色不卡视频| 亚洲婷婷五月天| 亲子敌伦对白在线播放| 果冻传媒A片一二三区| 色爱国产| 日本免费中文一区二区三区四区| 熟妇的味道HD中文字幕| 日韩精品人妻一区二区| 久久精品中文字幕女同| 日韩专区数据列表-第3230页-精品国产一区二区三区香蕉 久久99熟女人妻中文字 | 日美免费黄片| 人人妻人射| 亚洲欧美在线丝袜| 亚洲欧美综合图片| 99re3这里只有精品| 丁香五月久久| 日本在线激情一区二区三区| 精品久久久高清无码| 91人妻人人澡人人爽人人精品| 日本丝袜美腿人妻九九| 永久免费发布性爱网| 亚洲一区二区三区春色| 亚洲网站一区二区在线| 久久一区二区三区四区五区| 91精品人妻| 日韩精品大香蕉伊人在线| av久日| 天天日日夜夜| 国产人妻精品久久久一区二区三区 | 日韩免费中文字幕视频| 无码高清操逼网址| 特级丰满少妇一级AAAA爱毛片| 成人aⅴ一区二区三区| 色欲av一区二区三区蜜芽| 麻豆三极片| 7777奇米影视久久| 综合熟女| 97超碰色屌| 中文字幕第23区| 少妇精品久久久八区九区| 日夜尻逼网| 97超碰色情| 无码人妻1727| 丁香六月啪| 久久久久性熟视频| 天天影视网色欲色香| 亚州欧美在线| 国产精品久久久久久照片| 亚洲欧美综合| 五月天激情四射| 中文字幕在线观看AV| 国产99999久久精品| 日日干日日摸| 99精品久久久久久久婷婷| 亚洲色偷偷色噜噜狠狠99网| 黄站在线免费观看| 国产精品久久久久久亚洲色欲| 在线观看亚洲专区| 啊灬快c我灬啊灬用力灬啊灬-国产精品性做久久久久久-成人AV | 婷婷精品久久av影视| 99婷婷| 黄色大香焦1级‘′‘| 免费国产电影一区二区| 网页导航五月天免费一二三区| 亚洲国产精品久久久久婷婷青年| 九久久精| 99热综合| 亚洲日韩黑丝| 免费av在线播放二区| 成年人一级黄色毛片大全在线观看| 黑人性暴力毛片| 天天爽入口| 97天堂| 精品人人插人人操| 91欧美经典| 女人被添高潮免费视频| 小日子操bb在线看| 亚洲 欧美 日韩另类 麻豆| 夜夜性| 日韩精品中文字幕一| 亚州色站 日韩电影| 日韩精品一区二区高清 | 人人妻碰人人免费| 欧美色日本| 欧美不卡在线一区二区| 日韩啪啪啪视频| 一级黄色性爱A级片| 精品九九九九九| 日日操免费视频| 久久精品 六十路 熟女 欧美| 国产一区二区三区导航| 少好三P| 欧美人人AAA| 欧美91久久久久| 久久婷婷五月天| 天天干天天操天天操夜夜操天天操| 五月天激情小说| 2019精品国产无码成人| 后入式免费视频| 亚洲黄色网址| 国产成人亚洲精品自产在线| 99久久婷婷国产综合| 国产在线视频二区| 五月亭亭六月丁香| 欧美 亚洲 在线| 九九九只有精品| 97超久碰| 色女99一级片在线观看| 人妻无码后入| 热久久99999| 国产精品九9| 免费视频a级毛片免费视频| 国产精品免费1区2区视频| 偷偷人人精品女女久久| 国产精品农村妇女| 五月婷婷丁香六月丁香| 91亚洲在线| 日韩国产九九精品一区二区三区毛片| 牛牛久久国产精品视频一二三| 淫色网综合| 极品白嫩福利在线| 精产国品一区二三产品| 超碰97资源大奶| 久久国99999| 欧美97日韩精品| 欧美 综合| 你草精品在线视频| 国产久9| 亚洲97超碰| 欧美激情精品久久久久久| 欧美亚洲高清晰| 久久系列| 日韩无码嘿咻黑热久| 人妻黑丝袜电影| 精品久久久不卡一区二区| 欧美 熟女 日韩| 中国小夫妻勾搭露脸淫荡对白| 18岁禁 茉莉成人久久| 超碰97亚洲区| 黄片视频观看| 97欧美性爱| 亚洲午夜福利视频| 亚洲网自拍| 天天影视之亚洲综合网| 男人午夜天堂| 免费在线黄片视频| 中文字幕一区 二 区 三 四 五 区日 日 骚 | 欧美日韩在线视频网站| 1769精品一区二区三区| 丁香五月av| 日韩丝袜高跟制服在线观看| 青娱乐淫乱1314| 日韩欧美经典在线观看| 日本一天色道久久久精品视频| 午夜美女诱惑电源网| 免费A片三p视频| 人妻少妇色综合| 97视频在线视频| 777奇米影视777四色| 久久五月份| 亚洲欧美综合图片| 国产AV久久久蜜爱影集| A啊啊在线观看| 色姑娘综合网| 麻豆国产原创AV色哟哟| 翔田千里爆乳巨臀无码| 欧美三级免费伊人| 99re热有精品视频国产| 欧美三级一级| 亚洲欧美黄| 超碰碰碰碰| 狠狠色五月亚洲91| 欧美久久九九| 思思热久久成人| 色香伊人| 福利在线黄片| 日本不卡一区二区三区| 秋霞曰韩R级| 熟女久久久| 亚洲女毛多水多21P| 国偷自 一区二区| 女人被添高潮免费视频| 日本操逼无码| 亚洲图片偷拍欧美| 丝袜制服字幕在线| 在线a v| 后入式999| 欧美麻豆成人同性GⅤ在线| 男人的天堂久久狠| 欧美超碰在线| 精品女同一区二区三区| 97婷婷色| 午夜操逼不卡| 天天射夜夜操| 超碰97综合网| 好吊爽好吊爽在线视频,中文字幕精品一区二区日本,国产良妇出轨视频在线观看, | 亚洲欧美黄| 国产极品久久久| 色情婷婷| 中文字幕av亚洲在线| 日本二三四区| 干日本人少妇午夜寂寞影院| 97爱欧美| 中文无线日韩一区| 啪一啪免费视频| 超碰午夜| 大香蕉伊人色偷偷在线| 亚洲乱码国产乱码精网站| 啊啊啊免费视频| 99999亚洲另类| 91 亚洲情侣偷拍 久久| 好舒服视频| 久久日韩毛| 99色在线| www.色婷婷| 韩国一级婬片A片AAAAA| 东京热男人的天堂精品| 美女尤物人人操| 成人性爱av| 丝袜人妻av一区二区| 欧美高清16| 好吊爽好吊爽在线视频,中文字幕精品一区二区日本,国产良妇出轨视频在线观看, | 天堂中文资源在线bt| 国产一区二区三区久久久精品| 精品人妻一区二区三区在线视频不卡| 久久大黄片| 色欲三区| 丁香九月激情啪| 天天色播| 青青草密桃在线播放| 欧美成人都市人妻| 久久99国产综合精品女同| 午夜人妻精品综合在线| 试看60秒 爽| 国产黄色剧情影片麻豆免费播放| 五月天我淫我色av| 国产无马视频| 九九内射在线| 噜噜噜亚洲精品| 精品人妻高清麻豆av| 操一操摸一摸| 999 久久久| 91网站18| 玖草在线视频| 91啪啪视频| 国模一区二区三区| 91日产欧美| 91国产丝袜白虎| 啊啊啊啊好疼| 国产一级内射无挡观看| 日韩草久视频| 欧美日韩一二三| 国产兽交视频在线播放| 欧美日韩在线国产在线| 欧美拳交在线播放| 后入精品| 日韩精品碰碰| 美女91在线观看| 花花AV导航| 家庭乱伦性爱av| 亚洲麻豆精品二区三区| 亚洲色图日韩精品| 五月天婷婷基地| 亚州色阁| 日韩美女操b| 亚洲国产剧情少妇激情| 91亚洲人| 亚洲激情AV| 日韩欧美天堂| 欧美日韩国产中文精品字幕自在自线 | 久久国产99精品72福利| 天天干嫩逼网| 人妻激情另类| 中文字幕日韩精品久久| 99.色网| 成年人网站在线免费观看| 涩五月婷婷| 亚洲AV不卡在线观看尤物| 强奸抽插av| 久久久久久性爱片| 中文字幕奈奈美被公侵犯| 中文一区二区三区影院| 亚洲欧美天堂在线| 国产精品久久久无码aV去| 精品人妻1237| 丁香婷婷五月| 精品人妻二区三区| 亚洲成人免费中文字幕| 精品9999| 九九九综合精品| 日本人妻中文字幕精品| 亚洲双插| 男女91| 天美麻花大全视频| 天天澡天天爽日日AV| 国产一区二区久久| 九九性爱网| 天天综合中文字幕 91| 伊人影院在线理论播放| 日韩欧美综合激情| 夜夜嗨视频| 日产123区精品免费观看| 国产精品蜜乳AV| 婷婷涩嫩草鲁丝久久午夜精品| 污污污8888| 九九热最新| 日本丝袜美腿人妻九九| 日韩精品大香蕉伊人在线| 中文字幕乱码在线观看| 国产精品嫩草影院免费| 国产欧美日韩一区二区三区| 久久99干一本高清| 亚洲精品欧美专业| 婷婷久久综合| 99精品无码| 91 亚洲 欧美 日韩 国产 综合| 丝袜亚洲综合| 99热伊人| 九九热精品视频六| 性欧美| 99re6国产精品99re| 天天碰操中国年青熟妇| 成人AV素股で擦久久| 久久人妻办公室视频| 在线国产一区二区av| 国产性爱在线视频一区二区| 粉嫩av平台| 放黄片放3级黄片没穿衣服| 五月天欧美色图| 91成人国产综合久久精品蜜月| 午夜精品久久久久久久男人的天堂 | 国产精品原创巨作?v网站| 超碰91在线| 中文字幕三四区| 91综合网| 国产精品欧美日韩久久| 一级特级aaaa毛片免费观看 | 免费黄色A片| 五月丁香激情综合网| 日韩啪啪视频| 日本免费不卡二区| 后入内射蜜桃臀| 9 1果冻精品视频| 大香蕉国产中文自拍| 精品人妻视频一区二区在线播放| 欧美超碰97| 亚洲一卡2卡3卡4卡乱码网站| 人人人人人人少妇| 啊啊啊啊,啊啊好多水| 人妻精品视频一区二区三区| 福利色色| 日韩av电影网站| 亚洲巨爆乳一区二区三区四季网| 极品白嫩美女白浆成人福利在线看| 久都青青视频| 欧美AB在线| 加勒比伊人综合| 67194无码不卡| 久久久久久久久久久久久9999| 九九精品美女高溯喷水| 老熟妇一区二区三区啪啪| 日韩视频中文字幕| 午夜一级免费毛片| 麻豆福利视频导航| 色牛aV| 一区 欧美 日韩 麻豆| 九色97| 大香蕉伊人75| 大香蕉97久久| 啊啊啊啊网站| 国产无遮挡| 人人干黄色| 91红杏| 99老司机精品视频在线观看| 人人澡人人弄| 美女写真| 欧美春色| 激情图片伦理国产一区二区日韩| 亚洲高清视频在线免费观看| 五月天色电影| 少妇丝袜在线观看AV| 加勒比性爱成人在线| 93人人操人人| 91精品婷婷国产综合久久| 欧美,日韩,亚洲视频| 蜜桃传媒视频第一区入口在线看| 桃花色涩综合影院| 午夜久久一区二区无码中出| 99re这里只有精品9| 欧美日韩精品久久久久久久久东北老熟妇| 蜜臀AV秘一区翔田千里| 首页亚洲国产高跟丝袜诱惑视频| 日日妻色网| 亚洲欧美色图小说| 青青草在线成人视频| 国产又长又大又粗的视频| 91精品国产91久久青草| 亚洲第一页色| 偷拍 亚洲 欧美| 嗯啊不要在线| 97免费在线观看| 91久精品| 久久成人国产精品| 操少妞在线视频| 国产男女无套视频免费观看| 熟女熟妇伦久久影院毛片一区二区| 九月丁香婷婷色| 久久久999网站| 亚洲二区精品在线观看| 午夜毛片高清免费不卡| 国产强奸超碰AV| 亚洲精品熟妇1区2区3区。| 丁香五月偷拍| 91伊人大香蕉| 中文一区在线视频| 天天谢天天干| 熟妇人妻一区二区| xxxx网站亚洲精品| 亚洲第一页色网| 青青草日本无码| 爱妃国产亚洲视频中文字幕| 欧美日韩亚洲国产中文永久天天看| 国产无码一二三区| 热思思免费视频| 日本一级不卡一二区| 欧美视频在线第3页| 乱论91| 91 亚欧| 青青草字幕AV| 69AV女优男人的天堂| 深夜激情无码| 操逼视频色| 色与欲影视| 骚妻少妇精品性色无码四色A V| 欧美日韩夜夜| 九九色综合| 亚洲精品久久久久久久蜜桃臀| 日韩欧美中文字| 无码91| 蜜桃臀av在线观看| 性色av婷婷久久一区二区点复制| 色天使亚洲综合在线观看| 91社区伊人| 殴美性天天| 高清国产性猛交xxxx乱大交| 天天爽夜夜爽夜夜爽精| 中文字幕黑人大片| 久久春色| 国产91丝袜在线播放蜜月| 天天日天天射天天干| 日本熟人妻中文字幕在线|...久久国产精品-国产精品_日本一区二区三区中文字幕 | AV九九| 亚洲人人操| 成人黑料社久久| 亚欧国产无码精品在线| 亚洲激情AV| 91蜜臀在线久久久久| ′ !γ}丶。。久久精品欧美一区二区三区| 久操热线| 亚洲国产中文字幕| 久久久久久久久久久久欧美日| 10000部十八禁看电影| 色老汉色| 日韩八十路老熟女| 91欧美亚洲| 为用户提供免费看黄网址在线观看| 最新av中文字幕高清| 亚洲欧美日韩二区视频| 性爱av在线免费观看| 性爱动态120秒| 久偷拍| 麻豆精品久久久久久久| 囯产精品久久久久久久久久梁医生| 国产又黄又粗的视频| 中文字幕制服欧美久久一区| 色操逼网| 丝袜 中出 制服 人妻 美腿 中文字幕| 国产精品原创巨作?v网站| 国产精品久久99日日| 免费a在线播放v| 欧美美女啪啪视频| 国产热av| www.伪伪| 91人妻视频在线| WWW美腿丝袜香蕉中文| 在线欧美亚洲| 免费看黄片现成| www.av在线观看| 97碰碰日本乱偷人妻中文的| 中文字幕AV乱伦| 女上位精品在线| aV中文麻| 免费av大片| 欧美高清18A片| 柠檬AV导航| AV色五月天| 免费A片三p视频| 青草视频在线看看看看看看看看看| 99re视频在线播放青草| 69视频入口| 亚洲精品 大香蕉| 91精品操美女| 丁香婷婷色五月| 蜜臀Av一区二区三区| 九九色热| 人人操人人肉久久精品| 啊啊啊啊一区| 啊啊啊啊啊啊在线| 正在播放:深夜激情大战,自带黑丝袜全力输出骚穴 | www超碰| 色五月婷婷五月天| 久久精品男人的天堂| 97综合久久| 婷婷五月丁香五月| 日韩精品在线放| 日本天堂网| 9国产超碰| 最新av在线| 人妻 中文 日韩| 搡老女人老91妇女熟女| 国产精品女久久久久av爽| 自拍欧美| 久久人妻视频| 亚洲精品毛片在线观看| 伊人久久大香线蕉亚洲五月天,青草青草欧美日本一区二区,欧美日产欧美日产国产 | 美女诱惑久久| 天天综合在线4| 人妻干天天| 一区二区三区男人的天堂| 久久久97| 欧美v日韩v亚洲v最新在线| 成年人黄色| 中国熟女91| 婷婷三区| 视频一区二区三区精品| 超碰一区二区| 宅男午夜在线视频| 99精品在线播放| 亚洲高清无毛一区二区| 男人天堂资源| 日韩无码久久熟女一级片| 女人爽到高潮潮喷18禁网站| 亚洲日韩在线a不卡99精品| 精品9区| 五月丁香久久| 久久人人爽爽人人爽人人片αV| 上床啊啊啊| 国产欧美成人精品| 亚洲啪啪视频免费| 2017天天插| 亚洲综合小视频小说在线观看 | 欧洲精品一级二级精品综合视频综合| 亚洲欧美精品福利在线| 国产一级高跟丝袜| 日本成人A片网站| 人妻另类 专区 欧美 制服| 深夜激情| 亚洲一区二区 麻豆传媒| 麻豆 欧美 日韩| 亚洲第一页色| 操逼逼福利视频| 三级激情网站| 熟女五十路一区二区三| 秋霞久久亚洲精品成人| 亚洲av国产av综合av卡| 熟妇视频一区二区三区在线| 日韩无码第3页| 中文字幕色AV| 欧中美三级一区二区三区| 久草成人影片| 啊啊啊好多水| 91免费看一区二区三区 | 91东北熟女| 亚洲国产精品成人久久蜜臀| 亚洲精品久久久久毛片A片拉屎 | 国产 日韩 欧美 中文 另类,国产 欧美 另类 制服 变态,高清 日韩 欧美 中文,高 | 97爱综合| 精品无码秘 人妻一区二区| 欧美亚洲情色| 黄色网址在线免费观看| 亚洲宅男天堂| 亚洲日韩av一区二区三区百合| 中文字幕精品一区二区精品| 国产日本熟女顶级一区二区三区视频| 欧美综合第一| 欧美在线第五页| 国产成人精品网站| 成人a v在线播放免费| 1769一区| 日本综合色图| 欧美黑人性猛交91| 福利在线视频一区二区| 91精品国| 亚州免费啪啪视频| 99爱久久视频频| 久久精品电影在线| av天堂精品久久| h在线看免费版在线看| 亚州色站 日韩电影| 九九久久久| 动漫爆乳3D奶水一区在线观看 | 入口操逼网站| 闷骚老熟女15P| 2020中文字幕在线观看| 欧洲一级性爱视频在线观看| 亚洲男人天堂2016| 亚洲人体视频在线观看| www鬼畜国产男人的天堂| AV天黑人| 强奸乱伦麻豆| 后入式999| 大香蕉免费乱伦视频| 久热99999| 亚洲蜜桃V妇女| 后入式在线免费观看60秒| 午夜亚洲| 992这里有精品| 97天天操| 精品九九九九九九九| 尹人免费观看视频在线| 日韩99神马视频播放片在线播放| 伊人国产AV| 亚洲熟妇丝袜在线观看| 天天干天天操天天操夜夜操天天操| 久久99黄色卞西瓜| 欧美另类精品xxxx| 欧美精品,四区。五区| 人人干黄色| 91欧美另类| 亚洲成人美女无吗| 欧美人妻制服| wwe 天天干.com| 强奸乱伦大香蕉| 亚洲综合色在线| 五月综合久久| 欧美片第一页| 超碰导航97| 夜夜中出国产| 玖玖资源综合在线视频| 亚洲精品一区二区三区在线播放| KK色在线影院| 精品一区96| 中文一区在线视频| 91碰碰| 丰满人妻一区二区三区| 男人的天堂午夜av| 日本操逼视频免费| 久久久久婷婷精品av电影| 五月婷婷性爱| a男人的天堂久久一级A毛片| 中文字幕av久久爽Av| 国产伦乱91| 黄色一区二区秘书性感| 东京热一区二区中文字幕| 伊人一区二区三区| 天天干2019| 97久久久网站| 超碰色美女| 麻豆亚洲Av成人无码一区精品| 人妻一区二区三区视频| 国产精品一区二区三区四区五区| 很狠操| 97精品97久久| 成人精品水蜜桃久久久久久久| 久久骚少妇| 午夜精品久久久久| 97公开久久| 99综合自拍| 精品久久久久瑟瑟| 精品大久久| 丁香五月色情| 天天操av懂色| 一区二区三区四区久久视1| 亚洲A色| 香蕉免费一区二区三区不读| 视频黄站| 亚洲中亚日激情视频| 亚洲国产中文字幕| 中文字幕免费在线观看| 蜜桃午夜视频一区二区| 视频在线观看青青99国产| 四虎免费在线播放| 一区 欧美 日韩 麻豆| 精品国产91久久久久久一区黄无| 色偷综合| 国产日本一区二区三区蜜臀在线观看| 国产一区在线看| 国产福利电影| 国产成人自拍视频在线| 国产农村妇女一区二区| 久久久啊啊| 日韩国产十八禁| 亚洲精品九九九九九九| 大学生美女口爆| 秋霞欧美性爰视频| 高树玛利亚无码流出| 丰满欧美放荡少妇在线| 日本天天干天天日一区| 欧美精品宗合| 久久久国产亚洲精品系列| 国产AV高清AV无码| 午夜性| 大香蕉啪啪啪啪在线| 超碰综合97在线| 日本人妻伦在线中文字幕| 亚洲国产高清福利视频| 精品射1999| 99精品无码| 夜嗨影院| 91在线国产后入风骚翘臀美女素人| 一中国女人毛片水真多| 人妻少妇精品一区二区三区| 日韩中文9| 91殴美| 伊人久久婷婷| 色哟哟精品1精品2| 人人操人人舒服| 婷婷色婷婷| 热久日综合| a片久久久久久久久久久久 | 国产区91柔拿会所技师| 欧洲自拍色图gif在线| 岛国黄| 91欧美性| 国产又色又爽又舒服的三级视频| 啊啊啊啊,啊啊好多水| 久操网线| 久伊人网78| 欧美色偷拍| 日韩成人无码| 啊啊啊啊二区好大| 温婉少妇玩3p| 97亚洲精品超碰| 日日天天久久啊啊aaa| 超碰国产精品无码| 久久av色| 国产综合网站在线播放 | 男人的天堂在线有码| 人妻久久一区二区三区 | 亚洲av性爱电影| 国产精品色哟哟| 亚洲少妇综合在线播放| yazhououmeizongya| 婷婷综合| 伊人网高清| 国产精品熟女AV中文字幕在线播放| 亚洲欧美高清无码| 天天天做天天天爱天天天爽| h在线看免费版在线看| 色吧5亚洲| 中文字幕伊人| 久久天天摸| 男人高清无码一区二区| 男人综合网| 超碰伊人在线| 一区麻豆 高清中文字幕| 人妻中文字幕日韩电影| 午夜国产综合视频在线观看| 天天天做天天天爱天天天爽| 大香网伊人久久综合网eew| 中文字幕人妻丝袜| 久久东京国产精品视频| 亚洲蜜乳av| 少妇的嫩逼图片| 大香蕉日亚洲日本亚大| a片亚洲一本通视频| 伊人五月天青青草婷婷| 色婷婷在线视频| 99久久99九九99九九九| 国内毛片无码一级毛片| 亚洲欧洲国产综合av| 97人人操人人摸| 婷婷五月天激情网| 亚洲一卡2卡3卡4卡乱码网站 | 欧美精品三区| 久久视频,这里只有精品| 少妇同性| 黄页18禁| 亚洲欧美校园另类春色| AV不卡在线| 在线观看成人性爱免费小视频| 91色人| 中文字幕一区 二 区 三 四 五 区日 日 骚 | 999日韩中文精品观看视频。| www.狠狠| 色一射色一射| 骚人妻少妇视频| 欧美另类天堂| 久久超碰98| 国产情色第一第二页在线观看| 三级片大波波| 白 大 人妻 区 在线| 97超碰免费人人性爱| 中文字幕-区二区三区四区视频中国| 久久久久精| av大香蕉网站| 久9久精品视频| 亚洲图片小说欧洲| 欧洲综合色| 国产成人亚洲精品无码最新在线| 国内毛片欧美香蕉精品| www亚洲免费| 亚洲最大无码中文字幕网站| 熟妇在线视频一区二区| 91人人爽人人爽| 性色国产东北露脸精品视频| 黄久在线| 大肥女高潮bbwbbwhd视频| 美女黄网| 被操高清无码视频| 俺去俺来也在线www| 伊人久久88国产女| 日韩精品99久久久久久中文字幕| 人人妻人人色一区二区三区| 人妻天天爽天天爽三区| 91粉嫩萝控精品福利网站_精品影音先锋国 | 黄片免费看的| 日韩国产品视频中文字| 天天操人人操骚逼网站| 97久操| 免费在线黄片视频| 黄网站黄视频网站进入口| 欧美性性性| 啪啪AV导航| 97日视频| 青青草中文字幕| 国产亚洲色婷婷久久99精品91葵花宝典 | 国产美女在线精品免费看| 综合熟女| 91狠狠综合久久| 影音先锋中文字幕日本好一区二区| 欧美久久婷婷| 99久久精品国产系列| 亚洲性爱高潮影院| 午夜福利 成人 91| 97操操| 亚洲91色| 嗯~啊~快点 死我视频| 久久香蕉国产线看观看亚洲女人| 日韩欧美国产高清视频| 亚洲色图A| 91久青| 久久受www免费人成| 嗯,啊。舔我逼| 亚洲熟女av日韩熟女| 精品午夜福利| 成 人 影视 一区 二区 三区 四区| 精品国产av一区二区三区四区入口| 亚洲精品天天影视综合网| 大香蕉www.超碰| 久久久久久91香蕉国产| 久久久91| 国产传媒一区日韩| 多毛小伙内射老太婆 | 免费a v| 九久久精品| 久9久| www.人人cao| 日日爱99| 东北操逼| 日本不卡高清免v欧美日韩在线观看| 成人性交午夜免费片| 97中文天堂| JULIA一区二区三区在线播放| 久久97超碰| 欧美亚洲韩国视频十五区| 999久久久九| 中文字幕成人| 久久久新亚洲AV| 国产在线激情| 97一区二区三区视频| 天堂九九九九九九九九九| 色悠久| 九九九久| 9长久久精品| 久久婷婷国产一区二区色| 欧美亚洲色图另类国产| 亚洲国产精品无码AV久久| 天天躁日日躁狠狠狠躁| 中文字幕一二三av| 夜夜免费视频| 欧美激情黑人| 91男女| 后入综合久久| 尤物av网站| 精品夜夜澡人妻无码| 99热亚洲天堂| 亚州成人A√| av天堂5| 熟女色综合久久| 天堂无码精品国产久| 亚洲啪啪视频一区二区| 国产日韩在线播放av| 国产精品蜜乳AV| 色九区| 俺去也婷婷| 亚洲美女色图| 天天影视亚洲| 岛国黄片网站| 一级特级aaaa毛片免费观看 | 婷色五月| 日本一二区免费 | 欧美精品黑人猛交高潮| 操一操摸一摸| 乱伦av国产| 婷婷亚洲综合| 青青草在线视频人人想人人上| 亚洲一区二区麻豆影院| 再深点灬舒服灬太大了好硬好爽| 欧美强奸乱| 欧美毛片在线网| 1204av韩国| 欧美丝袜美女电影一二三四区| 国产精品另类| 国产探花日韩援交| 国产精品大香蕉| 国产91精品久久久久久久网曝门| 激情综合av| 九九九九热只有精品| 久久久久久久久久va| www.av在线观看| 日本美女性生活久久久久久久 | 一本色道久久综合精品婷婷| 久久久久久久久999| 人人操人人uiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii | 蜜色网色哟哟| 91网站18在线| 97超碰磁| 高凊专区人人操| 亚洲AV永久无码精品成人调教| 少妇贴图| 欧美特大AA级黄片| 婷婷伊人一区| 玖玖爱在线视频免费观看| 9久综合网| 香蕉综合网| 婷婷伊人| 久久精品店| 户外裸露刺激视频第一区| 97国产天堂岛| 中文字幕AV乱伦| 啊啊啊好舒服好爽啊啊啊视频| 国产精品白丝AV| 五月婷婷六月激情| 少妇久久久久久久久| 亚洲精品aa久久伊人| 香蕉av一区二区三区| 亚洲色色探花| 日本精品九九九| 欧美一级黄片免费播放| 国产熟码AV| 花野真衣| 男人的天堂午夜av| 中文字幕乱偷人妻久久艾草网| 少妇高潮九九九九| 亚洲AV无码国产精品久久久久| 蜜桃丰满熟妇av无码区不卡| 丰满少妇乱子伦精品无| 欧美夜夜骑视频| 久久免费99精品久久久久久| 亚州综合图片| 操操啪| 欧美一区二区三区互相| 亚州国产成人精品女人久久 | 欧美性后入| 久操不卡视频| 一级AV性爱| 婷婷久久五月综合激情| 久热久| 777AV电影| 素人伊尹大香蕉免费下载视频| 偷拍 亚洲| 国产农村一一级特黄毛片| 国产精品久久久久9999小说| 使劲用力艹少妇视频一区二区 | 97人妻免费中文字幕| 熟女久久| 九九av| 久久亚洲熟妇在线视频| 亚洲天堂,男人| 免费的黄片wwwwww| 九九综合久久| 无码 有码 国产18p| 精品亚洲一区在线观看| 蜜臀久久99精品久久久久久-DVD| 中国小夫妻勾搭露脸淫荡对白| 色婷婷蜜臀av| 性色一线| 60秒试看最爽10分钟网站| 亚洲欧洲视频小说在线观看| 丁香五月激情综合国产| 强奸乱伦Av网| 蜜臀久久99精品久久久久久无删减 | 国产和美国毛片| 性生活无遮挡纯毛片在线看| 99999久久久久9国产精品| 色色五月婷| 欧美日韩国产电影| yiqicaoav| 做爱福利视频一区二区| 91爱看| 蜜桃臀久久| 超碰在线一区| 日本色色色网站免费看不卡| 欧美色亚洲| 国产在线观看一区二区三区| 免费精品国偷自产在线在线| 日韩无码精品综合久久| 国产精品视频自拍在线| 国产在线激情视频| av天堂5| 91无人区卡一卡二卡三乱码入口最新版:能让用户有更多选择的选择-经典说说-爱 | 黑人粗大V S日韩女优视频| nuu12国产麻豆精品| 日韩99999| 欧美97爱| 免费看A片毛毛片在线播| 九九视频黄色片| 国产精选三级在线观看| 日韩亚洲美女一区久久| 久偷拍| 日韩精品人妻一区二区| 啊啊啊啊啊啊在线| 3PAV乱伦视频| 国产一级特黄大片处女| 五月色综合| 97精品97久久| 亚洲中文字幕精品一区| 一区二区三区精品视频| 亚洲欧美精品久| 碰碰97| 日本三级黄页| 97久久超碰日韩精品| 久久av一级av少妇av高潮| 日韩97视频!在线| 91一区二匹| 97人人草| 男人的天堂VA| 黑人在线91| 亚洲伊人a线观看视频| 国产情侣自拍在线播放| 91在线欧色| 亚洲欧美在线观看无码| 97天天搞在线| 亚欧美无遮挡| 日本1区2区不卡视频| 日本在线播放不卡一区| 欧美亚洲玖玖玖| 亚洲毛片基地专区| 真实高潮91| 立川理惠被中出无码| 日本 免费 一区二区三区 久久香蕉| 国产精品扒开腿做爽爽爽视频| 91日本在线观看| 国产精品日日摸天天碰| 91精品国产91久久福利| 在线观看十八禁| 人妻一区二区三区熟女| 狠狠操狠狠插| 极品欧美一区二区三区| 91呆哥人妻| 超碰97COm中文| 天天综合网久久ww| 天堂俺去俺来也www久久婷婷| 亚洲综合夜色| 亚洲高清无码免费观看视频| 蜜臀久久99精品久久久久久| 东京热一区二区三区四区五区六区| 黄色成人网久久久久久| 狠狠操夜夜操蜜桃视频三区| 久久国产AⅤ| 欧美高潮| 欧美一区二区情色| 在线国产福利网址导航| 精品人妻15区| 国产天天看| 99精品无码| 国产浮力影院第1页| 久久久久久中文| 久久久工口| 丁香五月婷婷色| 国产精品露脸在线观看| 日本布卡一区二三区| 亚洲欧美setu| 六月丁香啪啪啪| 免费精品无码一级毛片牛牛影视| 人妻密肉在线观看| 狼天天狼天天大香蕉| 精品国产乱码久久久久久口爆网站| 成人一二| 亚洲阿v天堂在线| 99rre在线精品99re8| 色天堂综合| 91亚洲欧美色图| 91大神电影天堂| 国产欧美一区二区| 蜜桃视频精品一区二区| 国产 丝袜 欧美中文 另类| 日本免费一级AAA大片器| 日韩操逼HD| 国产理论视频在线播放| 久久九九视频九九视频| 99热在线观看| 69XX一中文字幕人妻91| 久草尤物| 黄人人操人人操| 久久精品国产99精品亚洲蜜...| 成人精品无码| 综合久久久久久久久91| 日韩av在线精品观看| 日B操| 婷婷伊人五月| 欧美一区二区一级岛国大片|