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

MySQL 的一行記錄是怎么存儲的?

數據庫 MySQL
mysql 的一行記錄,最終肯定是存儲在磁盤上,也就是肉眼可見的文件上,今天我們的目標很簡單,就是看看它到底是怎么存的。

[[413088]]

 我們先準備好三樣東西。

1. 準備好一個 mysql 5.7 并將其啟動。

2. 準備好 mysql 的官方文檔放在旁邊:

https://dev.mysql.com

3. 準備好 mysql 的源碼,萬一要用呢,別怕:

https://dev.mysql.com/downloads/mysql/5.7.html

一手資料,就是官方文檔 + 源碼 + 二進制文件,其中二進制文件是我們自己去磁盤中找的,一會就知道了。Let's Go!mysql 會把文件存在哪里呢?先找到他。

  1. mysql> SHOW VARIABLES LIKE 'datadir'
  2. +---------------+---------------------------------------------+ 
  3. | Variable_name | Value                                       | 
  4. +---------------+---------------------------------------------+ 
  5. | datadir       | C:\ProgramData\MySQL\MySQL Server 5.7\Data\ | 
  6. +---------------+---------------------------------------------+ 
  7. 1 row in set, 1 warning (0.00 sec) 

我是 windows,就在這里了,進入這個目錄。

這些是啥先不管,盯著它看就好了,我們繼續。

第一步:創建數據庫

  1. mysql> create database flash; 

盯著剛剛的文件夾看,此時會多出一個文件夾

同時這個文件夾里會多出一個文件,叫:

  1. |-- flash 
  2.     |-- db.opt 
  3. |-- flash 
  4. |-- performance_schema 

看一眼它里面的內容,就知道他是干嘛的了。

  1. default-character-set=latin1 
  2. default-collation=latin1_swedish_ci 

default-character-set 是默認字符集,default-collation 是默認字符序。字符集大家都了解,就不展開了。字符序就是字符的排序和比較規則,一般以 _ci 結尾的表示大小寫不敏感,_cs 結尾的表示大小寫敏感,_bin 結尾的表示用編碼值進行比較。含義知道了,那我們重新設置它應該會有所變化,我們把這個數據庫設置為開發時常用的 utf8mb4 格式。

  1. ALTER SCHEMA `flash` DEFAULT CHARACTER SET utf8mb4; 

再看 db.opt 文件,內容已經發生了變化。

  1. default-character-set=utf8mb4 
  2. default-collation=utf8mb4_general_ci 

OK,那我們現在對這個文件有了個初步認識,創建一個新的數據庫時,首先會多出一個以數據庫名為名稱的文件夾,然后文件夾里面會多出一個描述數據庫配置的 db.opt 文件,我們繼續!

第二步:創建表

創建一張 student 表,三列,其中 id 是主鍵。

  1. CREATE TABLE `flash`.`student` ( 
  2.   `id` INT NOT NULL
  3.   `nameVARCHAR(10) NOT NULL
  4.   `age` INT NULL
  5.   PRIMARY KEY (`id`) 
  6. ENGINE = InnoDB 
  7. DEFAULT CHARACTER SET = utf8mb4; 

此時 flash 文件夾中,多出了兩個文件|-- flash

  1. |-- flash 
  2.     |-- db.opt     
  3.     |-- student.frm 
  4.     |-- student.ibd 
  5. |-- flash 
  6. |-- performance_schema 

為了嚴謹,我們先看下 db.opt 文件有沒有變化,發現沒有任何變化,說明創建表對這個 db.opt 配置信息文件,沒有影響。

再點開 student.frm,壞了,亂碼了。

說明這個文件不是文本文件,用二進制方式打開它。

我把一些關鍵的地方都標上了含義,那這個文件的作用大家就一目了然了,就是記錄表結構嘛,具體的格式可以看 frm 文件結構的官方文檔(寫得太復雜了...我反正是沒看):https://dev.mysql.com/doc/internals/en/frm-file-format.html

db.opt 記錄了數據庫信息,student.frm 記錄了表結構信息,那重頭戲自然就在那個 student.ibd 文件了,這里一定存著具體的數據呀,索引呀等信息吧。

打開它!

果不其然還是亂碼,那還是二進制打開它!截取了中間信息較為豐富的某部分。

發現一點也看不懂。

第三步:插入數據

我們加幾條數據看看。

  1. INSERT INTO `flash`.`student` (`id`, `name`, `age`) VALUES ('1''dibingfa2''2'); 
  2. INSERT INTO `flash`.`student` (`id`, `name`, `age`) VALUES ('2''dibingfa2''2'); 
  3. INSERT INTO `flash`.`student` (`id`, `name`, `age`) VALUES ('3''dibingfa3''2'); 
  4. INSERT INTO `flash`.`student` (`id`, `name`, `age`) VALUES ('4''dibingfa4''2'); 
  5. INSERT INTO `flash`.`student` (`id`, `name`, `age`) VALUES ('5''dibingfa5''2'); 
  6. INSERT INTO `flash`.`student` (`id`, `name`, `age`) VALUES ('6''dibingfa6''2'); 
  7. INSERT INTO `flash`.`student` (`id`, `name`, `age`) VALUES ('7''dibingfa7''2'); 

再二進制打開它!

發現有些東西我們可以看出點端倪了!猜測下這部分就是每一行的記錄信息吧。

我們插入了七條數據,我發現這些二進制串有一段可以分割成七對,我把他單獨拿出來,并且按行分割。

我們將第一行記錄拆解,第一行記錄的表數據是這樣的。

1 dibingfa 2

在 ibd 文件中是這樣的。

08 00 00 00 10 00 24 80 00 00 01 00 00 00 00 0A 07 A7 00 00 01 1B 01 10 64 69 62 69 6E 67 66 61 80 00 00 02

這串數據代表啥意思呢?由于本文只能參考官方文檔,我們看這里,即 Innodb 行格式。

https://dev.mysql.com/doc/refman/5.7/en/innodb-row-format.html

看這部分(我們的行格式是 DYNAMIC 類型,不過參考 COMPACT 類型描述也行,因為幾乎一樣,之后再說):

不要看這么一大長串就害怕,我們一點點來,別著急。

這個文檔,我可能沒資格評價,但我個人覺得寫的很爛,一大堆廢話也沒說明白格式是什么樣子,每個字節表示什么。不過也可能作用并非如此。

好的官方文檔應該是能把每個字節和每一位都解釋清楚的,無奈這個文檔不行,那我們就去找更接近一手資料的源碼。

我找到了源碼,還是很清晰的,注釋上就寫明了每一行記錄的磁盤數據格式,太好了,不用看代碼了。

再貼上剛剛的第一行記錄。

08 00 00 00 10 00 24 80 00 00 01 00 00 00 00 0A 07 A7 00 00 01 1B 01 10 64 69 62 69 6E 67 66 61 80 00 00 02

來一點點看,第一部分。

| length of the last non-null variable-length field of data ... ...|

...

| length of first variable-length field of data |

這部分是變長字段長度列表,就是依次記錄所有變長字段的長度,由于我們只有一個變長字段 varchar(10) 的 name,所以就是 08,我們存儲的 "dibingfa" 剛好是 8 個字節,對上了。那如果是多個,很顯然,就這樣存。

錯!應該是這樣存,也就是逆序存放,具體為啥后面說。

OK,這就是第一個字節 08 所表示的含義。

再往下。

| SQL-null flags (1 bit per nullable field), padded to full bytes |

第二個結構叫 NUll 值列表,用 1 位表示一個 NULL 值,要填充滿一個字節,那往下的一個字節是 00,一看我們的記錄中也確實沒有 NULL 值,對上了。

具體來說,同樣也是逆序存放的。

繼續。

| 4 bits used to delete mark a record, and mark a predefined

minimum record in alphabetical order |

| 4 bits giving the number of records owned by this record

(this term is explained in page0page.h) |

| 13 bits giving the order number of this record in the

heap of the index page |

| 3 bits record type: 000=conventional, 001=node pointer (inside B-tree),

010=infimum, 011=supremum, 1xx=reserved |

| two bytes giving a relative pointer to the next record in the page |

ORIGIN of the record

這五個字節很亂,放在一塊叫記錄頭信息,00 00 10 00 24,其表示刪除狀態,記錄類型,下一條記錄的相對位置等。

這一大坨先放一放,因為涉及到好多額外的知識。繼續往下看。

| first field of data |

...

| last field of data |

剩下全都是具體的列數據了,從第一列到最后一列。第一列是 ID 列,是 INT 類型的 1,占四個字節 80 00 00 01。開頭的 80 是因為,正數要以 1 開頭,這是 mysql 規定的,0x80 的二進制就是 1000 0000,所以這也對上了。第二列是 name 列,是 "dibingfa" 這樣一個 varchar 類型的字符串。可是與后面怎么也對應不上,這是咋回事呢?還記不記得,mysql 每行記錄會有幾個隱藏列,rowid,事務 ID,回滾指針?沒錯,就是他們。其中,因為有主鍵,所以 rowid 就不存在了,也可以說第一列要么是 mysql 為我們生成的 6 字節的 rowid,要么是用戶定義的主鍵或其他 Unique 鍵,優先以用戶定義的鍵為準。下面我們一塊看一下這五個列。(三個隱藏列,兩個我們定義的列)

主鍵 ID:80 00 00 01

事務 ID:00 00 00 00 0A 07

回滾指針:A7 00 00 01 1B 01 10

name 列(dibingfa):64 69 62 69 6E 67 66 61

age 列(2):80 00 00 02

其中 age 列同剛剛說的一樣,mysql 會為正數的前面,加一個 1,所以 age 為 2,在磁盤上存儲的就是 80 00 00 02。事務 ID 和回滾指針就涉及到事務、隔離級別和 MVCC 這一大坨八股文的知識點,這里不做展開。

行記錄格式整體結構

總結下,整個一行記錄的格式,叫做 mysql 的行記錄格式,ROW_FORMAT。這個 ROW_FORMAT 可以有不同的值,代表存儲這一行記錄的不同數據結構,其枚舉記錄在 remOtypes.h 文件中。

  1. /** Innodb row types are a subset of the MySQL global enum row_type. 
  2. They are made into their own enum so that switch statements can account 
  3. for each of them. */ 
  4. enum rec_format_enum { 
  5.  REC_FORMAT_REDUNDANT = 0, /*!< REDUNDANT row format */ 
  6.  REC_FORMAT_COMPACT = 1, /*!< COMPACT row format */ 
  7.  REC_FORMAT_COMPRESSED = 2, /*!< COMPRESSED row format */ 
  8.  REC_FORMAT_DYNAMIC = 3 /*!< DYNAMIC row format */ 
  9. }; 

我電腦上用的是 mysql 5.7,其默認的行記錄格式是 DYNAMIC,這個在源碼中也可以找到答案,在 ha_innodb.cc 中。

  1. static ulong innodb_default_row_format = DEFAULT_ROW_FORMAT_DYNAMIC; 

當然,可以用如下命令查詢你的行格式。

  1. show table status from flash like 'student'

所以我們今天以上講述的格式,都是 DYNAMIC 格式的結構,總結起來如下:

記錄源信息

  • 變長字段列表
  • NULL 值列表
  • 記錄頭信息

具體記錄的各列信息

  • rowid 或 主鍵(隱藏列)
  • 事務 ID(隱藏列)
  • 回滾指針(隱藏列)
  • 列 1
  • 列 2
  • ...
  • 列 n

剛剛那七條記錄,整體分析下,就如下圖。

然后多個行,一次緊密地排列,通過記錄頭中的下一條記錄的相對位置指針信息,可以快速找到下一條記錄的起始位置。再宏觀一點看,整個 ibd 文件,劃分了很多個塊,每個塊 16 KB,我們這幾行記錄信息,在第四個塊的某個區域內。

 

具體為什么是這個區域呢?因為這里是用戶記錄部分,前面還有文件頭、頁面頭等信息,共占用 120 個字節,咱們今天講的行記錄部分,就從第 121 個字節開始。慢慢的,我再和大家一起把其他部分搞清楚,那 mysql 這塊我們就從最原始的磁盤數據入手,將 data 文件夾下的所有文件都搞清楚了。

最原始的數據都搞清楚了,原理還擔心么?

再聊幾句

其實,不要被行記錄格式這種名詞嚇到,它只是個協議或規定罷了。就是 mysql 規定了一種將一行記錄存儲在磁盤中的格式,以便于 mysql 自己的程序可以根據這個結構認識這一行記錄。

所以這種協議,首先要滿足讓 mysql 知道全部想知道的信息,比如 mysql 現在能僅僅通過 ibd 文件里的這些二進制數,知道每個字段的值都是什么嗎?不能,因為它不知道表結構是什么樣子,也就沒法知道兩個字段值之間的界限在哪里。

所以不難想到,它一定利用了 frm 文件中存儲的表結構信息。

其次,要讓 mysql 在知道這些信息的同時,還能更方便地利用這個結構,占用更少的存儲空間,以及提升程序的便利性。

拿占用更少存儲空間這塊來講,NULL 值完全可以當做普通列,也存儲在后面,然后規定一個 NULL 值的二進制標識符即可。但 DYNAMIC 行記錄格式規定前面放一個 NULL 值列表的結構,并且僅僅用 1 位來表示一個 NULL 值記錄,這樣就極大節省了空間。再說便利性這塊,上面說了變長字段長度列表和 NULL 值列表,都是逆序存儲的,看似很別扭,其實就是為了程序的便利性,這里留給大家自己探索吧。

 

責任編輯:華軒 來源: 低并發編程
相關推薦

2022-11-30 17:13:05

MySQLDynamic存儲

2025-04-01 01:25:00

MySQLInnoDBMyISAM

2017-04-05 11:10:23

Javascript代碼前端

2020-07-15 09:40:37

代碼Python瀏覽記錄

2024-08-01 09:57:17

DELETE死鎖工具

2021-11-02 16:25:41

Python代碼技巧

2024-07-04 00:30:17

2016-12-02 08:53:18

Python一行代碼

2020-08-12 14:54:00

Python代碼開發

2019-08-30 12:02:23

數據工程師云廠商

2011-08-25 09:17:31

Java調用存儲過程返回一行或多行結果集

2021-11-05 06:57:50

架構工具代碼

2020-09-23 09:40:17

內存Python代碼

2018-12-18 10:23:45

Python代碼內存

2014-12-18 10:01:09

代碼

2025-09-12 13:24:36

2021-01-25 09:36:00

Python代碼文件

2009-07-23 09:20:25

Javascript代

2020-05-15 09:32:50

TB數據Elasticsear

2022-02-23 14:37:48

代碼Pythonbug
點贊
收藏

51CTO技術棧公眾號

浪潮色综合久久天堂| 99久久国产免费| 欧美人妖在线| 欧美日韩中文字幕一区| 中文字幕av日韩精品| 亚洲成人一二三区| 久久成人亚洲| 久久亚洲国产成人| 妖精视频一区二区| 免费亚洲电影| 一区二区三区视频在线观看 | 99热播精品免费| 中文字幕一区不卡| 国产女人水真多18毛片18精品| 三级视频在线观看| 国产精品麻豆久久| 日韩电影中文字幕一区| 天天爽夜夜爽一区二区三区| 成人影音在线| 国产欧美日韩三级| 国产精品国色综合久久| 中文字幕av资源| 91久久中文| www.欧美三级电影.com| 亚洲AV无码国产成人久久| 麻豆精品久久| 欧美最猛性xxxxx直播| 轻点好疼好大好爽视频| 成人欧美亚洲| 99国产精品99久久久久久| 国产欧美精品一区二区三区介绍| 日韩视频免费观看高清| 99久久综合| 国产一区二区三区免费视频| 国产女人18毛片水真多18| 欧美少妇激情| 在线视频中文字幕一区二区| 福利视频一区二区三区四区| av在线免费网址| 国产精品久久久久一区| 欧美高清一区二区| 香蕉视频黄色片| 丁香激情综合国产| 91免费视频网站| 一级黄色a毛片| 秋霞av亚洲一区二区三| 欧洲精品毛片网站| 日韩字幕在线观看| 欧美精品福利| 欧美日韩成人免费| 亚洲欧美小视频| 97人人精品| 最近2019年手机中文字幕 | 国产伦精品一区二区三区视频痴汉| 首页国产欧美日韩丝袜| 日本亚洲精品在线观看| 成人在线免费看视频| 国产欧美一区二区三区国产幕精品| 欧美日韩国产va另类| 成人免费毛片东京热| 久久精品国产免费观看| 日本50路肥熟bbw| 久久亚洲精精品中文字幕| 欧美日韩成人综合在线一区二区| 久久免费国产视频| 欧美精品xxxxx| 欧美精品国产| 久久久久国产精品免费网站| 日韩av电影网址| 一本色道久久综合亚洲精品高清 | 国产真实精品久久二三区| 成人黄色网免费| 国产sm主人调教女m视频| 国产美女久久久久| 国产一区二区免费在线观看| 欧美69xxxxx| 国产精品三级视频| 经典三级在线视频| 国产在线精彩视频| 在线观看亚洲精品| 一二三av在线| 欧美韩一区二区| 中文字幕九色91在线| 黑人巨大精品一区二区在线| 狠狠爱综合网| 欧日韩在线观看| 国产精品毛片久久久久久久av| 国产91丝袜在线播放0| 免费观看成人高| 欧美成人性生活视频| 一区二区三区精品视频| 欧美aⅴ在线观看| 成人国产精品| 欧美sm极限捆绑bd| 亚洲欧美va天堂人熟伦| 欧美国产激情| 国产福利成人在线| 国产福利小视频| 久久精品人人做人人综合 | 成人影视免费观看| 日韩一区电影| 97在线视频免费观看| 中文字幕一区2区3区| 成人一区二区三区视频在线观看| av网站一区二区三区| 欧美中文字幕视频| 亚洲视频久久久| 成人综合婷婷国产精品久久 | 欧美日韩精品中文字幕一区二区| 精品视频二区| 一区二区国产盗摄色噜噜| 国产男女无遮挡| 国产免费av国片精品草莓男男| 日韩大片b站免费观看直播| 国模少妇一区二区三区| 精品国产乱码久久久久久丨区2区 精品国产乱码久久久久久蜜柚 | 日本a级不卡| 韩国三级电影久久久久久| 在线观看黄色网| 久久综合九色综合久久久精品综合 | 亚洲色图视频网| 久草综合在线观看| 鲁大师精品99久久久| 欧美一级爽aaaaa大片| 日日夜夜操视频| 国产精品亚洲成人| 亚洲欧洲三级| 台湾佬中文娱乐久久久| 精品1区2区在线观看| 国产免费久久久久| 日韩国产欧美一区二区三区| 久久超碰亚洲| 999av小视频在线| 日韩一区二区三区四区五区六区| 超碰人人干人人| 久久久青草婷婷精品综合日韩| av一本久道久久波多野结衣| 高清全集视频免费在线| 精品视频在线看| 午夜时刻免费入口| 午夜在线视频观看日韩17c| 国产精品日韩欧美一区二区三区| 黄色视屏免费在线观看| 欧美丰满一区二区免费视频| 99久久99久久精品免费| 日日夜夜精品视频免费| 日韩欧美国产二区| 日本一区二区电影| 亚洲无av在线中文字幕| 日韩综合在线观看| 久久久久久久久久美女| 国产亚洲综合视频| 亚洲天堂日韩在线| 日本一区二区在线播放| 欧美成人免费| 日本韩国欧美在线| jizzjizz日本少妇| 国内国产精品久久| 成年人视频网站免费| 北条麻妃一区二区三区在线观看| 欧美激情网站在线观看| 日本高清视频www| 欧美日韩亚洲视频| 国产精品国产三级国产专业不 | 国产婷婷一区二区| 无码人妻丰满熟妇区毛片| 欧美一级淫片| 92国产精品视频| 97人人爽人人澡人人精品| 亚洲黄色在线看| 久久久久久无码午夜精品直播| 国产视频一区二区在线观看| 亚洲欧美视频二区| 中文精品久久| 精品一区二区三区视频日产| 欧美日韩五码| 久久精品99无色码中文字幕| 亚洲黄色片视频| 色综合一区二区三区| 精品熟妇无码av免费久久| 国内欧美视频一区二区| 欧美一级视频在线播放| 欧美热在线视频精品999| 国产日韩在线播放| a级片在线免费观看| 亚洲视频欧美视频| av中文字幕第一页| 欧美视频不卡中文| 91制片厂在线| 91丨九色丨黑人外教| 色国产在线视频| 在线成人av| 一本色道久久99精品综合| 动漫视频在线一区| 国产欧美中文字幕| 国产拍在线视频| 久久精品福利视频| 麻豆国产在线播放| 日韩精品在线一区| 中文字幕久久熟女蜜桃| 午夜私人影院久久久久| 91导航在线观看| 91在线视频观看| 午夜大片在线观看| 久久一区亚洲| 超碰成人免费在线| 2023国产精品久久久精品双| 快播亚洲色图| 亚洲国产欧美在线观看| 国产精品黄色av| jizzjizz中国精品麻豆| 在线视频日韩精品| 人成在线免费视频| 日韩精品一区二区三区视频 | 欧美成人精品1314www| jizz国产在线| 色综合色狠狠综合色| 欧美亚洲另类激情另类| 欧美理论电影| xxx成人少妇69| 国产一区二区三区福利| 日韩av网站导航| 高清国产mv在线观看| 欧美一区二区三区免费在线看| 无码人妻一区二区三区免费| 亚洲高清免费视频| 欧美三级 欧美一级| 成人欧美一区二区三区黑人麻豆| 日本一区二区视频在线播放| 91蝌蚪porny九色| 成人手机在线免费视频| 成人免费精品视频| 亚洲精品无码一区二区| 国产福利91精品一区二区三区| www.com久久久| 久久狠狠亚洲综合| 一区二区三区 日韩| 日韩高清不卡一区| 成人亚洲视频在线观看| 蘑菇福利视频一区播放| 成人在线免费观看av| 国产人成精品一区二区三| heyzo亚洲| 国产欧美一级| 116极品美女午夜一级| 亚洲制服av| 无码人妻丰满熟妇区五十路百度| 亚洲欧美卡通另类91av| 欧美私人情侣网站| 久久婷婷丁香| wwwwxxxx日韩| 三级在线观看一区二区| 蜜桃免费在线视频| 日韩影院免费视频| 中文字幕第17页| 国产乱子轮精品视频| 亚洲AV成人精品| 不卡av在线免费观看| 国产精品无码午夜福利| 国产欧美视频一区二区| 操她视频在线观看| 伊人色综合久久天天| 日本少妇激情视频| 91国偷自产一区二区开放时间 | 桥本有菜av在线| 欧美黄污视频| 久激情内射婷内射蜜桃| 国产午夜精品一区二区三区欧美| 六月丁香婷婷在线| 蜜臀av一区二区三区| 三级av免费看| va亚洲va日韩不卡在线观看| 亚欧洲乱码视频| 国产精品婷婷午夜在线观看| 免费中文字幕在线| 岛国av一区二区在线在线观看| 久久久久久无码精品大片| 欧美精选一区二区| 国产91久久久| 国产一区二区三区高清在线观看| 国产鲁鲁视频在线观看特色| 午夜精品久久久久久久99热| 777午夜精品电影免费看| 亚洲自拍欧美色图| 伊人成综合网伊人222| 综合视频在线观看| 亚洲国产一区二区精品专区| 国产视频一区二区三区在线播放| 国精产品一区一区三区mba视频| 国产伦精品一区二区三区精品| 国产色综合一区| 免费中文字幕视频| 欧美曰成人黄网| 欧美77777| 最近中文字幕2019免费| а√天堂8资源在线| 成人有码在线视频| 亚洲免费观看高清完整版在线观| 中文字幕免费高| 久久先锋影音| 国产女人18毛片水真多18| 日韩一区在线播放| 精品久久久久久久久久久国产字幕| 91精品国产一区二区三区香蕉 | 国产午夜亚洲精品理论片色戒| 老女人性淫交视频| 欧美日韩久久久| 日韩精品视频无播放器在线看 | 亚洲性猛交富婆| 亚洲国产日韩欧美在线动漫| 国产黄色小视频在线| 日本欧美精品在线| 999久久久精品一区二区| 亚洲最大色综合成人av| 老牛国产精品一区的观看方式| a级片在线观看视频| 亚洲啪啪综合av一区二区三区| 国产精品乱码一区二区视频| 亚洲成人精品av| 在线观看免费视频你懂的| 国产欧美日韩免费看aⅴ视频| 中文字幕亚洲影视| 欧美成人免费在线观看视频| 国产福利91精品一区二区三区| 免费91在线观看| 欧美午夜片在线看| 国产在线91| 琪琪亚洲精品午夜在线| 国产精品xxxav免费视频| 狠狠干视频网站| 国产综合色视频| 亚洲一级二级片| 欧美酷刑日本凌虐凌虐| аⅴ资源新版在线天堂| 国产成人精品免高潮在线观看| 亚洲激情77| 99热成人精品热久久66| 久久一留热品黄| www.com国产| 亚洲欧美日韩中文在线| 欧美xx视频| 日韩中文一区| 秋霞午夜av一区二区三区| 成人小视频免费看| 欧美日韩另类一区| 色大18成网站www在线观看| 国产日韩欧美自拍| 亚洲成人日韩| 亚洲区 欧美区| 亚洲午夜久久久久久久久电影网| 成人免费视频国产| 欧美激情精品在线| 女人抽搐喷水高潮国产精品| 日韩a∨精品日韩在线观看| 99re成人精品视频| 日本视频免费观看| 中文字幕av一区中文字幕天堂 | 麻豆成人久久精品二区三区小说| 亚洲高潮女人毛茸茸| 欧美区在线观看| 影音先锋在线播放| 好看的日韩精品视频在线| 午夜在线一区二区| 91av手机在线| 欧美一二三在线| 手机在线观看av网站| 日韩av不卡播放| 国产呦萝稀缺另类资源| 久久丫精品久久丫| 国产视频久久久久| 国产精品久久久久久妇女| 99精品一区二区三区的区别| 成人免费毛片片v| 手机看片久久久| 久久久精品久久| 激情亚洲另类图片区小说区| 蜜臀av午夜一区二区三区 | 欧美三级韩国三级日本三斤在线观看| 日韩精品免费在线视频| 精品国产黄a∨片高清在线| a级片一区二区| 久久久99免费| 精品国产亚洲一区二区麻豆| 日本久久91av| 牛夜精品久久久久久久99黑人| 欧美肉大捧一进一出免费视频| 欧美性受xxxx黑人xyx| 免费在线观看的电影网站| 日韩电影天堂视频一区二区| 国产精品18久久久久久久久久久久| 日韩精品手机在线| 久久精品视频在线观看| 西野翔中文久久精品字幕| 久久精品视频在线观看免费| 狠狠躁夜夜躁人人爽超碰91| 日本中文字幕伦在线观看| 久久精品magnetxturnbtih| 韩日欧美一区二区三区| 91精品国产高清一区二区三密臀| 久久久极品av|