成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識(shí)庫 > 深入理解MongoDB的復(fù)合索引

深入理解MongoDB的復(fù)合索引

熱門標(biāo)簽:怎么投訴地圖標(biāo)注 廣州長安公司怎樣申請(qǐng)400電話 蘋果汽車租賃店地圖標(biāo)注 杭州人工電銷機(jī)器人價(jià)格 濟(jì)南電銷機(jī)器人加盟公司 電銷機(jī)器人是什么軟件 老虎洗衣店地圖標(biāo)注 云南外呼系統(tǒng) 呼和浩特電銷外呼系統(tǒng)加盟

為什么需要索引?

當(dāng)你抱怨MongoDB集合查詢效率低的時(shí)候,可能你就需要考慮使用索引了,為了方便后續(xù)介紹,先科普下MongoDB里的索引機(jī)制(同樣適用于其他的數(shù)據(jù)庫比如mysql)。

mongo-9552:PRIMARYgt; db.person.find()
{ "_id" : ObjectId("571b5da31b0d530a03b3ce82"), "name" : "jack", "age" : 19 }
{ "_id" : ObjectId("571b5dae1b0d530a03b3ce83"), "name" : "rose", "age" : 20 }
{ "_id" : ObjectId("571b5db81b0d530a03b3ce84"), "name" : "jack", "age" : 18 }
{ "_id" : ObjectId("571b5dc21b0d530a03b3ce85"), "name" : "tony", "age" : 21 }
{ "_id" : ObjectId("571b5dc21b0d530a03b3ce86"), "name" : "adam", "age" : 18 }

當(dāng)你往某各個(gè)集合插入多個(gè)文檔后,每個(gè)文檔在經(jīng)過底層的存儲(chǔ)引擎持久化后,會(huì)有一個(gè)位置信息,通過這個(gè)位置信息,就能從存儲(chǔ)引擎里讀出該文檔。比如mmapv1引擎里,位置信息是『文件id + 文件內(nèi)offset 』, 在wiredtiger存儲(chǔ)引擎(一個(gè)KV存儲(chǔ)引擎)里,位置信息是wiredtiger在存儲(chǔ)文檔時(shí)生成的一個(gè)key,通過這個(gè)key能訪問到對(duì)應(yīng)的文檔;為方便介紹,統(tǒng)一用pos(position的縮寫)來代表位置信息。

什么是復(fù)合索引?

復(fù)合索引,即Compound Index,指的是將多個(gè)鍵組合到一起創(chuàng)建索引,這樣可以加速匹配多個(gè)鍵的查詢。不妨通過一個(gè)簡單的示例理解復(fù)合索引。

students集合如下:

db.students.find().pretty()
{
 "_id" : ObjectId("5aa7390ca5be7272a99b042a"),
 "name" : "zhang",
 "age" : "15"
}
{
 "_id" : ObjectId("5aa7393ba5be7272a99b042b"),
 "name" : "wang",
 "age" : "15"
}
{
 "_id" : ObjectId("5aa7393ba5be7272a99b042c"),
 "name" : "zhang",
 "age" : "14"
}

在name和age兩個(gè)鍵分別創(chuàng)建了索引(_id自帶索引):

db.students.getIndexes()
[
 {
 "v" : 1,
 "key" : {
 "name" : 1
 },
 "name" : "name_1",
 "ns" : "test.students"
 },
 {
 "v" : 1,
 "key" : {
 "age" : 1
 },
 "name" : "age_1",
 "ns" : "test.students"
 }
]

當(dāng)進(jìn)行多鍵查詢時(shí),可以通過explian()分析執(zhí)行情況(結(jié)果僅保留winningPlan):

db.students.find({name:"zhang",age:"14"}).explain()
"winningPlan":
{
 "stage": "FETCH",
 "filter":
 {
  "name":
  {
   "$eq": "zhang"
  }
 },
 "inputStage":
 {
  "stage": "IXSCAN",
  "keyPattern":
  {
   "age": 1
  },
  "indexName": "age_1",
  "isMultiKey": false,
  "isUnique": false,
  "isSparse": false,
  "isPartial": false,
  "indexVersion": 1,
  "direction": "forward",
  "indexBounds":
  {
   "age": [
    "[\"14\", \"14\"]"
   ]
  }
 }
}

由winningPlan可知,這個(gè)查詢依次分為IXSCAN和FETCH兩個(gè)階段。IXSCAN即索引掃描,使用的是age索引;FETCH即根據(jù)索引去查詢文檔,查詢的時(shí)候需要使用name進(jìn)行過濾。

為name和age創(chuàng)建復(fù)合索引:

db.students.createIndex({name:1,age:1})
db.students.getIndexes()
[
 {
 "v" : 1,
 "key" : {
 "name" : 1,
 "age" : 1
 },
 "name" : "name_1_age_1",
 "ns" : "test.students"
 }
]

有了復(fù)合索引之后,同一個(gè)查詢的執(zhí)行方式就不同了:

db.students.find({name:"zhang",age:"14"}).explain()
"winningPlan":
{
 "stage": "FETCH",
 "inputStage":
 {
  "stage": "IXSCAN",
  "keyPattern":
  {
   "name": 1,
   "age": 1
  },
  "indexName": "name_1_age_1",
  "isMultiKey": false,
  "isUnique": false,
  "isSparse": false,
  "isPartial": false,
  "indexVersion": 1,
  "direction": "forward",
  "indexBounds":
  {
   "name": [
    "[\"zhang\", \"zhang\"]"
   ],
   "age": [
    "[\"14\", \"14\"]"
   ]
  }
 }
}

由winningPlan可知,這個(gè)查詢的順序沒有變化,依次分為IXSCAN和FETCH兩個(gè)階段。但是,IXSCAN使用的是name與age的復(fù)合索引;FETCH即根據(jù)索引去查詢文檔,不需要過濾。

這個(gè)示例的數(shù)據(jù)量太小,并不能看出什么問題。但是實(shí)際上,當(dāng)數(shù)據(jù)量很大,IXSCAN返回的索引比較多時(shí),F(xiàn)ETCH時(shí)進(jìn)行過濾將非常耗時(shí)。接下來將介紹一個(gè)真實(shí)的案例。

定位MongoDB性能問題

隨著接收的錯(cuò)誤數(shù)據(jù)不斷增加,我們Fundebug已經(jīng)累計(jì)處理3.5億錯(cuò)誤事件,這給我們的服務(wù)不斷帶來性能方面的挑戰(zhàn),尤其對(duì)于MongoDB集群來說。

對(duì)于生產(chǎn)數(shù)據(jù)庫,配置profile,可以記錄MongoDB的性能數(shù)據(jù)。執(zhí)行以下命令,則所有超過1s的數(shù)據(jù)庫讀寫操作都會(huì)被記錄下來。

db.setProfilingLevel(1,1000)

查詢profile所記錄的數(shù)據(jù),會(huì)發(fā)現(xiàn)events集合的某個(gè)查詢非常慢:

db.system.profile.find().pretty()
{
 "op" : "command",
 "ns" : "fundebug.events",
 "command" : {
 "count" : "events",
 "query" : {
 "createAt" : {
 "$lt" : ISODate("2018-02-05T20:30:00.073Z")
 },
 "projectId" : ObjectId("58211791ea2640000c7a3fe6")
 }
 },
 "keyUpdates" : 0,
 "writeConflicts" : 0,
 "numYield" : 1414,
 "locks" : {
 "Global" : {
 "acquireCount" : {
 "r" : NumberLong(2830)
 }
 },
 "Database" : {
 "acquireCount" : {
 "r" : NumberLong(1415)
 }
 },
 "Collection" : {
 "acquireCount" : {
 "r" : NumberLong(1415)
 }
 }
 },
 "responseLength" : 62,
 "protocol" : "op_query",
 "millis" : 28521,
 "execStats" : {
 },
 "ts" : ISODate("2018-03-07T20:30:59.440Z"),
 "client" : "192.168.59.226",
 "allUsers" : [ ],
 "user" : ""
}

events集合中有數(shù)億個(gè)文檔,因此count操作比較慢也不算太意外。根據(jù)profile數(shù)據(jù),這個(gè)查詢耗時(shí)28.5s,時(shí)間長得有點(diǎn)離譜。另外,numYield高達(dá)1414,這應(yīng)該就是操作如此之慢的直接原因。根據(jù)MongoDB文檔,numYield的含義是這樣的:

The number of times the operation yielded to allow other operations to complete. Typically, operations yield when they need access to data that MongoDB has not yet fully read into memory. This allows other operations that have data in memory to complete while MongoDB reads in data for the yielding operation.

這就意味著大量時(shí)間消耗在讀取硬盤上,且讀了非常多次??梢酝茰y,應(yīng)該是索引的問題導(dǎo)致的。

不妨使用explian()來分析一下這個(gè)查詢(僅保留executionStats):

db.events.explain("executionStats").count({"projectId" : ObjectId("58211791ea2640000c7a3fe6"),createAt:{"$lt" : ISODate("2018-02-05T20:30:00.073Z")}})
"executionStats":
{
 "executionSuccess": true,
 "nReturned": 20853,
 "executionTimeMillis": 28055,
 "totalKeysExamined": 28338,
 "totalDocsExamined": 28338,
 "executionStages":
 {
  "stage": "FETCH",
  "filter":
  {
   "createAt":
   {
    "$lt": ISODate("2018-02-05T20:30:00.073Z")
   }
  },
  "nReturned": 20853,
  "executionTimeMillisEstimate": 27815,
  "works": 28339,
  "advanced": 20853,
  "needTime": 7485,
  "needYield": 0,
  "saveState": 1387,
  "restoreState": 1387,
  "isEOF": 1,
  "invalidates": 0,
  "docsExamined": 28338,
  "alreadyHasObj": 0,
  "inputStage":
  {
   "stage": "IXSCAN",
   "nReturned": 28338,
   "executionTimeMillisEstimate": 30,
   "works": 28339,
   "advanced": 28338,
   "needTime": 0,
   "needYield": 0,
   "saveState": 1387,
   "restoreState": 1387,
   "isEOF": 1,
   "invalidates": 0,
   "keyPattern":
   {
    "projectId": 1
   },
   "indexName": "projectId_1",
   "isMultiKey": false,
   "isUnique": false,
   "isSparse": false,
   "isPartial": false,
   "indexVersion": 1,
   "direction": "forward",
   "indexBounds":
   {
    "projectId": [
     "[ObjectId('58211791ea2640000c7a3fe6'), ObjectId('58211791ea2640000c7a3fe6')]"
    ]
   },
   "keysExamined": 28338,
   "dupsTested": 0,
   "dupsDropped": 0,
   "seenInvalidated": 0
  }
 }
}

可知,events集合并沒有為projectId與createAt建立復(fù)合索引,因此IXSCAN階段采用的是projectId索引,其nReturned為28338; FETCH階段需要根據(jù)createAt進(jìn)行過濾,其nReturned為20853,過濾掉了7485個(gè)文檔;另外,IXSCAN與FETCH階段的executionTimeMillisEstimate分別為30ms和27815ms,因此基本上所有時(shí)間都消耗在了FETCH階段,這應(yīng)該是讀取硬盤導(dǎo)致的。

創(chuàng)建復(fù)合索引

沒有為projectId和createAt創(chuàng)建復(fù)合索引是個(gè)尷尬的錯(cuò)誤,趕緊補(bǔ)救一下:

db.events.createIndex({projectId:1,createTime:-1},{background: true})

在生產(chǎn)環(huán)境構(gòu)建索引這種事最好是晚上做,這個(gè)命令一共花了大概7個(gè)小時(shí)吧!background設(shè)為true,指的是不要阻塞數(shù)據(jù)庫的其他操作,保證數(shù)據(jù)庫的可用性。但是,這個(gè)命令會(huì)一直占用著終端,這時(shí)不能使用CTRL + C,否則會(huì)終止索引構(gòu)建過程。

復(fù)合索引創(chuàng)建成果之后,前文的查詢就快了很多(僅保留executionStats):

db.javascriptevents.explain("executionStats").count({"projectId" : ObjectId("58211791ea2640000c7a3fe6"),createAt:{"$lt" : ISODate("2018-02-05T20:30:00.073Z")}})
"executionStats":
{
 "executionSuccess": true,
 "nReturned": 0,
 "executionTimeMillis": 47,
 "totalKeysExamined": 20854,
 "totalDocsExamined": 0,
 "executionStages":
 {
  "stage": "COUNT",
  "nReturned": 0,
  "executionTimeMillisEstimate": 50,
  "works": 20854,
  "advanced": 0,
  "needTime": 20853,
  "needYield": 0,
  "saveState": 162,
  "restoreState": 162,
  "isEOF": 1,
  "invalidates": 0,
  "nCounted": 20853,
  "nSkipped": 0,
  "inputStage":
  {
   "stage": "COUNT_SCAN",
   "nReturned": 20853,
   "executionTimeMillisEstimate": 50,
   "works": 20854,
   "advanced": 20853,
   "needTime": 0,
   "needYield": 0,
   "saveState": 162,
   "restoreState": 162,
   "isEOF": 1,
   "invalidates": 0,
   "keysExamined": 20854,
   "keyPattern":
   {
    "projectId": 1,
    "createAt": -1
   },
   "indexName": "projectId_1_createTime_-1",
   "isMultiKey": false,
   "isUnique": false,
   "isSparse": false,
   "isPartial": false,
   "indexVersion": 1
  }
 }
}

可知,count操作使用了projectId和createAt的復(fù)合索引,因此非常快,只花了46ms,性能提升了將近600倍!?。?duì)比使用復(fù)合索引前后的結(jié)果,發(fā)現(xiàn)totalDocsExamined從28338降到了0,表示使用復(fù)合索引之后不再需要去查詢文檔,只需要掃描索引就好了,這樣就不需要去訪問磁盤了,自然快了很多。

參考

  • MongoDB 復(fù)合索引
  • MongoDB文檔:Compound Indexes

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

您可能感興趣的文章:
  • MongoDB索引使用詳解
  • MongoDB中唯一索引(Unique)的那些事
  • MongoDB的基礎(chǔ)查詢和索引操作方法總結(jié)
  • MongoDB中創(chuàng)建索引需要注意的事項(xiàng)
  • MongoDB性能篇之創(chuàng)建索引,組合索引,唯一索引,刪除索引和explain執(zhí)行計(jì)劃
  • mongodb處理中文索引與查找字符串詳解
  • MongoDB查詢字段沒有創(chuàng)建索引導(dǎo)致的連接超時(shí)異常解案例分享
  • 關(guān)于MongoDB索引管理-索引的創(chuàng)建、查看、刪除操作詳解
  • MongoDB自動(dòng)刪除過期數(shù)據(jù)的方法(TTL索引)
  • 關(guān)于對(duì)MongoDB索引的一些簡單理解

標(biāo)簽:廈門 遼陽 雞西 玉林 無錫 興安盟 自貢 泰安

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《深入理解MongoDB的復(fù)合索引》,本文關(guān)鍵詞  深入,理解,MongoDB,的,復(fù)合,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《深入理解MongoDB的復(fù)合索引》相關(guān)的同類信息!
  • 本頁收集關(guān)于深入理解MongoDB的復(fù)合索引的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    国产精品原创巨作av| 亚洲精品中文综合第一页| 欧美午夜电影在线观看| 亚洲无亚洲人成网站77777| 久久亚洲国产成人精品无码区| 欧美性xxxx极品hd欧美风情| 日本视频在线观看一区二区三区| 手机在线观看国产精品| 欧美aaaaa性bbbbb小妇| 一区二区高清视频在线观看| 亚洲国产精品大全| 欧美日韩亚洲色图| 97超碰人人看人人| 国产一区二区三区四区二区| 激情在线视频| 亚洲直播在线一区| av午夜一区麻豆| 99国产成人精品| 欧美日韩免费观看一区三区| 亚洲乱码中文字幕综合| 在免费jizzjizz在线视频| 国语精品视频| 国产精品日韩一区| 亚洲小说区图片区| 日韩欧美精品网址| 亚洲精品v亚洲精品v日韩精品| 天堂在线观看视频观看www| 福利片免费在线观看| 国产乱妇无码大片在线观看| 夜夜爽av福利精品导航| 欧美高清第一页| 中文一区一区三区免费在线观看| h精品动漫在线观看| 欧洲一区二区三区在线| 亚洲熟妇无码av在线播放| 操操操综合网| 欧洲亚洲国产日韩| 一级久久久久久久| 羞羞答答国产精品www一本| 91丝袜美腿高跟国产极品老师| 911亚洲精品| 亚洲一区亚洲二区| 成人午夜免费视频| 国产精品欧美三级在线观看| 浮力影院网站午夜| 欧美日韩一二三区| 欧美电视剧在线看免费| 亚洲欧美综合另类在线卡通| 一区二区三区免费网站| 日韩av黄色网址| 欧美日韩在线播放视频| 欧美精品一区二区三区四区五区| 日本免费一区视频| 欧美日韩在线播放三区四区| 国产福利精品导航| 91精品国产乱码久久久| 精品国产精品| 成人高潮aa毛片免费| 蜜桃传媒一区二区亚洲| 国产不卡人人| 91在线国产剧情| 717影院理论午夜伦不卡久久| 少妇高潮一69aⅹ| 天堂资源最新在线| 黄色动漫在线免费观看| 国产成+人+综合+亚洲欧美丁香花| 一本色道久久亚洲综合精品蜜桃| 亚洲不卡中文字幕无码| 免费高清一区二区三区| 四虎精品在线观看| 国产a一区二区| 欧美极品少妇xxxxx| 2021国产精品久久精品| 亚洲精品视频在线免费| 久久夜色精品亚洲| 成人福利网站在线观看11| 成人在线激情视频| 99久久婷婷国产综合精品| 豆花视频一区| √天堂8资源中文在线| 91精品国产777在线观看| 国产精品网站在线播放| 国产精品自产拍高潮在线观看| 精品电影在线观看| 亚洲第一视频在线观看| 成年人视频免费看| 亚洲五月综合| 欧美日韩123| 成人免费视频国产在线观看| 国产中文字幕乱人伦在线观看| 高清shemale亚洲人妖| 亚州国产精品视频| 97碰在线观看| 5g影院5g电影天天爽快| 欧美日韩精品久久| 在线观看免费91| 高清欧美性猛交xxxx| 亚洲伦理在线| 中文在线视频| 91一区二区在线观看| 丰满人妻一区二区三区四区53| 亚洲一区二区三区精品中文字幕| 日韩中文在线字幕| 日本欧美一二三区| 成人免费福利视频| 18以下岁禁止1000部免费| 久久成人资源| www.久久热| 欧美另类z0zx974| 亚洲视频777| 亚洲国产精品久久久久秋霞蜜臀| 麻豆视频在线| 国产亚洲精品久久久| 日本少妇精品亚洲第一区| 在线看国产一区二区| 91在线品视觉盛宴免费| 2021久久国产精品不只是精品| 黄色一级片在线观看| 这里有精品可以观看| 欧美成ee人免费视频| 国产成人免费在线| 日韩午夜电影在线观看| 欧美精品一区二区久久婷婷| 电影一区二区三区久久免费观看| 永久免费毛片在线观看| 亚洲精品国产suv一区| 91麻豆精品秘密入口| 麻豆传媒在线免费| 一不卡在线视频| 玖草视频在线观看| 人与动性xxxxx免费视频| 欧美专区第二页| 偷拍一区二区三区四区| 麻豆91在线播放免费| 一区在线观看免费| 一区二区三区精| 5566成人精品视频免费| 成人免费xxxxx在线观看| 亚洲香蕉在线视频| 国产激情小视频在线| 日本10禁啪啪无遮挡免费一区二区| 日日夜夜天天操| 一级片免费在线观看视频| 高清性色生活片在线观看| 91玉足脚交白嫩脚丫在线播放| 亚洲精品喷潮一区二区三区| 欧美视频免费看欧美视频| 三级在线观看网站| 激情成人亚洲| 加勒比海盗1在线观看免费国语版| 超碰97久久| 18被视频免费观看视频| 中文字幕免费在线观看视频| 国产精品麻豆入口| www欧美xxxx| 天堂а√在线中文在线新版| 无码人妻av免费一区二区三区| 国产真实生活伦对白| 精品二区视频| 日韩免费电影在线观看| 国产日韩专区在线| 97高清免费视频| 国内久久久精品| 亚洲国产一区二区精品专区| 国产肥白大熟妇bbbb视频| 免费在线观看的av网站| 国产美女作爱全过程免费视频| 精品在线视频一区| 一区二区日韩电影| 2022成人影院| 美女免费视频一区二区| 亚洲区第一页| 国产精品电影一区二区三区| 擼擼色在线看观看免费| 自拍日韩亚洲一区在线| 欧美日韩另类在线| 青青久久av北条麻妃海外网| 国产视频97| 一个人看的www在线免费观看| 精品中文字幕一区二区三区四区| 免费观看精品视频| xx视频.9999.com| aaa级黄色片| 国产一区二区精品在线观看| 99久久国产综合精品色伊| 一本色道久久加勒比88综合| 精品国一区二区三区| 国产91精品高潮白浆喷水| 日韩中文字幕免费| 2021狠狠干| 欧美另类综合| 国产免费观看久久| 国产美女在线精品免费观看| 一本一道久久a久久精品| 韩国福利视频一区| 亚洲理论片在线观看| 1024在线看片你懂得| 九九热免费精品视频| 精品日韩电影| 亚洲第五色综合网| 精品亚洲精品| 国产成人av免费观看| 亚洲999一在线观看www| 欧美日韩一区二区区别是什么| 日韩五码在线| 婷婷五月色综合| 不用播放器成人网| 成人在线免费播放视频| 性久久久久久久久| 欧美人体视频xxxxx| 国产乱子伦一区二区三区国色天香| 精品久久久久久久久久久久久久久久久久| 午夜啪啪免费视频| 香蕉伊大人中文在线观看| 亚洲一卡二卡在线观看| 日韩1区2区日韩1区2区| 91超碰这里只有精品国产| 色综合久久悠悠| 日韩免费观看高清完整版在线观看| 人人妻人人澡人人爽欧美一区双| 黄页免费观看| 亚洲av成人无码久久精品老人| 亚洲欧洲一区二区福利| 福利精品一区| 三级精品视频久久久久| 麻豆专区一区二区三区四区五区| 亚洲图片在区色| 午夜视频在线免费观看| 欧美aⅴ99久久黑人专区| 精品国产伦一区二区三区观看说明| 一区二区三区日韩精品视频| 亚洲女同av| 亚洲女同性videos| 国产精品v亚洲精品v日韩精品| 性网站在线免费观看| 69国产成人精品视频软件| 五月天丁香久久| 欧美在线网站| 免费黄色在线网址| 日韩一区和二区| 蜜桃精品wwwmitaows| 91影院未满十八岁禁止入内| 日韩免费三级| 久久免费精彩视频| 日本黄色小说视频| 久久久久久香蕉| 亚洲精品国产精品国自产网站按摩| 成人免费看片载| 免费av不卡在线| 久久久久久久久久久综合| 天堂网.www在线资源| 91国产美女视频| 精品一二三四区| 天天躁日日躁狠狠躁av麻豆男男| 欧美一级黄视频| 99精品视频免费看| 99精品国产高清在线观看| 精品亚洲第一| 亚洲国产精品一区在线观看不卡| 成人动漫中文字幕| 精品国产一区二区三区久久久蜜臀| 无码aⅴ精品一区二区三区| 中文字幕 日本| 日韩欧美成人一区二区| 北条麻妃在线一区二区免费播放| 最近高清中文在线字幕在线观看| 精品3atv在线视频| 欧美电影免费观看高清| porn亚洲| 男女18免费网站视频| 狠狠色狠狠色综合| 欧美一区 二区| 日韩一区二区三区四区| 亚洲成aⅴ人片久久青草影院| 国产精品久久久久久久免费| 午夜免费福利网站| 日韩免费不卡视频| 麻豆视频免费在线播放| 欧美激情在线一区二区三区| 国产精品第一国产精品| 日韩国产在线观看一区| 国产女人水真多18毛片18精品| 久久久久国色av免费观看性色| 国产片一区二区三区| 亚洲欧洲美洲国产香蕉| 国产男小鲜肉同志免费| 日日草天天干| 2022国产精品视频| 成人免费网站在线看| 欧美激情在线播放| 亚洲不卡在线观看| 中文字幕v亚洲ⅴv天堂| 99精品视频在线免费观看| av免费在线免费观看| 亚洲男人天堂古典| 亚洲国产成人一区二区| 国产日韩一区在线| 国产又粗又猛又爽| 色中色在线视频| 神马午夜电影一区二区三区在线观看| 羞羞色午夜精品一区二区三区| 国产乱人伦精品一区二区三区| 欧美老女人性视频| 91精品一区二区三区蜜桃| 精品一区二区电影| 中文字幕在线看视频国产欧美| 毛片一级免费一级| cao在线视频| 九色综合狠狠综合久久| 欧美性受xxxx黑人猛交88| av一区二区在线看| 国产亚洲一本大道中文在线| 宅男噜噜99国产精品观看免费| 看片的网站亚洲| 国产精品美女久久久| 亚洲乱码一区二区三区三上悠亚| 亚洲成人激情自拍| 日本不良网站在线观看| 久久毛片亚洲| 亚洲国产精品va在线观看黑人| 欧美裸体男粗大视频在线观看| 国内自拍视频在线看免费观看| 制服丝袜中文字幕在线观看| 国产精品美女免费看| 国内免费精品视频| 91深夜福利视频| 99色精品视频| 日韩在线亚洲|