精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

500萬并發(fā)不崩潰?InnoDB 內(nèi)存架構(gòu)的秘密曝光!

數(shù)據(jù)庫(kù) 其他數(shù)據(jù)庫(kù)
Buffer Pool 使用 LRU 算法的變體進(jìn)行管理。當(dāng)需要空間向緩沖池中添加新頁面時(shí),最近最少使用的頁面被移除,并將新頁面添加到列表的中間。

你好,見字如面。我是《Redis 高手心法》暢銷書作者,騰訊云架構(gòu)師同盟深圳區(qū)理事會(huì)成員、InfoQ 簽約作者碼哥,是一個(gè)手持菜刀砍電線,一路火花帶閃電的靚仔。

書接上回,林淵重生使得 MySQL B+Tree 提前問世二十年,這次親自操刀 InnoDB 架構(gòu)引擎的設(shè)計(jì),一個(gè)支持高并發(fā)讀寫、支持事務(wù)行級(jí)鎖的劃時(shí)代架構(gòu)誕生...

文章關(guān)鍵詞:MySQL InnoDB 架構(gòu)、Buffer Pool、Change Buffer、Buffer Pool LRU 算法、Adaptive Hash Index(自適應(yīng)哈希索引)、Log Buffer。

InnoDB 架構(gòu)誕生

2003 年 12 月 24 日,平安夜,林淵從維修臺(tái)猛然驚醒,耳邊是 DBA 的怒吼:"商品庫(kù)又被表鎖卡死了!每秒 500 單變 5 單!"

"小林,數(shù)據(jù)庫(kù)鎖表了,MyISAM 的表鎖就是定時(shí)炸彈!我們要突破技術(shù)封鎖,開發(fā)一套劃時(shí)代的存儲(chǔ)引擎“ CTO 對(duì)小林說道。

生在 2025 年作為互聯(lián)網(wǎng)打工牛馬的林淵,學(xué)過很多關(guān)于 MySQL 的技術(shù),記憶如潮水涌入——2025 年的 InnoDB 架構(gòu)圖在他腦中展開,InnoDB 內(nèi)存架構(gòu)、磁盤架構(gòu);

以及那些 Buffer Pool、Change Buffer 的代碼如同梵高星月夜般絢爛,解鎖《InnoDB 設(shè)計(jì)圖鑒》,準(zhǔn)備揚(yáng)名立萬。

圖片圖片

于是他在京都國(guó)際數(shù)據(jù)庫(kù)提交一篇提案:《論行級(jí)鎖與內(nèi)存緩沖池——下一代存儲(chǔ)引擎設(shè)計(jì)提案》,附件性能對(duì)比圖震撼業(yè)界。

場(chǎng)景

MyISAM

"InnoDB"原型

100 萬并發(fā)更新

崩潰


TPS 18,492

范圍查詢

12.8s

0.3s

InnoDB 內(nèi)存結(jié)構(gòu)主要包含 Buffer Pool 、Change Buffer 、Adaptive Hash Index (自適應(yīng)哈希索引)和 Log Buffer。

Buffer Pool

Buffer Pool 是主內(nèi)存中的一個(gè)區(qū)域,它在訪問時(shí)緩存表和索引數(shù)據(jù)。Buffer Pool 允許頻繁使用的數(shù)據(jù)直接從內(nèi)存中訪問,從而加快處理速度。

Buffer Pool 是 InnoDB 引擎的核心內(nèi)存組件,采用預(yù)分配的連續(xù)內(nèi)存空間,默認(rèn)大小通過 innodb_buffer_pool_size 配置(建議設(shè)置為物理內(nèi)存的 60-80%)。

其本質(zhì)是一個(gè)基于頁(Page)的緩存系統(tǒng),通過 Page Directory 和 Free List 實(shí)現(xiàn)高效內(nèi)存管理。

為了提高大量讀取操作的效率,緩沖池被劃分為可以潛在地包含多行的頁面。

Buffer Pool LRU 算法

Buffer Pool 使用 LRU 算法的變體進(jìn)行管理。當(dāng)需要空間向緩沖池中添加新頁面時(shí),最近最少使用的頁面被移除,并將新頁面添加到列表的中間。

這種中間插入策略將列表視為兩個(gè)子列表:

  • 在頭部,一個(gè)包含最近訪問的新(“young”)頁面的子列表,稱之為 「New Sublist」
  • 在尾部,一個(gè)包含較舊(“Old”)頁面的子列表,稱之為 「Old Sublist」,這些頁面數(shù)據(jù)通常是較少被訪問的。

圖片圖片

算法將頻繁使用的頁面保留在「New Sublist」中。「Old Sublist」包含使用頻率較低的頁面。

默認(rèn)情況下,算法按以下方式運(yùn)行:

  • Buffer Pool 的 3/8 用于「Old Sublist」。
  • 列表的中點(diǎn)是「New Sublist」的尾部與「Old Sublist」的頭部相交的邊界。
  • 當(dāng) InnoDB 將頁面讀入 Buffer Pool 時(shí),它最初將其插入中點(diǎn)(「Old Sublist」的頭部)。可以讀取頁面,因?yàn)樗枰糜谟脩舭l(fā)起的操作,如 SQL 查詢,或者作為 InnoDB 自動(dòng)執(zhí)行的預(yù)讀操作的組成部分。
  • 訪問「Old Sublist」中的頁面數(shù)據(jù)會(huì)將其設(shè)置為“Young”,將其移動(dòng)到「New Sublist」的頭部。如果頁面是因?yàn)橛脩舭l(fā)起的操作而讀取的,則第一次訪問立即發(fā)生,頁面變?yōu)椤癥oung”。如果頁面是因?yàn)轭A(yù)讀操作而讀取的,則第一次訪問不會(huì)立即發(fā)生。
  • 隨著數(shù)據(jù)庫(kù)的運(yùn)行,Buffer Pool 中未被訪問的頁面會(huì)通過向列表尾部移動(dòng)而“老化”。「New Sublist」和「Old Sublist」中的頁面都會(huì)隨著其他頁面變?yōu)樾马撁娑匣.?dāng)頁面在中間插入時(shí),「Old Sublist」中的頁面也會(huì)老化。最終,一個(gè)未被使用的頁面會(huì)到達(dá)「Old Sublist」的尾部并被淘汰。

優(yōu)化提示:應(yīng)將緩沖池的大小設(shè)置為盡可能大的值,同時(shí)為服務(wù)器上其他進(jìn)程運(yùn)行留出足夠的內(nèi)存,避免過度分頁。緩沖池越大, InnoDB 就越像內(nèi)存數(shù)據(jù)庫(kù),一次從磁盤讀取數(shù)據(jù),然后在后續(xù)讀取中從內(nèi)存中訪問數(shù)據(jù)。

Change Buffer

"每秒 10 萬次非主鍵更新,磁盤 IOPS 爆表!"運(yùn)維總監(jiān)癱坐在監(jiān)控屏前。林淵拔下服務(wù)器電源:"上 Change Buffer!"

實(shí)時(shí)監(jiān)控屏上,磁盤寫入曲線從鋸齒狀驟變?yōu)槠交本€:

Before: IOPS 15,000 → After: 2,300 (下降85%)

甲骨文特派員 Mike 臉色鐵青:"這算法...至少超越時(shí)代十年!”

林淵清了清嗓子,繼續(xù)給大家解釋 Change Buffer 的設(shè)計(jì)思路……

Change Buffer 是一種特殊的數(shù)據(jù)結(jié)構(gòu),針對(duì)非唯一二級(jí)索引的寫優(yōu)化結(jié)構(gòu),用于緩存當(dāng)二級(jí)索引頁不在 Buffer Pool 中時(shí)的寫操作

當(dāng)二級(jí)索引頁不在緩沖池中時(shí),用于緩存對(duì)這些頁面的更改。這些由 INSERT 、 UPDATE 或 DELETE 操作(DML)產(chǎn)生的緩沖更改,將在頁面通過其他讀取操作加載到緩沖池時(shí)進(jìn)行合并。

  • 若目標(biāo)頁不在 Buffer Pool,將變更記錄寫入 Change Buffer 生成 Redo Log 保證持久化;
  • 當(dāng)后續(xù)讀取該索引頁時(shí),將 Change Buffer 中的變更合并(Merge)到 Buffer Pool,觸發(fā)異步刷盤。

圖片圖片

臺(tái)下有人問:“有了 Buffer Pool 為何還要再設(shè)計(jì)一個(gè) Change Buffer 呢?”

與聚簇索引不同,二級(jí)索引通常是非唯一的,且對(duì)二級(jí)索引的插入操作往往以相對(duì)隨機(jī)的順序發(fā)生。

同樣,刪除和更新操作也可能影響索引樹中不相鄰的二級(jí)索引頁。

當(dāng)其他操作將受影響的頁讀入 Buffer Pool 時(shí),隨后將緩存的更改合并,避免了從磁盤讀取二級(jí)索引頁至 Buffer Pool 所需的大量隨機(jī)訪問 I/O。

系統(tǒng)在空閑時(shí)段或緩慢關(guān)閉期間運(yùn)行的清除操作會(huì)周期性地將更新的索引頁寫入磁盤。

相較于立即逐條寫入磁盤,清除操作能以更高效的方式批量寫入包含連續(xù)索引值的磁盤塊。


Change Buffer 有什么不足呢?

當(dāng)存在大量受影響的行和需要更新的二級(jí)索引時(shí),Change Buffer 合并可能需要數(shù)小時(shí)。

在此期間,磁盤 I/O 會(huì)增加,可能導(dǎo)致磁盤密集型查詢顯著變慢。Change Buffer 合并操作可能在事務(wù)提交后持續(xù)進(jìn)行,甚至在服務(wù)器關(guān)閉并重啟后仍會(huì)繼續(xù)。

在內(nèi)存中,Change Buffer 占用 Buffer Pool 的一部分空間。在磁盤上,Change Buffer 屬于系統(tǒng)表空間的一部分,當(dāng)數(shù)據(jù)庫(kù)服務(wù)器關(guān)閉時(shí),索引變更將在此處緩沖存儲(chǔ)。

Change Buffer 劃時(shí)代意義

當(dāng)對(duì)表執(zhí)行 INSERT 、 UPDATE 和 DELETE 操作時(shí),索引列的值(尤其是二級(jí)鍵的值)通常處于無序狀態(tài),需要大量 I/O 操作來更新二級(jí)索引。

當(dāng)相關(guān)頁面不在 Buffer Pool 中時(shí),Change Buffer 會(huì)緩存對(duì)二級(jí)索引條目的修改,從而避免立即從磁盤讀取頁面所產(chǎn)生的高昂 I/O 開銷

當(dāng)頁面被加載到 Buffer Pool 時(shí),緩沖的更改會(huì)被合并,更新后的頁面隨后會(huì)刷寫到磁盤。

由于變更緩沖能夠減少磁盤讀寫次數(shù),因此對(duì)于 I/O 密集型工作負(fù)載(例如涉及大量 DML 操作的應(yīng)用場(chǎng)景,如批量插入)具有重要價(jià)值,這類場(chǎng)景可顯著受益于 Change Buffer 機(jī)制。

Adaptive Hash Index(自適應(yīng)哈希索引)

2005 年 eBay 中國(guó)競(jìng)標(biāo)現(xiàn)場(chǎng),林淵與 Oracle 團(tuán)隊(duì)正面對(duì)決。

"貴司方案處理不了熱點(diǎn)數(shù)據(jù)吧?"Oracle 首席亮出 TPC-C 測(cè)試報(bào)告。林淵輕笑一聲,敲下:

SET GLOBAL innodb_adaptive_hash_index=ON;
-- 激活哈希索引

瞬間,用戶 ID 查詢從 378ms 降至 0.09ms。

自適應(yīng)哈希索引(Adaptive Hash Index,AHI) 是 InnoDB 存儲(chǔ)引擎內(nèi)部自動(dòng)創(chuàng)建和管理的哈希索引,用于優(yōu)化 等值查詢(如 WHERE key = 'value' 的性能。

與傳統(tǒng)手動(dòng)創(chuàng)建的哈希索引不同,AHI 完全由 InnoDB 根據(jù)查詢模式動(dòng)態(tài)生成和銷毀,無需用戶干預(yù)。

核心作用:通過將頻繁訪問的索引鍵值映射到哈希表,繞過 B+ 樹的逐層查找,直接定位到目標(biāo)數(shù)據(jù)頁,從而減少磁盤 I/O 和 CPU 開銷。

他的觸發(fā)條件是什么?

InnoDB 通過監(jiān)控索引頁的訪問模式,動(dòng)態(tài)決定是否創(chuàng)建 AHI:

  • 頻率閾值:同一索引頁被連續(xù)訪問超過 100 次
  • 查詢模式匹配:相同查詢條件多次訪問同一頁(次數(shù)閾值:頁中記錄數(shù) / 16)。

生命周期管理

  • 自動(dòng)創(chuàng)建:滿足觸發(fā)條件時(shí)動(dòng)態(tài)生成哈希條目。
  • 自動(dòng)淘汰

當(dāng)索引頁不再被頻繁訪問時(shí),通過 LRU 機(jī)制逐步移除哈希條目。

當(dāng)表被刪除或重建時(shí),相關(guān) AHI 條目自動(dòng)清理。

工作流程如下圖所示:

圖片圖片

優(yōu)缺點(diǎn)分析

優(yōu)點(diǎn)

局限性

減少等值查詢的 B+ 樹遍歷層級(jí)

僅適用于等值查詢(=, IN),不適用范圍查詢

降低 CPU 和 I/O 開銷

哈希沖突可能影響性能

完全自動(dòng)化,無需人工維護(hù)

高并發(fā)場(chǎng)景可能因鎖爭(zhēng)用成為瓶頸

對(duì)熱點(diǎn)數(shù)據(jù)訪問有顯著加速效果

內(nèi)存占用增加(需權(quán)衡 innodb_adaptive_hash_index_parts

使用場(chǎng)景建議

  • 推薦開啟: OLTP 系統(tǒng)中以等值查詢?yōu)橹鞯膱?chǎng)景(如用戶中心、訂單查詢)。
  • 建議關(guān)閉

寫密集型負(fù)載(如日志寫入)。

內(nèi)存緊張或出現(xiàn)大量哈希沖突時(shí)。

使用 SSD 且 Buffer Pool 足夠大時(shí),B+ 樹自身性能已足夠。

Log Buffer(日志緩沖區(qū))

"林工,交易系統(tǒng)每秒百萬事務(wù),如何保證零丟失?"

用 Redo Log 實(shí)現(xiàn)!避免每次事務(wù)操作都寫磁盤,我設(shè)計(jì)了 Log Buffer。

Log Buffer 是 InnoDB 存儲(chǔ)引擎用于臨時(shí)緩存 重做日志(Redo Log) 的內(nèi)存區(qū)域。

Log Buffer 大小由 innodb_log_buffer_size 變量定義,默認(rèn)大小為 64MB。

所有事務(wù)對(duì)數(shù)據(jù)的修改在寫入磁盤前,其對(duì)應(yīng)的 Redo Log 會(huì)先寫入 Log Buffer,隨后按策略批量刷新到磁盤的 Redo Log 文件中。

設(shè)計(jì)目標(biāo)

  1. 減少磁盤 I/O 次數(shù):合并多個(gè)日志寫入操作,避免頻繁的小數(shù)據(jù)量磁盤寫入。
  2. 提升事務(wù)響應(yīng)速度:延遲日志刷盤,降低事務(wù)提交的等待時(shí)間。
  3. 保證持久性(Durability):通過可控的刷盤策略,確保已提交事務(wù)的日志最終持久化。

Log Buffer 內(nèi)容會(huì)定期刷新到磁盤。較大的 Log Buffer 允許大型事務(wù)在提交前無需將 Redo Log 數(shù)據(jù)寫入磁盤。

因此,若有更新、插入或刪除大量行的事務(wù),增大 Log Buffer 可節(jié)省磁盤 I/O。

Log Buffer 實(shí)現(xiàn)原理

Log Buffer 內(nèi)存結(jié)構(gòu)與寫入流程:

  1. 日志生成
  • 事務(wù)修改數(shù)據(jù)頁時(shí),生成 Redo Log 記錄。
  • 日志記錄包含修改內(nèi)容、LSN(Log Sequence Number)等信息。
  1. 緩沖區(qū)寫入
  • Log Buffer 空間足夠,則日志按順序追加到 Log Buffer 的空閑位置。
  • 使用 buf_free 指針標(biāo)記當(dāng)前寫入偏移量。
  1. 刷盤觸發(fā)條件
  • 事務(wù)提交:根據(jù) innodb_flush_log_at_trx_commit 設(shè)置決定是否刷盤。
  • 緩沖區(qū)滿:當(dāng)寫入數(shù)據(jù)超過緩沖區(qū)空閑空間時(shí)強(qiáng)制刷盤。
  • 定時(shí)任務(wù):每隔 innodb_flush_log_at_timeout 秒觸發(fā)刷盤(策略為 0 或 2 時(shí))。

圖片圖片

刷盤策略詳解

參數(shù)值

行為描述

數(shù)據(jù)安全性

性能

適用場(chǎng)景

0

日志每秒刷盤一次,事務(wù)提交時(shí)不強(qiáng)制刷盤

最低

最高

非關(guān)鍵數(shù)據(jù)批量處理

1

每次事務(wù)提交時(shí)同步刷盤(fsync)

最高

最低

金融交易等高安全需求

2

事務(wù)提交時(shí)寫入操作系統(tǒng)緩存,不立即刷盤;每秒由操作系統(tǒng)異步刷盤

中等

較高

常規(guī)業(yè)務(wù)系統(tǒng)

Log Buffer 與 Redo Log 協(xié)作

1. 與 Redo Log 文件的關(guān)系

  • 循環(huán)寫入:Redo Log 文件(如 ib_logfile0ib_logfile1)以循環(huán)方式復(fù)用。
  • LSN 協(xié)調(diào)

每個(gè)日志記錄攜帶 LSN,全局唯一且遞增。

Checkpoint LSN 標(biāo)記已持久化的日志位置。

2. 崩潰恢復(fù)流程

圖片圖片

  • 重啟時(shí)掃描 Redo Log:從最后一個(gè) Checkpoint LSN 開始重放日志。
  • 前滾(Redo):將 Log Buffer 中未刷盤的日志重新應(yīng)用到數(shù)據(jù)頁。
  • 后滾(Undo):通過 Undo Log 回滾未提交的事務(wù)。

3. Group Commit 優(yōu)化

圖片

  • 合并提交:多個(gè)事務(wù)的日志寫入合并為一次磁盤操作。
  • 工作流程

事務(wù)提交時(shí),將日志追加到 Log Buffer。

由后臺(tái)線程統(tǒng)一將多個(gè)事務(wù)的日志批量寫入磁盤。

減少頻繁的 fsync 調(diào)用,提升高并發(fā)下的吞吐量。

Log Buffer 通過內(nèi)存緩沖和批量刷盤機(jī)制,在 事務(wù)持久性 與 系統(tǒng)性能 之間取得平衡。

合理配置 innodb_flush_log_at_trx_commit 和緩沖區(qū)大小,結(jié)合 Group Commit 等優(yōu)化技術(shù),可顯著提升高并發(fā)場(chǎng)景下的數(shù)據(jù)庫(kù)性能。

同時(shí),需根據(jù)業(yè)務(wù)容忍度選擇恰當(dāng)?shù)乃⒈P策略,避免數(shù)據(jù)丟失風(fēng)險(xiǎn)。

甲骨文 CEO 拉里·埃里森頹然坐倒:"這架構(gòu)...我們十年也追不上!”

本次數(shù)據(jù)庫(kù)峰會(huì),林淵大放異彩。

關(guān)于 InnoDB 磁盤架構(gòu)(Tables、Indexes、Tablespace、Doublewrite Buffer、Redo Log、Undo Log)的設(shè)計(jì),且聽下回分解……

責(zé)任編輯:武曉燕 來源: 碼哥跳動(dòng)
相關(guān)推薦

2019-06-21 11:06:15

Python 開發(fā)編程語言

2022-07-25 09:40:41

內(nèi)存00M

2021-08-18 15:49:10

FBI恐怖分子信息泄露

2014-02-11 09:05:38

微軟Autopilot

2025-09-11 09:11:36

2012-05-02 13:57:36

Instagram

2012-06-29 10:22:36

系統(tǒng)架構(gòu)

2016-06-17 17:56:22

騰訊

2019-09-10 16:25:19

Python內(nèi)存空對(duì)象

2018-03-27 15:28:03

蘋果專利Apple Pen

2018-08-27 08:31:25

InnoDBMySQL

2023-09-25 15:29:44

Go并發(fā)Goroutines

2022-08-05 11:55:13

FlutteriOS

2009-02-09 10:09:38

2025-06-16 07:45:00

2015-09-29 16:00:32

浪潮

2019-11-04 15:57:29

MySQLInnoDB內(nèi)存

2025-11-19 09:05:38

2013-01-24 11:22:12

Surface Pro

2023-09-01 18:18:32

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

a级黄色小视频| 精品入口麻豆88视频| 国产精品igao视频网网址不卡日韩| 久久99精品久久只有精品| 亚洲成**性毛茸茸| 成人a在线视频| www.久久国产| 午夜av在线播放| av资源久久| 午夜不卡av免费| 91久久伊人青青碰碰婷婷| 久久久久亚洲AV成人无在| 交100部在线观看| 国产精品99久久久久久久女警| 最近更新的2019中文字幕| 丝袜老师办公室里做好紧好爽 | 黄色片在线播放| 精品动漫3d一区二区三区免费版| 制服视频三区第一页精品| 日韩精品一区二区三区丰满 | 中文字幕日韩欧美精品高清在线| 欧美特级限制片免费在线观看| 精品伦精品一区二区三区视频 | 欧美一区二区少妇| 伊人久久大香线蕉综合热线| 亚洲天堂第一页| 精品视频无码一区二区三区| 色视频在线观看福利| 久久国产精品露脸对白| 2024亚洲男人天堂| 动漫精品一区二区三区| 精品中文字幕一区二区三区| 色8久久人人97超碰香蕉987| 欧美精品尤物在线| 国产免费观看av| 日日狠狠久久偷偷综合色| 亚洲一区视频在线观看视频| 亚洲一区二区三区sesese| 国产精品精品软件男同| 国产精品99久久免费| 日本乱人伦一区| www黄色日本| 国内精品一区视频| 成人自拍视频在线观看| 韩国视频理论视频久久| 欧美一区二区三区成人精品| 日韩视频在线直播| 香蕉乱码成人久久天堂爱免费| 亚洲欧洲久久| 亚洲第一黄色片| 日韩亚洲国产欧美| 亚洲性猛交xxxxwww| 嫩草影院国产精品| 天天综合视频在线观看| 韩国一区二区在线观看| 久久全球大尺度高清视频| 中国黄色a级片| 国产精品亲子伦av一区二区三区| 亚洲女人小视频在线观看| 俄罗斯精品一区二区| 激情五月婷婷网| 国产国产精品| 亚洲精品99999| 天堂一区在线观看| 污视频网站在线免费| 亚洲精品免费在线观看| 国产精品乱子乱xxxx| 波多野结衣影片| 综合天天久久| 欧美成人免费va影院高清| 少妇精品一区二区| 欧美一性一交| 日韩一区二区三区四区五区六区| 久久久一本二本三本| 国产不卡人人| 色综合久久中文字幕| 97超碰免费观看| 婷婷在线免费视频| 黄色亚洲精品| 伊人男人综合视频网| 成人啪啪18免费游戏链接| 日韩欧美另类一区二区| 一区二区在线观看免费| 日韩精品在线观看av| 深夜av在线| 亚洲综合视频在线观看| 亚洲国产日韩综合一区| 黄色在线视频网站| 久久久国产精品麻豆| 国产精品亚洲一区| 亚州视频一区二区三区| 欧美韩国日本综合| 久久久久久久久一区二区| 国产美女三级无套内谢| 久久久成人网| 午夜精品一区二区三区在线播放| 国产精品久久久久久久久久精爆| 一区在线免费观看| 日本一区二区三区四区视频| 日韩av无码中文字幕| 天堂美国久久| 91精品国产高清久久久久久久久| 免费在线一级片| 国产精品二区不卡| 欧美激情在线狂野欧美精品| 91麻豆精品成人一区二区| 欧美少妇性xxxx| 亚洲网站在线播放| 黄色片在线观看网站| 亚洲乱码电影| 日av在线播放中文不卡| 国产精品suv一区二区69| 欧美激情777| 精品国产欧美成人夜夜嗨| 极品人妻videosss人妻| 经典一区二区| 亚洲日韩欧美视频| 欧美日韩激情在线观看| 青椒成人免费视频| 国产欧美va欧美va香蕉在| 五月婷婷激情五月| 国产成人av电影免费在线观看| 91沈先生在线观看| 99国产精品99| 中文一区二区完整视频在线观看| 欧美日韩大片一区二区三区| 在线免费观看的av| 亚洲一区二区三区中文字幕 | 奇米一区二区三区av| 国产精品一区二区三区精品 | 激情五月综合| 7m第一福利500精品视频| 国产日韩欧美一区二区东京热| 国产午夜一区二区三区| 久久综合给合久久狠狠色| 神马亚洲视频| 亚洲国产精品成人综合| 久久美女福利视频| 国产一区二区主播在线| 欧美日韩的一区二区| 波多野结衣免费观看| 亚洲精品一区二区三区在线| 日韩精品视频在线免费观看 | 国产精品色噜噜| 激情图片qvod| 91精品国产色综合久久不卡粉嫩| 欧美大片在线观看一区二区| 第四色在线视频| japanese国产精品| 欧洲亚洲免费视频| 牛牛影视精品影视| 最新不卡av在线| 日本a在线免费观看| 天天免费亚洲黑人免费| 亚洲精品国产精品自产a区红杏吧 亚洲精品国产精品乱码不99按摩 亚洲精品国产精品久久清纯直播 亚洲精品国产精品国自产在线 | 久久久精品国产亚洲| 久久国产免费观看| 国产成人在线观看| 91免费国产精品| 九色porny丨国产首页在线| 精品日产卡一卡二卡麻豆| 日本二区在线观看| 日本特黄久久久高潮| 亚洲精品一区国产精品| 久久电影天堂| 久久天天躁狠狠躁老女人| 日本视频www| 91麻豆精东视频| 欧美一级黄色录像片| 视频精品一区| 欧美一乱一性一交一视频| 国产中文字幕在线| 欧美日韩午夜精品| 国产制服丝袜在线| 久久成人在线| 在线成人性视频| jk漫画禁漫成人入口| 日韩欧美精品在线视频| 久久精品国产亚洲av无码娇色| 成人91在线观看| 波多野结衣 作品| 精品欧美午夜寂寞影院| www亚洲欧美| www.蜜臀av.com| 国产精品久久久久久一区二区三区 | 亚洲国产三级网| 中日韩在线观看视频| a美女胸又www黄视频久久| 一区二区精品视频| 午夜av不卡| 欧美不卡一区二区三区| 免费在线不卡视频| 亚洲欧洲一区二区在线播放| 一二三区视频在线观看| 丝袜亚洲精品中文字幕一区| 久久久久一区二区三区| av在线播放一区| 亚洲美女又黄又爽在线观看| 国产精品99精品| 国产日韩三级在线| 国产日韩视频一区| 韩国在线一区| 日韩一区二区三区资源| 91麻豆精品激情在线观看最新| 久久久999精品免费| 色wwwwww| 日韩午夜激情电影| 免费看av在线| 国产精品久久免费看| 国产成人av无码精品| 国产专区一区| 亚洲国产综合自拍| 日韩啪啪网站| 99国产高清| 成全电影大全在线观看| 欧美变态tickling挠脚心| 亚洲午夜无码久久久久| 午夜激情一区二区三区| 成人免费视频国产免费观看| 国产人成一区二区三区影院| 韩国无码一区二区三区精品| 国产91对白在线观看九色| 污污网站免费看| 久久看片网站| 欧美精品99久久| 亚洲手机在线| 成年在线观看视频| 亚洲91视频| 999视频在线免费观看| 日韩欧美2区| 欧洲中文字幕国产精品| 2021天堂中文幕一二区在线观| 亚洲精品美女网站| 99在线精品视频免费观看20| 亚洲图片欧美综合| 中文字幕人妻一区二| 国产精品麻豆欧美日韩ww| 高清国产在线观看| 国产三级精品三级| 亚洲日本精品视频| 国产精品亚洲成人| 亚洲 欧美 日韩 国产综合 在线| 综合干狼人综合首页| 成人国产精品一区| 国产精品美女午夜爽爽| 国产精品美女视频网站| av网站免费在线观看| 日韩小视频在线观看| 天天在线视频色| 日韩在线不卡视频| 操你啦视频在线| 精品网站999www| 亚洲网站免费观看| 亚洲国产另类av| 国产亚洲精品精品精品| 国产喂奶挤奶一区二区三区| 亚洲午夜精品久久久久久高潮| 国产欧美日韩视频一区二区| 特黄一区二区三区| 99热在这里有精品免费| 午夜不卡久久精品无码免费| 91亚洲男人天堂| 中文字幕55页| 国产成人av影院| 日本丰满少妇裸体自慰| 久久色成人在线| 香蕉久久久久久av成人| 成人一级视频在线观看| 国产精品无码毛片| 国产女同性恋一区二区| 女人黄色一级片| 亚洲男人天堂av| 青青操免费在线视频| 亚洲欧洲制服丝袜| a级在线免费观看| 国产精品久久久久久久久果冻传媒| 亚洲欧美日韩偷拍| 久久久高清一区二区三区| 日本视频在线免费| 国产亚洲一区二区三区在线观看 | 中文精品一区二区| 中文字幕一区二区三区在线乱码 | 久久黄色一级视频| 日本中文字幕不卡| 国产大片一区二区三区| 日本成人在线一区| 超碰在线免费av| 2017欧美狠狠色| 免费在线观看a级片| 午夜精品久久久久久久| 精品国产www| 亚洲成人a**站| www.成人精品| 亚洲欧洲偷拍精品| 91亚洲天堂| 国产成人aa精品一区在线播放| 狠狠操一区二区三区| 国产欧美日韩免费| 在线观看的黄色| 成人精品在线视频| 综合伊思人在钱三区| 久久香蕉综合色| 91成人看片| wwwwww.色| 日本亚洲一区二区| 少妇精品无码一区二区| 国产精品美女久久久久久久久| 国产乡下妇女做爰视频| 欧美精品黑人性xxxx| 国产精品呻吟久久| 欧美一区二区视频在线观看2022| 国产精品自产拍| 亚洲美女在线视频| 日韩激情av| 国产日韩欧美中文| 国产精品午夜一区二区三区| 精品少妇在线视频| 国产精品亚洲а∨天堂免在线| 欧美丰满老妇熟乱xxxxyyy| 精品二区三区线观看| 国产精品视频一区在线观看| 91精品国产91综合久久蜜臀| 国产日韩精品在线看| 中文字幕日韩在线播放| 在线国产91| 九九热这里只有精品免费看| 91视频欧美| 亚洲专区国产精品| 欧美电影《睫毛膏》| 国产理论在线播放| 久久久不卡网国产精品一区| 国产做受高潮漫动| 精品少妇一区二区| 日韩激情av| 99热在线国产| 国内精品久久久久国产盗摄免费观看完整版| 奇米视频7777| 成人亚洲一区二区一| 欧美xxxx黑人xyx性爽| 五月婷婷另类国产| 丰满熟妇乱又伦| 亚洲欧美综合精品久久成人| 色一区二区三区| 欧美不卡在线一区二区三区| 一本久久知道综合久久| 日韩Av无码精品| 天天亚洲美女在线视频| 天堂在线中文网| 777777777亚洲妇女| 三级精品视频| 中文字幕无码不卡免费视频| 久久精品一区八戒影视| 天天干天天插天天射| 日韩在线视频网站| 国产精品毛片aⅴ一区二区三区| 97精品国产97久久久久久粉红| 国产麻豆视频一区二区| 精品无码人妻一区二区三| 一本久久a久久免费精品不卡| 天堂av网在线| 国产精品久久综合av爱欲tv| 日韩精品久久久久久久电影99爱| 69sex久久精品国产麻豆| 99这里都是精品| 日韩熟女一区二区| 中文字幕免费精品一区高清| 成人免费观看49www在线观看| 米仓穗香在线观看| 日日噜噜夜夜狠狠视频欧美人| 无码人妻丰满熟妇区毛片蜜桃精品| 樱桃国产成人精品视频| 韩国av免费在线| 日韩av第一页| 婷婷综合亚洲| av在线播放网址| 在线影视一区二区三区| 狠狠人妻久久久久久综合麻豆| 88国产精品欧美一区二区三区| 国产亚洲欧美日韩在线观看一区二区 | 中文字幕精品一区久久久久| 国产95亚洲| 鲁一鲁一鲁一鲁一色| 国产精品丝袜黑色高跟| 精品国产av一区二区| 欧美一区二区三区精品电影| 日韩.com| 欧美在线一级片| 欧美日韩亚洲综合在线 | 亚洲午夜久久久久久久久久久| 四虎国产精品永远| 成人啪啪免费看| 裸体一区二区| 九九热精品在线观看| 亚洲最新av在线| 91成人入口| 免费在线观看污网站| 国产精品高清亚洲| 蜜桃av噜噜一区二区三区麻豆| www.久久撸.com| 九九热hot精品视频在线播放|