黄a在线观看-黄a在线-黄a大片-黄色片在线看-黄色毛片免费-黄色大片网站

您的位置:首頁技術文章
文章詳情頁

詳解MySQL多版本并發控制機制(MVCC)源碼

瀏覽:147日期:2023-10-01 13:55:29
目錄一、前言二、MVCC(多版本并發控制機制)2.1、Repeatable Read2.2、Read Commit2.3、MVCC的優勢三、MVCC(實現機制)3.1、select運行棧3.2、read_view的創建過程3.3、行版本可見性3.4、undolog搜索可見版本的過程3.5、read_view創建時機再討論四、MVCC和鎖的同時作用導致的一些現象五、總結一、前言

作為一個數據庫愛好者,自己動手寫過簡單的SQL解析器以及存儲引擎,但感覺還是不夠過癮。<<事務處理-概念與技術>>誠然講的非常透徹,但只能提綱挈領,不能讓你玩轉某個真正的數據庫。感謝cmake,能夠讓我在mac上用xcode去debug MySQL,從而能去領略它的各種實現細節。

(注:本文的MySQL采用的是MySQL-5.6.35版本)

二、MVCC(多版本并發控制機制)

隔離性也可以被稱作并發控制、可串行化等。談到并發控制首先想到的就是鎖,MySQL通過使用兩階段鎖的方式實現了更新的可串行化,同時為了加速查詢性能,采用了MVCC(Multi Version Concurrency Control)的機制,使得不用鎖也可以獲取一致性的版本。

2.1、Repeatable Read

MySQL的通過MVCC以及(Next-Key Lock)實現了可重復讀(Repeatable Read),其思想(MVCC)就是記錄數據的版本變遷,通過精巧的選擇不同數據的版本從而能夠對用戶呈現一致的結果。如下圖所示:

詳解MySQL多版本并發控制機制(MVCC)源碼

上圖中,(A=50|B=50)的初始版本為1。

1.事務t1在select A時候看到的版本為1,即A=50

2.事務t2對A和B的修改將版本升級為2,即A=0,B=100

3.事務t1再此select B的時候看到的版本還是1, 即B=50

這樣就隔離了版本的影響,A+B始終為100。

2.2、Read Commit

而如果不通過版本控制機制,而是讀到最近提交的結果的話,則隔離級別是read commit,如下圖所示:

詳解MySQL多版本并發控制機制(MVCC)源碼

在這種情況下,就需要使用鎖機制(例如select for update)將此A,B記錄鎖住,從而獲得正確的一致結果,如下圖所示:

詳解MySQL多版本并發控制機制(MVCC)源碼

2.3、MVCC的優勢

當我們要對一些數據做一些只讀操作來檢查一致性,例如檢查賬務是否對齊的操作時候,并不希望加上對性能損耗很大的鎖。這時候MVCC的一致性版本就有很大的優勢了。

三、MVCC(實現機制)

本節就開始談談MVCC的實現機制,注意MVCC僅僅在純select時有效(不包括select for update,lock in share mode等加鎖操作,以及updateinsert等)。

3.1、select運行棧

首先我們追蹤一下一條普通的查詢sql在mysql源碼中的運行過程,sql為(select * from test);

詳解MySQL多版本并發控制機制(MVCC)源碼

其運行棧為:

handle_one_connection  MySQL的網絡模型是one request one thread

 |-do_handle_one_connection

|-do_command

|-dispatch_command

|-mysql_parse解析SQL

|-mysql_execute_command

|-execute_sqlcom_select執行select語句

|-handle_select

...一堆parse join 等的操作,當前并不關心

|-*tab->read_record.read_record 讀取記錄

由于mysql默認隔離級別是repeatable_read(RR),所以read_record重載為rr_sequential(當前我們并不關心select通過index掃描出row之后再通過condition過濾的過程)。繼續追蹤:

read_record

 |-rr_sequential

|-ha_rnd_next

|-ha_innobase::rnd_next 這邊就已經到了innodb引擎了

|-general_fetch

|-row_search_for_mysql

|-lock_clust_rec_cons_read_sees 這邊就是判斷并選擇版本的地方

讓我們看下該函數內部:

bool lock_clust_rec_cons_read_sees(const rec_t* rec /*由innodb掃描出來的一行*/,....){...// 從當前掃描的行中獲取其最后修改的版本trx_id(事務id)trx_id = row_get_rec_trx_id(rec, index, offsets);// 通過參數(一致性快照視圖和事務id)決定看到的行快照return(read_view_sees_trx_id(view, trx_id));}3.2、read_view的創建過程

我們先關注一致性視圖的創建過程,我們先看下read_view結構:

struct read_view_t{// 由于是逆序排列,所以low/up有所顛倒// 能看到當前行版本的高水位標識,>= low_limit_id皆不能看見trx_id_tlow_limit_id;// 能看到當前行版本的低水位標識,< up_limit_id皆能看見trx_id_tup_limit_id;// 當前活躍事務(即未提交的事務)的數量ulintn_trx_ids;// 以逆序排列的當前獲取活躍事務id的數組// 其up_limit_id<tx_id<low_limit_idtrx_id_t*trx_ids;// 創建當前視圖的事務idtrx_id_tcreator_trx_id;// 事務系統中的一致性視圖鏈表UT_LIST_NODE_T(read_view_t) view_list;};

然后通過debug,發現創建read_view結構也是在上述的rr_sequential中操作的,繼續跟蹤調用棧:

rr_sequential

 |-ha_rnd_next

 |-rnd_next

 |-index_first 在start_of_scan為true時候走當前分支index_first

 |-index_read

 |-row_search_for_mysql

 |-trx_assign_read_view

我們看下row_search_for_mysql里的一個分支:

row_search_for_mysql:// 這邊只有select不加鎖模式的時候才會創建一致性視圖else if (prebuilt->select_lock_type == LOCK_NONE) {// 創建一致性視圖trx_assign_read_view(trx);prebuilt->sql_stat_start = FALSE;}

上面的注釋就是select for update(in share model)不會走MVCC的原因。讓我們進一步分析trx_assign_read_view函數:

trx_assign_read_view

 |-read_view_open_now

 |-read_view_open_now_low

好了,終于到了創建read_view的主要階段,主要過程如下圖所示:

詳解MySQL多版本并發控制機制(MVCC)源碼

代碼過程為:

static read_view_t* read_view_open_now_low(trx_id_tcr_trx_id,mem_heap_t*heap){read_view_t*view;// 當前事務系統中max_trx_id(即尚未被分配的trx_id)設置為low_limit_noview->low_limit_no = trx_sys->max_trx_id;view->low_limit_id = view->low_limit_no;// CreateView構造函數,會將非當前事務和已經在內存中提交的事務給剔除,即判斷條件為// trx->id != m_view->creator_trx_id&& !trx_state_eq(trx, TRX_STATE_COMMITTED_IN_MEMORY)的// 才加入當前視圖列表ut_list_map(trx_sys->rw_trx_list, &trx_t::trx_list, CreateView(view));if (view->n_trx_ids > 0) {// 將當前事務系統中的最小id設置為up_limit_id,因為是逆序排列view->up_limit_id = view->trx_ids[view->n_trx_ids - 1];} else {// 如果當前沒有非當前事務之外的活躍事務,則設置為low_limit_idview->up_limit_id = view->low_limit_id;}// 忽略purge事務,purge時,當前事務id是0if (cr_trx_id > 0) {read_view_add(view);}// 返回一致性視圖return(view);}3.3、行版本可見性

由上面的lock_clust_rec_cons_read_sees可知,行版本可見性由read_view_sees_trx_id函數判斷:

/*********************************************************************//**Checks if a read view sees the specified transaction.@returntrue if sees */UNIV_INLINEboolread_view_sees_trx_id(/*==================*/const read_view_t*view,/*!< in: read view */trx_id_ttrx_id)/*!< in: trx id */{if (trx_id < view->up_limit_id) {return(true);} else if (trx_id >= view->low_limit_id) {return(false);} else {ulintlower = 0;ulintupper = view->n_trx_ids - 1;ut_a(view->n_trx_ids > 0);do {ulintmid= (lower + upper) >> 1;trx_id_tmid_id= view->trx_ids[mid];if (mid_id == trx_id) {return(FALSE);} else if (mid_id < trx_id) {if (mid > 0) {upper = mid - 1;} else {break;}} else {lower = mid + 1;}} while (lower <= upper);}return(true);}

其實上述函數就是一個二分法,read_view其實保存的是當前活躍事務的所有事務id,如果當前行版本對應修改的事務id不在當前活躍事務里面的話,就返回true,表示當前版本可見,否則就是不可見,如下圖所示。

詳解MySQL多版本并發控制機制(MVCC)源碼

接上述lock_clust_rec_cons_read_sees的返回:

if (UNIV_LIKELY(srv_force_recovery < 5) && !lock_clust_rec_cons_read_sees( rec, index, offsets, trx->read_view)){// 當前處理的是當前版本不可見的情況// 通過undolog來返回到一致的可見版本err = row_sel_build_prev_vers_for_mysql(trx->read_view, clust_index,prebuilt, rec, &offsets, &heap,&old_vers, &mtr); } else{// 可見,然后返回}3.4、undolog搜索可見版本的過程

我們現在考察一下row_sel_build_prev_vers_for_mysql函數:

row_sel_build_prev_vers_for_mysql

 |-row_vers_build_for_consistent_read

主要是調用了row_ver_build_for_consistent_read方法返回可見版本:

dberr_t row_vers_build_for_consistent_read(...){......for(;;){err = trx_undo_prev_version_build(rec, mtr,version,index,*offsets, heap,&prev_version);......trx_id = row_get_rec_trx_id(prev_version, index, *offsets);// 如果當前row版本符合一致性視圖,則返回if (read_view_sees_trx_id(view, trx_id)) {......break;}// 如果當前row版本不符合,則繼續回溯上一個版本(回到for循環的地方)version = prev_version;}......}

整個過程如下圖所示:

詳解MySQL多版本并發控制機制(MVCC)源碼

至于undolog怎么恢復出對應版本的row記錄就又是一個復雜的過程了,由于篇幅原因,在此略過不表。

3.5、read_view創建時機再討論

在創建一致性視圖的row_search_for_mysql的代碼中

// 只有非鎖模式的select才創建一致性視圖else if (prebuilt->select_lock_type == LOCK_NONE) {// 創建一致性視圖trx_assign_read_view(trx);prebuilt->sql_stat_start = FALSE;}

trx_assign_read_view中由這么一段代碼

// 一致性視圖在一個事務只創建一次if (!trx->read_view) {trx->read_view = read_view_open_now(trx->id, trx->global_read_view_heap);trx->global_read_view = trx->read_view;}

所以綜合這兩段代碼,即在一個事務中,只有第一次運行select(不加鎖)的時候才會創建一致性視圖,如下圖所示:

詳解MySQL多版本并發控制機制(MVCC)源碼

筆者構造了此種場景模擬過,確實如此。

四、MVCC和鎖的同時作用導致的一些現象

MySQL是通過MVCC和二階段鎖(2PL)來兼顧性能和一致性的,但是由于MySQL僅僅在select時候才創建一致性視圖,而在update等加鎖操作的時候并不做如此操作,所以就會產生一些詭異的現象。如下圖所示:

詳解MySQL多版本并發控制機制(MVCC)源碼

如果理解了update不走一致性視圖(read_view),而select走一致性視圖(read_view),就可以很好解釋這個現象。如下圖所示:

詳解MySQL多版本并發控制機制(MVCC)源碼

五、總結

MySQL為了兼顧性能和ACID使用了大量復雜的機制,2PL(兩階段鎖)和MVCC就是其實現的典型。幸好可以通過xcode等IDE進行方便的debug,這樣就可以非常精確加便捷的追蹤其各種機制的實現。希望這篇文章能夠幫助到喜歡研究MySQL源碼的讀者們。

以上就是詳解MySQL多版本并發控制機制(MVCC)源碼的詳細內容,更多關于MySQL 并發控制機制 MVCC的資料請關注好吧啦網其它相關文章!

標簽: MySQL 數據庫
相關文章:
主站蜘蛛池模板: 国产良妇出轨视频在线观看 | 久久丁香五月天综合网 | 成人国内精品久久久久影院成人国产9 | 97国产视频 | 国产精品高清一区二区 | 91网站在线观看视频 | 国产亚洲不卡 | 日韩精品人妻系列无码专区 | 国产精品夫妇激情 | 女人高潮被爽到呻吟在线观看 | 久久久久se色偷偷亚洲精品av | 五月色综合 | av网站免费看 | 久久亚洲精品中文字幕无男同 | 大学生久久香蕉国产线看观看 | 91激情在线观看 | 91视频久久久久久 | 天堂网在线资源 | 在线观看亚洲 | 久久久久久蜜桃 | 国偷自产av一区二区三区 | 大尺度做爰床戏呻吟沙漠 | 亚洲老妈激情一区二区三区 | 狼人综合网 | 免费a级毛片视频 | 国产真实交换夫妇视频 | 极品少妇的粉嫩小泬视频 | 欧美日韩v | 久久婷婷五月综合色中文字幕 | 成人免费看视频 | 人妻少妇边接电话边娇喘 | 欧美做爰啪啪xxxⅹ性 | 欧美综合视频在线观看 | 波多野结衣中文字幕久久 | 亚洲乱码精品久久久久.. | 国产免费久久精品国产传媒 | 成年人黄色大片大全 | 亚洲精品一二 | 黑人av| 888久久久 | 亚洲瑟瑟 | 男女啪啪做爰高潮免费看 | 欧洲做受高潮免费看 | 99久久国产综合精品麻豆 | 亚洲ⅴ国产v天堂a无码二区 | 91精品国产高潮对白 | 国产精品区在线 | 91精品国产综合久久福利 | 羞羞的视频网站 | 久久性生活视频 | 91精品久久久久久久久久久 | 欧美国产日韩久久 | 国户精品久久久久久久久久久不卡 | 俺去日| 福利视频在线播放 | 亚洲狠狠操 | 无遮挡又爽又刺激的视频 | 日本亚洲精品色婷婷在线影院 | 一本一本久久a久久精品综合 | 亚洲午夜久久久精品一区二区三剧 | 亚洲激情图 | 亚洲天堂欧美 | 午夜美女国产毛片福利视频 | 天海翼av在线播放 | 欧美做受高潮中文字幕 | 欧洲av网站| 国产69精品久久久久久 | 中文字幕一区二区三区四区五区 | 毛片在线免费播放 | 国产乱子伦精品免费女 | 少妇激情av一区二区 | 高清不卡一区 | 日韩欧美成人一区 | 中文字幕看片 | 成人在线视频一区二区 | 黄色a网 | 日本无遮挡吸乳呻吟视频 | 亚洲一区二区三区在线播放 | 无码专区亚洲综合另类 | 4438全国最大成人网 | 精品国产一区二区三 | 国产第4页 | yy6080理aa级伦大片一级 | 国产在线国偷精品产拍免费yy | 国产第一页在线播放 | 久久综合五月丁香六月丁香 | 天天综合网网欲色 | 综合精品久久久 | 色呦呦在线播放 | 亚洲精品一二三四 | 国产午夜精品一区二区三区在线观看 | 久久草草亚洲蜜桃臀 | av免费播放网站 | 九热精品 | 男女一进一出粗大楱视频 | 久久精品国产2020 | 男女后式激烈动态图片 | 99sao| 韩日免费视频 | 茄子av在线 | 免费看成人aa片无码视频羞羞网 | 一区二区三区亚洲欧美 | 青草影院内射中出高潮 | 免费观看日韩 | 久久久亚洲麻豆日韩精品一区三区 | 成人福利在线视频 | 国产精品乱码一区二区 | 日本欧美中文字幕 | 精品国产欧美一区二区三区成人 | 欧美日批 | 国产网红主播无码精品 | 男女裸体影院高潮 | 精品无码一区二区三区av | 国产成人精品一区二区色戒 | 丰满熟妇乱又伦在线无码视频 | 911精品美国片911久久久 | 夜影影视剧大全在线观看 | 成人午夜又粗又硬又长 | 日韩黄色免费观看 | 亚洲鲁丝片一区二区三区 | 色妞色| 亚洲精品久久久中文字幕痴女 | 亚洲人毛耸耸少妇xxx | 亚洲视频手机在线观看 | 亚洲天堂久久 | 中文字幕日韩在线视频 | 国产一级揄自揄精品视频 | 国产玉足脚交欧美一区二区 | 国产精品久久久久久久午夜 | 亚洲欧美精品综合在线观看 | 99re6在线观看 | 男人的网站在线观看 | 国产免费小视频 | 精品性高朝久久久久久久 | 日韩精品影视 | 国产69精品久久久久久野外 | 99精品在线视频观看 | 午夜在线免费观看 | 国产激情综合五月久久 | 亚洲国产一线二线三线 | 国产亚洲精品一区二区三区 | 中文幕无线码中文字蜜桃 | 女性毛片 | 久久99精品久久久久麻豆 | 99影视网 | 日韩手机视频 | 777天堂麻豆爱综合视频 | 欧美精品成人久久 | 狠狠色成色综合网 | 免费国产在线视频 | 丝袜足控一区二区三区 | 一区二区三区国 | 黄色资源网站 | 国产一级做a爱片在线看免 国产一级做a爰片久久毛片男 | 久久久久久蜜桃一区二区 | 成年美女黄网站色大片免费看 | 色综合色综合色综合 | 国产寡妇xxxxxxxx性开放 | 精品无码久久久久久国产 | 欧美成人aaaaaaaa免费 | 青青视频二区 | 爱弓凉在线视频一区二区 | 精品免费视频一区二区 | 成人亚洲欧美成αⅴ人在线观看 | 色噜噜亚洲精品中文字幕 | 亚洲丰满熟女一区二区v | 麻豆av一区二区天美传媒 | 亚洲黄色影院 | 国精产品乱码视频一区二区 | 久久精品99国产精品亚洲 | 国产又色又爽又黄又免费软件 | 国产男女无套免费网站 | 无码av中文一区二区三区桃花岛 | 久久久久在线观看 | 国产福利在线观看视频 | 九色porny视频黑人 | 麻豆av一区二区天美传媒 | 欧美成年人网站 | 欧美日韩三级 | 男女又爽又黄激情免费视频大 | 99精品免费观看 | 色哺乳xxxxxhd| 天天干视频在线观看 | 99爱精品视频在线观看免费 | 国产精品乱码久久久久久久久 | 女人18毛片一区二区三区 | 无遮挡边摸边吃奶边做视频 | 裸体丰满少妇做受久久99精品 | 久久精品噜噜噜成人av | 97夜夜| 欧美日韩亚洲色图 | 中文字幕人妻熟在线影院 | 在线免费观看国产精品 | 少妇久久久久久被弄高潮 | 偷看洗澡一二三区美女 | 亚洲国产欧美一区二区三区丁香婷 | 欧美一级视频免费观看 | 丰满少妇高潮惨叫久久久久 | 亚洲午夜一区二区 | 欧美黄色性 | 久久日本三级韩国三级 | 无码人妻丰满熟妇区毛片 | 真实国产乱啪福利露脸 | 免费成人毛片 | 偷拍各种高潮xxx | 老女人人体欣赏a√s | 激情女主播 | 色偷偷噜噜噜亚洲男人的天堂 | 操碰视频 | 日韩极品在线 | 久久婷婷成人综合色 | 亚洲第一视频 | 欧美人妖一区 | 狠狠色丁香婷婷久久综合五月 | 一个人免费观看视频www中文 | 国产精品人人妻人人爽 | 国产精品不卡视频 | 精品久久久一区二区 | 成人小说亚洲一区二区三区 | 欧美日韩在大午夜爽爽影院 | 少妇在线播放 | 麻豆视频在线免费观看 | 女人高潮a毛片在线看 | 中文字幕丰满孑伦无码专区 | 日韩大片免费在线观看 | av人人干| 久久奇米| 日韩精品片| 91视频成人 | 97国产高清| 粉嫩一区二区三区四区公司1 | 伊人365影院 | 国产tscd人妖同性另类调教 | 精品亚洲欧美高清在线观看 | www.嫩草.com| 国产中出 | 国产一区二区三区乱码在线观看 | 三级福利| 成人一区二区毛片 | 久热国产区二三四 | 欧美成年黄网站色视频 | 国产成人乱色伦区 | 久久久精品久久久久久96 | 免费视频爱爱太爽了 | tai9国产一区二区 | 国产一区二区三区黄 | 超碰97干 | 第九色区av天堂 | 99久久免费国产精精品 | 男女日屁视频 | 国产jjizz一区二区三区老人 | 浴室里强摁做开腿呻吟男男 | 狠狠干天天爱 | 人人澡人摸人人添 | 亚洲一区二区在线视频观看 | 中文字幕永久2021 | 欧美性天堂 | 久久视频在线看 | 宇都宫紫苑在线播放 | 日本香蕉网 | 性欧美一区二区三区 | 天天爱天天草 | 健美运动员性猛交xxxxx | 99精品人妻国产毛片 | 国产这里只有精品 | 成人h动漫精品一区二区器材 | 亚洲五月激情 | 日本大香伊一区二区三区 | 国产精品嫩草影院九色 | 久一精品| 精品无码人妻一区二区三区品 | 久久久久爽爽爽爽一区老女人 | 五月婷婷免费视频 | av无码免费岛国动作片 | 国产黄色一区 | 国产一级一级片 | 中文字幕一级二级三级 | 欧美性大战久久久久xxx | 亚洲国产午夜精品理论片 | 亚洲乱码国产乱码精品天美传媒 | 亚洲欧洲日韩av | 日韩大片免费观看视频播放 | 欧美亚洲日韩国产人成在线播放 | 亚洲最新 | 中文字幕丰满孑伦无码精品 | 香蕉久久久久 | 在线视频免费观看一区 | 亚洲成人精品视频 | 午夜肉伦伦影院九七影网 | 久久精品国产成人 | 午夜爽爽影院 | 日韩精品国产另类专区 | 五月天精品一区二区三区 | 999精品在线观看 | 色综合久久88色综合天天人守婷 | 亚洲精品v天堂中文字幕 | 精品丰满人妻无套内射 | 国产丰满精品伦一区二区三级视频 | 美女黄站 | 老子午夜精品无码不卡 | 美女隐私免费观看 | 色视频一区二区三区 | 久久久久人妻精品一区二区三区 | 99免费在线播放99久久免费 | 欧美性潮喷xxxxx免费视频看 | 久久91精品国产 | 欧美黄页在线观看 | 怡春院欧美 | 精品66| 天海翼一区 | 在线综合亚洲欧美网站 | 日本黄色美女视频 | 女同久久另类99精品蜜臀 | 成人性生交大片免费视频 | 99热久久久久久久久久久174 | 久久久www成人免费毛片麻豆 | 欧美色图亚洲视频 | 国产亚洲精品久久久ai换 | 欧美1区2区3区 | 人妻久久久一区二区三区 | 国精产品999国精产品官网 | 成年男人裸j网站 | 日韩爽爽视频 | 国产中文一区二区 | 免费av地址| 免费观看又污又黄的网站 | 天天躁狠狠躁狠狠躁性色牛牛影视 | 亚洲成人va| 欧美肉大捧一进一出免费视频 | 婷婷久久综合网 | 国产精品99久久久久久人 | 真人啪啪高潮喷水呻吟无遮挡 | 九色视频偷拍少妇的秘密 | 狠狠躁夜夜躁人人爽天天高潮 | 国产精品欧美亚洲777777 | 污视频免费在线观看 | 精品国产第一国产综合精品 | 99福利影院| 在线播放黄色av | 乱女午夜精品一区二区三区 | 中出内射颜射骚妇 | 亚洲精品中文字幕乱码三区91 | 国产热热| 18黄暴禁片在线观看 | 三级av片| 毛片毛片毛片毛片毛片 | 粉嫩av一区二区三区免费观看喜好 | 免费看爱爱视频 | 色偷偷偷在线视频播放 | 精品久久国产字幕高潮 | 国产精品一区二区三区在线 | 国产成人精品日本亚洲999 | 丰满人妻翻云覆雨呻吟视频 | 乱淫的女高中暑假调教h | 亚洲久久综合 | 久久久久久久极品内射 | 精品人伦一区二区色婷婷 | 无码人妻精品中文字幕 | 日韩成人免费av | 女人毛片a毛片久久人人 | 大尺度做爰呻吟62集 | 久久亚洲成人av | 男人亚洲天堂 | 国产真人无码作爱视频免费 | 91精品一区 | 国产模特私拍xxxx | 成人国产精品免费 | 国产精品一区二区羞羞答答 | 婷婷伊人五月天 | 亚洲色无码播放 | 一本精品99久久精品77 | 扒开女人内裤猛进猛出免费视频 | 少妇精品 | 亚洲午夜福利av一区二区无码 | 久久爽久久爽久久av东京爽 | 日本特黄特色aaa大片免费 | 亚洲精品视频一区二区 | 激情xxx| 国产国产精品久久久久 | 韩国女主播av| 亚洲精品国产一区二区精华液 | 丁香婷婷视频 | 黄色片免费网站 | 无码国产69精品久久久久网站 | 国产一区二区精品丝袜 | 人人妻人人添人人爽欧美一区 | 国产毛片乡下农村妇女bd | 一级黄色大片在线观看 | 黄色成人免费视频 | 日本三级视频在线 | 黑人粗一硬一长一进一爽一a级 | 国产精品色婷婷99久久精品 | 免费视频a| 4hu在线观看| 久久99精品国产.久久久久 | 亚洲欧美在线视频免费 | 兔费看少妇性l交大片免费 97久久精品无码一区二区 | 午夜三级做爰高潮 | 午夜三级做爰高潮 | 色先锋资源久久综合5566 | 乡下小少妇xxxxx性开教 | 精品av一区二区 | 欧美乱妇视频 | 正在播放国产精品 | 精品欧美乱码久久久久久1区2区 | 风流僵尸艳片a级 | 国产粉嫩尤物极品99综合精品 | 伊人网在线视频 | 国产97免费视频 | 成人三级晚上看 | 94久久国产乱子伦精品免费 | 国产精品一区二区手机在线观看 | 亚洲乱色 | 一区二区三区在线观看免费 | 香蕉网在线观看 | 欧美激情视频一区二区三区不卡 | 含羞草传媒mv免费观看视频 | а天堂中文最新一区二区三区 | 亚洲乱码国产乱码精品精网站 | 懂爱av | 国产中文字幕久久 | 国产精品伦一区二区三区在线观看 | 亚洲午夜精品久久 | 亚洲国产精品久久久久婷婷老年 | 激情图片在线视频 | 成人aaa片一区国产精品 | 91制片一二三专区亚洲 | 国产日韩欧美一区二区三区乱码 | 免费在线观看污 | 日韩欧美精品一区二区 | 欧美黑人狂躁日本寡妇 | 我要看黄色1级片 | 免费国产在线视频 | 一级片观看 | 一道本一区二区 | 国产精品久久久久久免费 | 夜夜嗨av一区二区三区 | 熟妇人妻av无码一区二区三区 | 一级性毛片 | 中国免费黄色片 | 日韩va亚洲va欧美va清高 | 中国china体内裑精亚洲日本 | 青青草精品在线 | 国产拍拍拍拍拍拍拍拍拍拍拍拍拍 | 国产精品久久久久久久久久久久久久久久久 | 一级α片免费看刺激高潮视频 | 日韩视频精品在线 | 日韩一区2区 | 1024中文字幕 | 国产福利在线观看视频 | 国产高潮流白浆视频 | 伊人av中文av狼人av | tube少妇高潮| 黑人邻居太猛中文字幕hd | 在线观看av毛片 | 国产精品久久久久无码av色戒 | 黄色一级国产 | 啪免费 | 免费看操片 | 麻豆精品国产传媒mv男同 | 国产综合久久久久久鬼色 | 欧美日韩国产在线一区 | 国产亚洲精久久久久久无码苍井空 | 欧美视频一级 | www.久久伊人 | 国产性色强伦免费视频 | 国产精品丝袜久久久久久不卡 | 国产女s调教男m免费网站 | 国产乱色国产精品播放视频 | 久久新网址 | 成人网站在线进入爽爽爽 | 先锋资源在线视频 | 最新国产拍偷乱偷精品 | 狂野欧美性猛交免费视频 | 国产精品久久久久一区二区三区 | 青青草原综合网 | 国产国拍亚洲精品av | 欧美韩一区二区 | 粉嫩在线一区二区三区视频 | 夜夜高潮次次欢爽av女 | 国产乱人伦av在线a麻豆 | 最近中文字幕免费mv视频7 | 国产看黄网站又黄又爽又色 | 青娱乐精品视频 | av成人免费| 国产免费又硬又黄又爽的视频喷水 | hd日本xxxx | 好吊操av| 国产精品乱码在线观看 | 台湾佬中文娱乐网址 | 88av视频| 91中文字幕 | 日批免费在线观看 | 亚洲图片欧美日韩 | 在线观看免费黄色 | 最近中文字幕在线免费观看 | 九九热伊人 | 狠狠躁夜夜躁人人爽蜜桃 | 成人国产精品齐天大性 | 激情欧美日韩一区二区 | 国产午夜视频在线观看 | 精品国产一区二区三区四区 | 国产精品人妻一区夜夜爱 | 波多野在线视频 | 亚洲日本va中文字幕久久 | 成人一级黄色 | 国产高清片 | 国产精品国产三级国产专播 | 日韩毛片无码永久免费看 | 精品少妇一区二区30p | 国产亚洲精品久久久久久打不开 | 日韩欧美在线视频 | 777色视频 | 亚洲福利精品 | 久久久久蜜桃精品成人片 | 99热这里只有精品9 99热这里只有精品99 | 亚洲乱码一区二区 | 国产精品视频免费看 | 黄色伊人| 成人片黄网站色大片免费观看 | 中文精品一区二区三区四区 | 在线观看91av | 久久无码中文字幕免费影院蜜桃 | 少妇的性生话免费视频 | 夜夜添日日射 | 午夜熟女毛片蜜桃传媒 | 性色av 一区二区三区 | 国语对白做受xxxxx在 | 久久国产一区二区三区 | 国产无遮挡又黄又爽高潮 | 久久久久成人精品免费播放动漫 | 亚洲人成人毛片无遮挡 | 十八禁在线观看视频播放免费 | 欧美亚洲精品在线观看 | 亚洲第一网站 | 加勒比无码人妻东京热 | 亚洲精品一区二区三区四区五区 | 狠狠干狠狠撸 | 毛片视频网址 | 国内精品国产成人国产三级 | 视频一区亚洲 | 日本熟妇色一本在线观看 | 亚洲三级在线 | 天天做天天爱天天爽综合网 | 欧美一区二区三区免费观看 | 国产白袜脚足j棉袜在线观看 | 一区二区三区四区在线观看视频 | 一起操网站 | 黄色一区二区三区四区 | 成人h动漫精品一区二区器材 | 四虎影库久免费视频 | 四虎影视在线影院在线观看免费视频 | 黑白配高清在线观看免费版中文 | 男人在线天堂 | 国产又色又爽又黄刺激视频 | 综合色播 | 国产欧美性成人精品午夜 | 欧美一区二区三区爽爽爽 | 国产综合在线播放 | 26uuu精品一区二区 | 又黄又爽的视频在线观看网站 | 人妻夜夜爽天天爽爽一区 | 黄色一级黄色片 | 色偷偷av一区二区三区 | 亚洲欧美一区二区三区视频 | 在线中文字幕一区二区 | 老男人久久青草av高清 | 色屁屁xxxxⅹ免费视频 | 亚洲精品中文字幕乱码 | 777精品伊人久久久久大香线蕉 | 毛片免费视频观看 | 国产区一区二区 | 四虎免费网址 | 国内精品久久毛片一区二区 | 亚洲国产精品久久久久秋霞影院 | 国内精品久久久久久久97牛牛 | 久久99久久99精品免观看粉嫩 | 日韩经典在线 | 久久鲁鲁 | 亚洲人成人77777网站 | 日韩欧美在线观看一区二区 | 精品乱码一区二区三区四区 | 精品黑人一区二区三区久久 | 永久免费的啪啪网站免费观看浪潮 | 国产乱色国产精品播放视频 | 综合性色 | 国产精品久久久久9999鸭 | 久久久久久久久久久av | 伊人精品久久久大香线蕉 | 国产免费视频一区二区裸体 | 欧美牲交a欧牲交aⅴ久久 | 亚洲高清偷拍一区二区三区 | 中文精品欧美无线码一区 | 影音先锋亚洲精品 | 成人中文字幕+乱码+中文字幕 | 国产精品www老牛影视 | 日本在线中文 | 成年人网站在线 | 亚洲中文字幕久久精品蜜桃 | 国产在线观看第一页 | 欧美激情在线 | 日本精品久久久 | 少妇性i交大片免费 | 老色鬼在线精品视频 | 亚洲精品在线观看网站 | 国产精品夜夜春夜夜爽 | 青青草dvd | 欧美日韩国产在线一区 | 国语久久 | 狠狠干伊人网 | 女人高潮抽搐喷液30分钟视频 | 蜜桃中文字幕 | 成人在线欧美 | 国产午夜精品久久久久久久 | 美乳少妇与邻居尤物啪啪 |