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

ARTICLE DETAIL

資訊詳情

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

MongoDB 實(shí)戰(zhàn):文檔模型、索引、執(zhí)行計(jì)劃與聚合管道

MongoDB 實(shí)戰(zhàn):文檔模型、索引、執(zhí)行計(jì)劃與聚合管道 很多人第一次接觸 MongoDB都是在項(xiàng)目里被字段老變、表結(jié)構(gòu)改不動(dòng)這件事逼過(guò)來(lái)的。我最開(kāi)始也一樣拿著關(guān)系型數(shù)據(jù)庫(kù)的思維去用建了一堆看起來(lái)像表的集合寫出來(lái)的查詢?nèi)頀呙钄?shù)據(jù)量一上萬(wàn)就開(kāi)始卡。后來(lái)花了些時(shí)間把文檔模型、索引和執(zhí)行計(jì)劃這幾塊重新捋了一遍才發(fā)現(xiàn)這東西上手門檻確實(shí)低但想用得舒服完全是另一回事。這篇就按我自己帶人、自己踩坑的順序把 MongoDB 從裝好到能寫出一條像樣的查詢這條鏈路完整走一遍重點(diǎn)講清楚每個(gè)操作為什么這么寫而不是把官方文檔翻譯一遍。適合剛接手一個(gè) MongoDB 項(xiàng)目、或者準(zhǔn)備在下一個(gè)需求里引入它的朋友不管你是寫后端還是做數(shù)據(jù)分析跟著走一遍基本能跑通。1. 先把文檔模型這件事想明白別拿它當(dāng)關(guān)系庫(kù)用我在代碼評(píng)審里見(jiàn)過(guò)太多次這種情況一個(gè)集合里全是{_id, type, ...}這種結(jié)構(gòu)然后靠type字段去區(qū)分不同實(shí)體查的時(shí)候要寫一堆if type order。這就是典型的把關(guān)系型思維硬搬過(guò)來(lái)。文檔模型的核心價(jià)值在于把一次業(yè)務(wù)讀取需要的數(shù)據(jù)放在一起而不是把數(shù)據(jù)拆得越細(xì)越規(guī)范。1.1 一條文檔長(zhǎng)什么樣和一行記錄差在哪里關(guān)系庫(kù)里一行記錄的所有字段都是扁平標(biāo)量復(fù)雜結(jié)構(gòu)必須拆表。MongoDB 的一條文檔本質(zhì)是一個(gè) BSON 對(duì)象字段值可以是字符串、數(shù)字、日期也可以直接是嵌套對(duì)象或者數(shù)組。舉個(gè)實(shí)際點(diǎn)的例子一個(gè)商品在關(guān)系庫(kù)里大概要拆成商品表、SKU 表、屬性表三張而在文檔模型里完全可以是一條{ _id: ObjectId(...), title: 某款機(jī)械鍵盤, price: 399, tags: [辦公, 無(wú)線, 靜音], specs: { switchType: 紅軸, layout: 87鍵, weight: 780 }, skus: [ { code: K87-W, color: 白, stock: 120 }, { code: K87-B, color: 黑, stock: 45 } ], createdAt: ISODate(2024-03-11T08:20:00Z) }讀一個(gè)商品詳情一條findOne就夠了不需要三次 join。這就是文檔模型最直接的收益讀路徑變短。代價(jià)是寫入時(shí)可能要更新整個(gè)文檔以及同一份數(shù)據(jù)在不同文檔里可能出現(xiàn)冗余。這個(gè)取舍后面第 6 節(jié)會(huì)展開(kāi)講。這里有個(gè)細(xì)節(jié)容易被忽略_id默認(rèn)是ObjectId它不是一個(gè)隨機(jī)串結(jié)構(gòu)上包含 4 字節(jié)時(shí)間戳、5 字節(jié)隨機(jī)值、3 字節(jié)自增計(jì)數(shù)器。這意味著_id本身就帶創(chuàng)建時(shí)間信息你甚至可以用ObjectId(...).getTimestamp()反推文檔的創(chuàng)建時(shí)間。我在做數(shù)據(jù)排查的時(shí)候經(jīng)常用這招比額外加一個(gè)createdAt字段還快。1.2 什么場(chǎng)景適合什么場(chǎng)景別硬上不是所有項(xiàng)目都該上 MongoDB。我自己的判斷標(biāo)準(zhǔn)大概是這樣場(chǎng)景特征更適合的選擇原因字段結(jié)構(gòu)頻繁變化每個(gè)租戶字段還不一樣文檔模型不需要頻繁 DDL應(yīng)用層控制結(jié)構(gòu)讀多寫少一次讀取要拼好幾張表文檔模型內(nèi)嵌減少 join讀放大明顯強(qiáng)事務(wù)、多表強(qiáng)一致性轉(zhuǎn)賬類關(guān)系型跨文檔事務(wù)開(kāi)銷大邏輯復(fù)雜大量多對(duì)多、需要靈活任意維度關(guān)聯(lián)查詢關(guān)系型文檔模型對(duì)多對(duì)多不友好日志、埋點(diǎn)、內(nèi)容、商品、配置文檔模型結(jié)構(gòu)松、寫入吞吐要求高報(bào)表類復(fù)雜聚合、窗口函數(shù)關(guān)系型或?qū)S梅治鰩?kù)聚合管道能力有限復(fù)雜 SQL 更順手一句話總結(jié)讀模式相對(duì)固定、寫模式靈活多變的結(jié)構(gòu)適合文檔模型。如果你的查詢需求是任意維度隨便組合那關(guān)系庫(kù)的優(yōu)化器還是更靠譜。2. 環(huán)境從零跑起來(lái)安裝、啟動(dòng)到第一次握手裝 MongoDB 這件事本身不難難的是新手容易在幾個(gè)環(huán)節(jié)卡住服務(wù)沒(méi)起來(lái)、端口被占、認(rèn)證沒(méi)配好、連上了卻沒(méi)權(quán)限。我把這條鏈路拆細(xì)一點(diǎn)。2.1 本地起一個(gè)實(shí)例的幾種方式最省事的是容器方式一條命令搞定數(shù)據(jù)掛到本地目錄刪了容器數(shù)據(jù)還在docker run -d \ --name mongo-dev \ -p 27017:27017 \ -v /data/mongo:/data/db \ -e MONGO_INITDB_ROOT_USERNAMEadmin \ -e MONGO_INITDB_ROOT_PASSWORDdevpass123 \ mongo:7.0注意MONGO_INITDB_ROOT_USERNAME這個(gè)環(huán)境變量只有在數(shù)據(jù)目錄為空、首次初始化時(shí)才生效。我見(jiàn)過(guò)有人把數(shù)據(jù)目錄掛到已有數(shù)據(jù)的路徑然后發(fā)現(xiàn)環(huán)境變量里的賬號(hào)密碼根本沒(méi)建上連都連不進(jìn)去排查半天。要么用全新的空目錄要么手動(dòng)進(jìn)容器建用戶。如果用包管理器安裝Linux 上裝完之后默認(rèn)是mongod服務(wù)用systemctl start mongod啟動(dòng)配置文件一般在/etc/mongod.conf默認(rèn)只監(jiān)聽(tīng)127.0.0.1。這個(gè)默認(rèn)值是有意為之的不要在沒(méi)配認(rèn)證的情況下把bindIp改成0.0.0.0我在一些內(nèi)網(wǎng)環(huán)境里見(jiàn)過(guò)裸奔的實(shí)例任何人都能連上去刪庫(kù)。配置文件里幾個(gè)值得改的點(diǎn)net: port: 27017 bindIp: 127.0.0.1 storage: dbPath: /var/lib/mongo wiredTiger: engineConfig: cacheSizeGB: 2cacheSizeGB默認(rèn)會(huì)吃掉可用內(nèi)存的一半減 1G。在容器里如果沒(méi)設(shè)內(nèi)存限制它可能按宿主機(jī)的內(nèi)存來(lái)算結(jié)果被 OOM kill。容器部署時(shí)建議顯式設(shè)置這個(gè)值一般給容器內(nèi)存的 50% 到 60%。2.2 連接串里的每個(gè)參數(shù)都值得看一遍連接串看著簡(jiǎn)單但每個(gè)參數(shù)背后都有含義mongodb://admin:devpass123localhost:27017/appdb?authSourceadminmaxPoolSize50retryWritestrueauthSourceadmin認(rèn)證庫(kù)。用戶建在哪個(gè)庫(kù)這里就寫哪個(gè)。建在admin庫(kù)卻連業(yè)務(wù)庫(kù)時(shí)忘了加這個(gè)參數(shù)報(bào)的錯(cuò)是Authentication failed很容易誤判成密碼錯(cuò)。maxPoolSize連接池上限默認(rèn) 100。小服務(wù)給 20 到 50 就夠給太大會(huì)把數(shù)據(jù)庫(kù)連接數(shù)打滿。retryWritestrue遇到網(wǎng)絡(luò)抖動(dòng)或主節(jié)點(diǎn)切換時(shí)自動(dòng)重試一次。副本集環(huán)境建議開(kāi)著單機(jī)開(kāi)了也無(wú)害。要注意retryWrites不是萬(wàn)能的它只對(duì)冪等或可重試的寫操作生效而且是在驅(qū)動(dòng)層重試如果第一次寫其實(shí)成功了只是響應(yīng)丟了重試可能造成重復(fù)寫入。所以業(yè)務(wù)上需要唯一性的字段索引該建還是要建。2.3 用 mongosh 還是圖形工具mongosh是官方現(xiàn)在的命令行客戶端語(yǔ)法上是 JS 環(huán)境可以寫循環(huán)、可以定義變量調(diào)試的時(shí)候非常順手。圖形工具比如一些可視化客戶端適合看數(shù)據(jù)和臨時(shí)改兩條記錄但復(fù)雜查詢還是命令行快。一個(gè)我常用的技巧是在 mongosh 里定義幾個(gè)快捷函數(shù)// 查看當(dāng)前庫(kù)所有集合及大小 db.getCollectionNames().forEach(function(c) { var s db.getCollection(c).stats(); print(c \t s.count \t (s.size / 1024 / 1024).toFixed(2) MB); });排查哪個(gè)集合在瘋漲的時(shí)候這行比翻監(jiān)控面板快多了。3. 把增刪改查寫成肌肉記憶操作符才是重點(diǎn)CRUD 誰(shuí)都會(huì)寫但寫得好不好差別全在對(duì)操作符的理解上。我見(jiàn)過(guò)太多人把讀出來(lái)、在應(yīng)用里改、再整體寫回去當(dāng)成標(biāo)準(zhǔn)做法結(jié)果并發(fā)一上來(lái)就丟更新。3.1 插入單條、批量與順序的取舍db.orders.insertOne({ orderNo: A1001, amount: 199, status: paid }); db.orders.insertMany([ { orderNo: A1002, amount: 88, status: paid }, { orderNo: A1003, amount: 320, status: unpaid } ], { ordered: false });ordered: false這個(gè)參數(shù)很關(guān)鍵。默認(rèn)是有序插入一旦中間某條失敗比如唯一索引沖突后面的全部不執(zhí)行。設(shè)為false之后失敗的跳過(guò)成功的照常寫入返回值里會(huì)帶上失敗的索引列表。批量導(dǎo)入數(shù)據(jù)的場(chǎng)景基本都應(yīng)該關(guān)掉有序否則一條臟數(shù)據(jù)能讓整批任務(wù)中斷。但要注意ordered: false下驅(qū)動(dòng)可能會(huì)并發(fā)寫多個(gè)分片或節(jié)點(diǎn)失敗的那條不會(huì)自動(dòng)重試你的代碼需要自己處理返回值里的writeErrors。3.2 查詢條件、投影和游標(biāo)db.orders.find( { status: paid, amount: { $gte: 100 } }, { orderNo: 1, amount: 1, _id: 0 } ).sort({ amount: -1 }).limit(20);投影里_id: 0是為了省字節(jié)。數(shù)據(jù)量大、字段多的時(shí)候只取需要的字段能讓網(wǎng)絡(luò)傳輸量降一個(gè)數(shù)量級(jí)。我做過(guò)一個(gè)對(duì)比一個(gè)文檔平均 4KB只投影出 3 個(gè)字段之后只有 200 字節(jié)左右20 倍差距。游標(biāo)這塊有個(gè)新手常犯的問(wèn)題遍歷大數(shù)據(jù)集時(shí)直接find()然后toArray()內(nèi)存直接爆。正確做法是用游標(biāo)迭代const cursor db.orders.find({ status: paid }).batchSize(500); while (cursor.hasNext()) { /* 逐條處理 */ }batchSize控制每次從服務(wù)端拉多少條默認(rèn) 101 條第一批發(fā)完后就按 16MB 限制取。對(duì)于導(dǎo)出類任務(wù)把它設(shè)成幾百到一千比較均衡。3.3 更新操作符才是核心這是我見(jiàn)過(guò)最多問(wèn)題的地方。下面這種寫法在并發(fā)下必丟更新// 錯(cuò)誤示范讀-改-寫 const doc db.accounts.findOne({ _id: 1 }); db.accounts.updateOne({ _id: 1 }, { $set: { balance: doc.balance - 100 } });兩個(gè)人同時(shí)讀到balance 500各自減 100 寫回最后是 400 而不是 300。正確姿勢(shì)是用$inc讓數(shù)據(jù)庫(kù)做原子運(yùn)算db.accounts.updateOne( { _id: 1, balance: { $gte: 100 } }, { $inc: { balance: -100 }, $set: { updatedAt: new Date() } } );條件里帶上balance: { $gte: 100 }是樂(lè)觀鎖的思路余額不足時(shí)matchedCount為 0業(yè)務(wù)層就知道扣款失敗。這樣既保證了原子性又避免了超扣。幾個(gè)高頻操作符的語(yǔ)義要分清操作符作用注意點(diǎn)$set設(shè)置字段值字段不存在會(huì)創(chuàng)建$unset刪除字段值是占位符寫什么都行$inc數(shù)值增減字段必須存在或是數(shù)字否則報(bào)錯(cuò)$push數(shù)組末尾追加可配合$each批量加$addToSet數(shù)組去重追加元素多時(shí)性能下降明顯$pull按條件移除數(shù)組元素支持條件表達(dá)式$setOnInsert僅插入時(shí)設(shè)置必須配合upsert: trueupsert: true是個(gè)好幫手先查后插的兩步操作可以合并成一步db.users.updateOne( { openId: u_123 }, { $set: { nickname: 老王 }, $setOnInsert: { createdAt: new Date() } }, { upsert: true } );注意$set和$setOnInsert不能作用于同一個(gè)字段否則會(huì)報(bào)沖突。3.4 刪除要謹(jǐn)慎軟刪除更常見(jiàn)物理刪除deleteMany在線上環(huán)境我建議慎用尤其是沒(méi)有備份的情況下。大多數(shù)業(yè)務(wù)場(chǎng)景用軟刪除更穩(wěn)加一個(gè)deletedAt字段查詢時(shí)帶上deletedAt: null。如果確實(shí)要物理刪除先查一遍確認(rèn)范圍// 先看會(huì)刪掉多少條 db.logs.countDocuments({ createdAt: { $lt: new Date(2024-01-01) } }); // 確認(rèn)無(wú)誤再刪分批刪避免長(zhǎng)鎖 db.logs.deleteMany({ createdAt: { $lt: new Date(2024-01-01) } });單次刪幾十萬(wàn)條會(huì)長(zhǎng)時(shí)間占用寫鎖更好的方式是分批每次刪 5000 條循環(huán)執(zhí)行中間 sleep 一小會(huì)。4. 索引和執(zhí)行計(jì)劃數(shù)據(jù)漲到百萬(wàn)級(jí)之后的分水嶺前面那些操作在幾千條數(shù)據(jù)的時(shí)候都飛快任何寫法都能跑。等到集合上百萬(wàn)差別就出現(xiàn)了有的查詢 5 毫秒有的一分半。分水嶺就是索引。4.1 復(fù)合索引的最左前綴原則db.orders.createIndex({ status: 1, createdAt: -1 });這條復(fù)合索引能支持的查詢是status單獨(dú)查、status createdAt組合查。但單獨(dú)用createdAt查走不了因?yàn)閟tatus在最左邊跳不過(guò)去。這就是最左前綴原則和關(guān)系庫(kù)一樣。字段順序怎么定我一般按 ESR 原則Equality等值在前Sort排序在中Range范圍在后。比如查已支付訂單、按時(shí)間倒序、金額大于 100db.orders.find({ status: paid, amount: { $gt: 100 } }).sort({ createdAt: -1 });理論上最理想的是{ status: 1, createdAt: -1, amount: 1 }。為什么把范圍條件放最后因?yàn)榉秶鷹l件一旦匹配后面的字段就無(wú)法再用索引做精確跳轉(zhuǎn)了。當(dāng)然實(shí)際場(chǎng)景里排序字段和范圍字段的順序還要結(jié)合數(shù)據(jù)分布測(cè)試不要迷信理論。4.2 用 explain 看它到底走了哪條路索引建完不代表用上了。驗(yàn)證方式是explaindb.orders.find({ status: paid }).sort({ createdAt: -1 }) .explain(executionStats);重點(diǎn)看幾個(gè)字段winningPlan.stageCOLLSCAN表示全表掃描IXSCAN表示走了索引FETCH表示還要回表取文檔。totalDocsExamined掃描文檔數(shù)。如果遠(yuǎn)大于返回條數(shù)索引效果很差。totalKeysExamined掃描索引鍵數(shù)。executionTimeMillis執(zhí)行耗時(shí)。一個(gè)健康的查詢totalDocsExamined應(yīng)該接近返回條數(shù)。如果看到nReturned: 20但totalDocsExamined: 200000說(shuō)明索引方向不對(duì)或者查詢條件本身不具選擇性。4.3 幾個(gè)讓索引失效的典型寫法寫法問(wèn)題改法{ name: /abc/ }前置通配無(wú)法走索引改成前綴匹配/^abc/或上全文索引{ age: { $ne: 30 } }不等條件選擇性差盡量用等值 范圍組合查詢字段做了運(yùn)算索引鍵無(wú)法參與匹配把運(yùn)算挪到應(yīng)用層或建表達(dá)式索引數(shù)組字段上建普通索引后按元素?cái)?shù)查索引覆蓋不到需要$size的場(chǎng)景考慮冗余計(jì)數(shù)字段索引字段類型混用字符串和數(shù)字類型不匹配不命中統(tǒng)一寫入類型必要時(shí)加校驗(yàn)還有一個(gè)坑是索引建太多。每加一個(gè)索引寫入時(shí)就要多維護(hù)一棵 B 樹(shù)。我見(jiàn)過(guò)一個(gè)集合上建了十幾個(gè)索引寫入 QPS 直接腰斬。原則是先看慢查詢?nèi)罩菊页稣嬲哳l的查詢模式再針對(duì)性建索引定期用$indexStats檢查索引使用次數(shù)長(zhǎng)期為 0 的果斷刪掉。db.orders.aggregate([{ $indexStats: {} }]);這個(gè)命令會(huì)返回每個(gè)索引的accesses.ops一目了然。5. 聚合管道把統(tǒng)計(jì)邏輯從應(yīng)用層搬回來(lái)以前我特別愛(ài)在應(yīng)用層做統(tǒng)計(jì)查出一堆文檔然后 for 循環(huán)累加。后來(lái)發(fā)現(xiàn)數(shù)據(jù)量一上來(lái)網(wǎng)絡(luò)傳輸和內(nèi)存占用都受不了而且代碼又長(zhǎng)又難維護(hù)。聚合管道就是把這類邏輯下推到數(shù)據(jù)庫(kù)側(cè)。5.1 管道的執(zhí)行順序決定了性能聚合管道是一串 stage 依次執(zhí)行每個(gè) stage 的輸出是下一個(gè)的輸入。順序至關(guān)重要$match和$limit一定要盡早db.orders.aggregate([ { $match: { status: paid, createdAt: { $gte: ISODate(2024-01-01) } } }, { $group: { _id: $userId, total: { $sum: $amount }, cnt: { $sum: 1 } } }, { $match: { total: { $gte: 1000 } } }, { $sort: { total: -1 } }, { $limit: 50 } ]);如果把$match放在$group后面前面就要對(duì)全量數(shù)據(jù)處理一遍可能慢幾十倍。能過(guò)濾的先過(guò)濾能少的先少這是寫聚合管道的第一原則。另外第一個(gè)$match如果命中了索引整個(gè)管道都會(huì)受益。所以聚合查詢的入口過(guò)濾條件要和索引對(duì)齊寫完記得用explain看一下。5.2 分組、展開(kāi)和關(guān)聯(lián)$group里最常用的是$sum、$avg、$max、$min還可以用$push把分組內(nèi)的值收集成數(shù)組{ $group: { _id: $category, prices: { $push: $price } } }$unwind用來(lái)把數(shù)組拆成多條處理一條訂單多個(gè)商品這種結(jié)構(gòu)特別方便db.orders.aggregate([ { $unwind: $items }, { $group: { _id: $items.sku, sold: { $sum: $items.qty } } }, { $sort: { sold: -1 } } ]);$lookup相當(dāng)于左連接但它在大數(shù)據(jù)量下是性能殺手因?yàn)槊總€(gè)輸入文檔都要去目標(biāo)集合查一次。如果目標(biāo)集合的關(guān)聯(lián)字段上有索引還好沒(méi)有索引就是災(zāi)難。我的建議是能靠?jī)?nèi)嵌解決的關(guān)聯(lián)就別用$lookup。5.3 聚合的內(nèi)存限制和落盤聚合管道默認(rèn)每個(gè) stage 最多用 100MB 內(nèi)存超了直接報(bào)錯(cuò)。大數(shù)據(jù)量分組要開(kāi)啟落盤db.orders.aggregate(pipeline, { allowDiskUse: true });開(kāi)啟之后會(huì)寫臨時(shí)文件速度慢一些但不會(huì)失敗。生產(chǎn)環(huán)境跑報(bào)表類聚合這個(gè)參數(shù)基本是必開(kāi)的。還有一點(diǎn)$group的_id如果基數(shù)特別大比如按用戶 ID 分組幾千萬(wàn)用戶內(nèi)存和臨時(shí)文件都會(huì)吃緊。這種場(chǎng)景我一般會(huì)先按時(shí)間窗口切分分批聚合再合并結(jié)果比一次性硬跑靠譜。6. 數(shù)據(jù)建模和幾個(gè)新手最容易翻車的地方前面都是操作層面的事真正決定項(xiàng)目后期好不好維護(hù)的是數(shù)據(jù)建模。這塊沒(méi)有標(biāo)準(zhǔn)答案但有些坑是共通的。6.1 內(nèi)嵌還是引用看讀寫比例這是文檔建模最核心的決策。判斷依據(jù)其實(shí)就一句話這份子數(shù)據(jù)是不是總跟著主數(shù)據(jù)一起讀而且數(shù)量有上限。適合內(nèi)嵌的情況訂單里的商品明細(xì)、文章里的標(biāo)簽、用戶設(shè)置里的偏好項(xiàng)。這些數(shù)據(jù)量有限幾十條以內(nèi)且讀主數(shù)據(jù)時(shí)基本都要一起讀。適合引用的情況用戶和訂單、商品和評(píng)論。這類數(shù)據(jù)會(huì)無(wú)限增長(zhǎng)或者需要獨(dú)立查詢內(nèi)嵌進(jìn)去會(huì)導(dǎo)致文檔不斷變大最終撞上 16MB 的單文檔上限。一個(gè)真實(shí)踩過(guò)的坑某項(xiàng)目把用戶的所有操作日志內(nèi)嵌到用戶文檔里一開(kāi)始沒(méi)問(wèn)題跑了一年之后單個(gè)文檔漲到十幾 MB更新開(kāi)始報(bào)錯(cuò)查詢也越來(lái)越慢。后來(lái)拆成獨(dú)立集合按userId索引才解決。數(shù)組字段一定要問(wèn)自己這個(gè)數(shù)組會(huì)不會(huì)無(wú)限增長(zhǎng)。會(huì)就必須拆出去。6.2 無(wú)模式不等于不用設(shè)計(jì)MongoDB 不強(qiáng)制 schema不代表可以隨便寫。同一個(gè)集合里字段名一會(huì)兒userId一會(huì)兒user_id一會(huì)兒字符串一會(huì)兒數(shù)字后期查詢能把你逼瘋。我的做法是在應(yīng)用層用統(tǒng)一的模型定義很多語(yǔ)言的驅(qū)動(dòng)都支持 schema 校驗(yàn)同時(shí)在集合上開(kāi) validatordb.createCollection(orders, { validator: { $jsonSchema: { bsonType: object, required: [orderNo, amount, status], properties: { orderNo: { bsonType: string }, amount: { bsonType: decimal }, status: { enum: [paid, unpaid, refunded] } } } }, validationLevel: moderate });validationLevel: moderate表示已有文檔不校驗(yàn)、新寫入才校驗(yàn)避免上線時(shí)被歷史數(shù)據(jù)卡住。這個(gè)約束看起來(lái)麻煩但能擋掉大量低級(jí)錯(cuò)誤。金額字段我特別建議用Decimal128而不是 double浮點(diǎn)數(shù)累加會(huì)出現(xiàn)0.1 0.2 0.30000000000000004這種問(wèn)題財(cái)務(wù)場(chǎng)景絕對(duì)不能接受。6.3 幾個(gè)高頻坑的快速清單坑表現(xiàn)處理方式單文檔超 16MB寫入報(bào)錯(cuò)object to insert too large拆集合或改用 GridFS 存大文件正則沒(méi)加錨點(diǎn)查詢?cè)絹?lái)越慢前綴匹配加^或建文本索引時(shí)間字段存字符串范圍查詢和排序都不準(zhǔn)統(tǒng)一存Date類型skip翻大頁(yè)越翻越慢改成基于上一頁(yè)最后一條的_id游標(biāo)翻頁(yè)數(shù)組元素?zé)o上限文檔膨脹拆子集合主文檔存摘要唯一索引在數(shù)組字段上語(yǔ)義和預(yù)期不符想清楚是全數(shù)組唯一還是元素唯一skip翻頁(yè)這個(gè)坑值得單獨(dú)說(shuō)一下。skip(100000).limit(20)并不是直接跳到第 10 萬(wàn)條而是先把前面 10 萬(wàn)條掃一遍再丟掉越往后越慢。正確做法是記住上一頁(yè)最后一條的排序字段值下一頁(yè)用 lastValue來(lái)查db.articles.find({ createdAt: { $lt: lastCreatedAt } }) .sort({ createdAt: -1 }).limit(20);這種方式在任何頁(yè)數(shù)下耗時(shí)都穩(wěn)定前提是排序字段上有索引。6.4 備份和變更這兩件事別等出事再想最后提兩個(gè)運(yùn)維層面的事。第一是備份mongodump簡(jiǎn)單夠用但要注意它是邏輯備份大庫(kù)導(dǎo)出很慢而且導(dǎo)出期間的數(shù)據(jù)一致性要靠--oplog保證。數(shù)據(jù)量大的話快照方式更穩(wěn)。第二是索引和字段的變更。給一個(gè)千萬(wàn)級(jí)集合加索引如果沒(méi)有指定后臺(tái)構(gòu)建會(huì)阻塞寫入。新版本雖然默認(rèn)行為已經(jīng)優(yōu)化但上線前還是應(yīng)該在預(yù)發(fā)環(huán)境用同等數(shù)據(jù)量壓一遍記錄耗時(shí)。我吃過(guò)一次虧預(yù)發(fā)只有十萬(wàn)條數(shù)據(jù)加索引兩秒完成生產(chǎn)一千多萬(wàn)條加了四十多分鐘期間接口大面積超時(shí)。自此之后任何涉及大集合的變更我都會(huì)先拿生產(chǎn)數(shù)據(jù)的抽樣副本跑一遍估算耗時(shí)再挑低峰期執(zhí)行。寫了這么多其實(shí) MongoDB 入門真正的門檻不在語(yǔ)法而在兩個(gè)思維轉(zhuǎn)變一是從表結(jié)構(gòu)先行轉(zhuǎn)到讀取模式先行建模時(shí)先想清楚數(shù)據(jù)怎么被讀二是從應(yīng)用層拼裝轉(zhuǎn)到數(shù)據(jù)庫(kù)側(cè)完成索引、聚合、投影這些能力用好了很多邏輯根本不用搬到代碼里。我自己在實(shí)際項(xiàng)目里的體會(huì)是但凡一個(gè)查詢開(kāi)始變慢第一反應(yīng)應(yīng)該是去看explain而不是急著加緩存。緩存能蓋住問(wèn)題但索引沒(méi)建對(duì)緩存一失效問(wèn)題還是原樣回來(lái)。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
亚洲人妻精品一区二区| 极品少妇99| 丝袜美腿校园春色| 国产精品久久伊人| 少妇熟女1区2区3区| 亚洲中文电影| 热天堂一区二区| 欧美黄片免费在线观看视频| 2017av无码免费无线播| 中文字幕诱惑制服人妻丝袜美丝袜美| 99热| 国产曰批免费观看久久久| 青青草依人大香蕉| 色网在线| 色噜噜人妻丝袜AV资源| 97人肏| ..日韩av毛片精品久久久| 中文字幕免费在线观看| 青青草成人视频在线观看二区| 五月天婷婷综合| 欧美综合娱乐久久| 91精品无码久久久久久久| 亚洲男人天堂视频| 九九热超碰97亚洲最新香蕉| 日本超碰在线国产一区| 日韩免费性爱视频在线观看| 2021久久国产综合精品青草| 男女一进一出视频久久| 老妇女91| 殴美色网| 亚洲人久久久久日| 97欧美久久久久久久| 香蕉一区二区三区在线视频| 成人夜夜爽| 久久久久久精品免费看A级| 久久久中文| 国产精品一区二区麻豆| 97视频新免费| 精品中文一区二区| 72av视频| 伊人久久蜜月| 黑人粗大V S日韩女优视频| 亚洲综合有玛| 国产白领连续中出在线观看| 艳美熟妇先锋一二三区| 久久人妻丝袜一区二区三| 日韩卡一卡二卡三在线| 综合 欧美 亚洲 日本| 性爱综合一区二区| 嗯啊抽插大香蕉网页| 日产操逼| 天天看精品动漫视频一区| 欧美综合亚洲综合| 97在线观看免费视频| 久久久亚洲熟妇熟女| 熟妇色99| 亚洲午夜精品久久久中文影院| 加勒比性爱成人在线| 丰满熟妇大乳做爰| 国产97亚洲| 91性网| 嗯嗯不要视频| 尤物黄色在线观看网站| 国产女同视频在线播放| 日韩欧美tv一区二区在线观看| 欧美成人性爱视频在线播放| 少妇无码av专区线| 自拍偷拍2025在线观看| 嗯嗯啊啊操死我| 少妇一区二区三区在线观看| 亚洲黄日韩无码专区| 夜夜骑操视频| 亚洲欧美综合网| 中文久久久| 91香蕉国产尤物视频| ,成人免费啪啪视频| 欧亚第一综合网| 色女99一级片在线观看| 神马久久久久眼| 日韩99神马视频播放| 日韩天天本| 亚洲熟妇白浆无码AV| 欧美日韩中文字幕不卡| 色欲Av人妻精品一区二| 五月丁香| 超碰97日韩| 自拍内地三级在线观看| www.色婷婷色综合| 九九热五区| 综合色久欲| 久草新在线| av无线看| 翘臀vidoes| 夜夜操一区二区| 上床啊啊啊| 成全在线观看免费观看| 超碰79人人乐| 夜夜嗨免费视频| 亚洲男人天堂网| 眼镜人妻101.com| 日韩AC| 久九九九九九九热| 日韩熟女精一区二区三区不卡| 另类图片欧美激情综合| 熟女突然公开看18禁影片| 日本91白丝| 国产精品乱码久久久久久久| 日本精品一级二级三级| 2020中文字幕| 超碰97亚洲| 岛园激情| 天天爱综合网| 国产黄色小视频网站| www.久久| 中文字幕第7页| A级毛片在线看免费| 超碰av在线| 91老熟女91老女人| 久久久久久亚洲Av无码| 青青操97| 日本人妻最新在线中| 97久久超碰| 久久动漫精品视频这里只有精品| 人人摸人人入| 精品久久久久9999| 极品国产内射| 亚洲国产欧美日韩人妻日中文| 免费超碰97久久| 天天谢天天干| h色99999| 中文字幕一二区二三区人妻专区| 九草在线大香蕉| 成年人黄色视频免费| 亚洲天堂中文字幕无码男同| 人人九九精| caoni国产亚洲av| 久久、1234| 久久精品午夜国产亚洲AV无码| 人妻天堂综合网| 伊人97| 在线播放中文字幕| 亚洲熟妇A V黑人| 中文字幕视频2区| 91夜色| oumeisetupian| 亚洲性爱乱操x| 大香蕉手机在线视频| 高清国产精品福利网站| 人人色人人射人人妻| 亚洲一区二区三区在线激情| 一牛一区二区三区久久| 久久久久久国产手机AV| 男人的天堂VA| 欧美性色综合网| 四虎影视永久在线免费| 亚洲伊人青青草| 亚洲激情AV| 精品欧美老熟女一二区| 久久m| 亚洲猛交| 久久久久一本一区二区青青蜜月| av强奸乱轮| 骚女高跟AV在线| 人妻少妇av在线观看| 男人的天堂99| 亚洲熟女一区| 天天操天天射青青草| 一级AV性爱| 色97综合中文字幕| 精品熟女一区=区三区| 欧美熟妇成人一区二区| 一区超碰一区| 亚洲91网站| 黄污污污污| 后入式五六区| 伦伦成年午夜免费视频| 亚洲精品黑丝| 97大色网| 精品人人插人人操| 欧美亚洲色图另类国产| 天天操天天干美女网址导航| 日本熟妇熟色97一本在线观看| 婷婷干黄色| 亚洲图片偷拍欧美| 少妇诱惑视频| 男人的天堂2019AV| 欧美色偷拍 | 99热在线观看| 福利伊人玖玖国产| 春色综合免费| 人妻 制服 日韩 中文 在线| 婷婷五月天影院| 2019天天干天天操| a'v在线资源| 亚洲超碰综合网| 97国产高清视频在线观看| 亚洲se91| 久草综合网| 啊啊啊好大好湿| · —级AA伦aa坐爱午夜极速ⅴA一区天天噪天天噪天天噪 | 99热这里只有精| 91高清无码下载| 久久草草亚洲蜜桃臀| 蜜桃午夜视频一区二区 | 欧美性爱在线无码| 国产视频一区二区三区在线免费观看 | 97精品97| a片亚洲一本通视频| 性色中出| 成人天天看站长推荐| 97视频观看| 久极品在线观看| 天美传媒av 在线| 91在线页| 久久仑合| 日韩午夜精品一区二区三区电影| 国产女同视频在线播放| 久操凹凸视频| 黄页网站免费高清在线观看| 伊人AAA| 99在线免费视频| 国产成人网| 色婷婷影院| 五月激情影院| 爱欲AV| 久久久久久波多野吉衣高潮| 久久精品夜色国产亚洲AV| 久久动漫精品视频这里只有精品| 国产精品高朝久久久久久久| 综合色欧美| 国产精品久久| 这里只有精品视频在线观看麻豆| 丝袜熟女一区二区三区| 无码又爽又硬又激情免费视频| 99精彩视频| 欧美日韩免费专区在线| 久久精品电影| PMv在线观看| 小视频玖玖| 亚洲超碰AV| 久久综合婷婷| av操操不卡| 精品妇操一区二区三区| 99中文字幕| 免费的黄片有限公司| 亚洲 欧美 手机在线观看| 日日日日日| 久久免费看高潮毛片韩国| 日日干夜夜欢| 中文字幕在线免费观看2| 国产野战露脸在线播放| www.99在线| 日韩激情视频| 精品久久久久综合无码| 巨爆乳一区二区爆乳区| 成人资源中文字幕在线观看天天| 麻豆 亚洲 97| 国产h小视频在线观看免费| 久久精品国内Av熟女高清| 黑人嘿嘿嘿超爽免费视频| 九九毛片这里只有精品| 日韩欧视频| 亚洲精品国产熟女久久久久久| 91精品久久久久久77777| 伊人97色天使| 久久人妻熟女一区二区| 岛国成人av在线播放网址| 国产精品乱人伊人网| 国产吹潮女在线观看| 91亚洲综合| 亚洲高清无码AAA久久久精品| 久久久久性熟视频| 亚洲精品电影| 日本一区二区成人在线| 天堂涩涩| 在线无码视频| 台欧久久精品视频| 干B网| 色情乱伦AV| 青青草伊人久久| 啪啪自拍九九综合| 天天爽天天干| 全国男人天堂网| 国产三级中文有码在线视频| 欧美少妇性乱| 八戒午夜福利理论片| 亚洲午夜免费狠狠干| 亚洲人精品久久久| 欧美人妻久久精品二区三区| 白丝在线一区| av无码精品久久久久| 夜夜嗷嗷一区二区| 激情小说日韩无码| 91撸色网 玖玖网 欧美| 小日子操bb在线看| 日本一天色道久久久精品视频| 国产老太乱伦一区| 黄色大片一区二区密桃丝袜| 亚洲婷婷丁香在线| 亚码激情| 67194无码不卡| 日日做夜狠狠爱欧美黑人| 三级精品三级在线观看| 天天综合网久久ww| A 天堂| 九月丁香婷婷| 免费αV在线视频| 日本中文字幕高跟| 91人妻素女| 九九九九精品一区| 亚洲综合成人网| 老熟女综合网 | 久久超碰久| 97久久久| 伦理弟一页| 日本人妻A片成人免费看片| 中国少妇啪啪视频| 久久水蜜臀亚洲AV无码精品| 亚欧视频在线| 精品日韩产品在线,日韩在线不卡视频,欧美日韩免费专区/久, | 日韩激情小说一区二区| 亚洲骚男同com| 大香蕉五月天婷婷| 一级性爱网| 久久蜜色情在线视频xxx免费观看| 在线人成亚洲视频免费观看| 国产av色网| 日韩免费人妻色情网站| AV不卡在线| 精品人妻一区二区三区四区| 亚洲日本男人天堂网| 国产对白刺激视频| 十八禁黄色| 91 国产丝袜在线放观看| 人人操人人插人www| 天操天操夜操夜月月年年操操| 九九碰九九爱97超碰| 一级人妻性爱视频| 婷婷激情四射| 小明看看网址| 激情四射婷婷四五月天| 久久久久久国产精品免费网站| 久久蜜桃一区二区| 国产精品亚洲日韩骚欢乐谷最新地址发布页huanieguty性屋娱乐妖精视频 | 97视频在线视频| 日本在线一二 | 大香蕉免费乱伦视频| 精品国产乱码久久久久久网站入口| 91国产丝袜足交精品视频| 丁香六月东京热| 青娱乐淫乱1314| 偷拍亚洲情色| 日日夜夜草草草| 六月天婷婷| 91午夜无码| 综合网亚洲| 综合情欲网| 天天干天天日天天射黄色片| 久久久久密| 色色婷婷丁香| 高清国产av无码| 国产AV色黄看到爽| 日韩精品资源专区二区| 91 天天综合| 丰满丝袜少妇AV| 一个人在线看的黄色电影网站| 亚洲AV无码乱码在线观看性色| 操操逼视频| 立川理惠被中出无码| 亚洲美女精品九九视频| 久草成人影片| 九久9精品| 一级黄色性爱A级片| 欧美裸体美女日麻屄| 青娱乐 青青青操 日逼| 哈哈操 大香蕉| 青青草导航在线视频| 91丝袜美腿片| 插插综合网天天影视网| 韩国毛片一区二区三区| 国产久久一区二区| 加勒比东京热五月天天堂网| 日韩欧美天天爽爽爽天天爽爽| 日韩精品9999| 国产白丝在线| 超碰伊人在线| 久久成人网站| 久久香蕉国产线看观看亚洲女人 | 国产亚洲在线观看| 色五月综合网| 野狼激情网| 午夜激情床戏激情| 97超碰色屌| 宗合情欲网| 日韩欧美丝袜诱惑| 欧美性综合| 不卡六六在线91| 亚洲丝袜二区在线| 久久69| 欧美操人视频| 亚洲精品国产熟女久久久久久| 成人性爱视频在线看| 自拍偷拍 高清无码| 日韩丰满熟妇| 999久久久精品国产| 久操综合在线| 日韩二三区| 欧美变态激情网| 久9久9久9久9久9久9| 人妻熟妇一区二区三区| 天天干天天操天天操夜夜操天天操 | 国产传媒日韩| 欧美经典一区二区三区| 欧美日韩999| 大香蕉 222| 色综合99999| 久热网| 国产白丝av| 人人操人人摸人人看人人插| 手机看av网站在线看| 婷婷激情啪啪| 97资源免费视频| 亚洲熟女乱综合一区二区在线-...亚洲国产日韩欧美一区二区三区,久久久久久精 | 另类图片亚洲加勒比另类图片亚洲加勒比另类图片亚洲加勒比 | 少妇高潮喷水无套久久久久久| 91色射| 午夜亚洲WWW湿好大| 久久久亚洲欧美综合| 丰满人妻-区二区三区免费| 精品小视频在线| 亚洲s色图| 美女91网站| 91精品人妻电影| 亚洲欧美中日韩| 久久久一二三四区| 国产成人午夜视频网址| 黑丝少妇| 蜜臀一二三区| 一级@啪啪视频| 久久精品国产精品亚洲艾通辽熟妇 | julia中文字幕在线观看| 91性感在线| 大香蕉专区| 亚洲天堂另类美腿| 久久久555| 色婷婷视频| 九九精品美女高溯喷水| 亚洲风情综合网| 国产亚洲精品久久久久小| 日日干日日| 操死我了啊啊啊| 岛国1区2区3区在线观看| 日本高清久久| 亚洲玖玖爱| 亚洲国产成人精品无码专区| 青青草日本中文字幕 | 欧美综合站| 九九九不卡| 黄色区免费观看中文字幕| 成人日本精品九区| 亚洲av噜噜噜噜噜噜| 亚洲天堂区| 精品少妇高潮久久| 91GD.COM| 精品国产乱码久久久久久免费| 精品国产人成在线| 熟女高潮合集-永久久久-成人AV | 天美一二三在线观看Av| 综合网亚洲| 91麻豆天美国产欧美日| 夜夜爽夜夜爽| 宅男午夜在线视频| 国产精品第一区第一页| 亚洲瓯美色图| 国产成人一级av88| 嫩草91| 91强奸乱轮| 粉嫩久久久极品| 爱av免费| 久热这里只有精品9| 亚洲成人免费在线| 丁香九月婷婷| 看黑丝美女操逼青青网站| 日本爽爽爽爽爽爽免费视频| 天天综合有色网| 2025年A片视频精品| 啊啊啊快操我视频| 乱伦日本色图AⅤ| 91熟女视频网| 人人天天欧洲| 国产家庭乱伦表演| Aa东京男人的天堂| 狠狠操狠狠| 久久夜夜| 91欧美丨精品丨入口| 国产精品宅男免费| 97色综合中文网| 伊人97色天使| 国产精品亚洲天堂网址| 精品大全99999| 99熟女| 1000部熟女视频在线观看| 9999亚洲电影| 日韩三级一区| 国产精品美女久久久久AⅤ国产馆| 1000午夜黄色| 又黄又爽在线观看视频| 热无码中文亚洲H一道本一区二区| 超碰69| 日韩免费人妻色情网站| 久久激情亚洲精品无码?V| 超碰97伊人| 国产黄色动态精品| 日本综合久久| 日韩欧美午夜一区二区| 久久精品区| 97超碰色屌| 欧洲熟妇xxXx欧美老妇裸体| 欧美人人曰人人操人人射射| 理论久久婷婷网8| 激情露脸爱| 丁香色色网| 18禁无码永久免费无限制| 人人九九精| 日本熟人妻中文字幕在线|...久久国产精品-国产精品_日本一区二区三区中文字幕 | 中日韓欧美高清| 99re这里| 97色爱| 五月丁香综合| 色成人Www精品永久观看| 天天做天天爱| 日韩电影中文字幕| 加勒比人妻综合| 男人天堂.AB| 91五月天| 不卡免费av在线播放| 无码高清操逼网址| 免费AV中文网在线观看| 欧美色图电影| 日本Suv精品一区二区| 欧美综合网1| 一级黄碟在线观看| 久久欧美1卡2卡3| 九九亚洲视频| 久久老子无码午夜伦不卡| 日韩图区 偷拍| 大香蕉乱级| 少妇综合| 欧美精品三级黄片| 中文字幕精品码亚洲| 欧美骚少妇| 久久亚洲色图中文字幕| 性色av一区二区| 丝袜喷水在线| 嫩草 人人网精品| 人人操天天爽| 亚洲欧美九九九| 亚洲熟女国产综合另类| 97日本超碰综合| 成人资源中文字幕在线观看天天| 丁香激情五月| 亚洲成人av色网| 人妻久久久久久久久久久久久久久| 亚洲欧美国产日本一区二区三区| 色成人Www精品永久观看| 国产超碰欧美| 欧美精品丝袜久久久中文字幕| 久久免费精品视频免一| 欧美综合娱乐久久| 强奸乱伦AV网站| 人人操人人插人人摸人人干| 岛国黄色短视频| 亚洲国产一级精品毛一级精品看免费视频| 999亚洲国产视频| 日韩欧美成人午夜福利| 日日噜噜夜夜狠狠视频无| 口爆综合网| 久久婷婷国产一区二区色| 极品白嫩福利在线| 中出789在线视频| 9久精品视频在线观看| 91男同| 啊啊啊不要嗯嗯在线观看| 啊灬啊灬啊灬啊灬高潮奶出了免费视| 天天搞欧美| 久久久久久久唑| 国产h小视频在线观看免费| 久久超碰国产一区二区三区| 午夜视频久久久久一区| 亚洲色图日韩精品| 99热精品在线| 亚洲免费97免费| 91黑丝操| 天美精品原创av片国产| 午夜操逼不卡| 免费黄色视频网址| 有码色中文字幕在线观看| 欧美日韩国产人人| 亚洲情色视频| 婷婷激情五月天小说网| 免费看毛片操穴| 久久亚洲人妻| 易易A毛视频| 久久久久久99AV无码免费网站| 国产精品呦一区二区三区| 色色色999| 好看的91视频| 国产欧美另类久久久精品课程| 欧美一区二区一级岛国大片| 性爱1区| 麻豆福利视频导航| 欧美伊人电影| 无码天天操| 麻豆天美国美国产| 亚洲s色图| 亚洲综合第一页| 最新国产亚洲精品精品国产亚洲综合| 婷婷亚洲中文字幕在线| 亚洲性感丝袜诱惑在线观看| 少妇被c 黄 免费观看| 天堂8在线新版官网| 一道本东京热加勒比一区二区三区| 夫妻AV网站| 人人做天天爱| 中文字幕啊啊啊在线观看视频| 天美欧美国产| 欧美啪啪色吧在线| 欧美午夜一区二区三区| 青苹果影院男人的天堂| 玖玖资源视频一区二区三区| 婷婷av在线中文字幕| 欧美很很操视频| 色欲人妻一区二区在线| 免费视频97| 欧美日本一区二区a人| 国产又大又粗又长视频在线| 久久久96| 黄色污污污污污污网站| 亚洲交性| 久99热| 少妇特黄一区二区三区| 午夜理论片在线观看免费| 屌妞视频久久久久久久久久久久| 成人免费性爱视视| 99色悠悠| 精品免费视频国产一区| 91九久| 啊啊啊在线观看| 97日韩超碰超碰中文字幕| 一区二区三区精品视频| 97bbn| 午夜偷拍久久熟女| 久久久久921| 约操熟妇| 熟妇高潮二区三区| 亚卅熟女乱色| 96国产精品| 六月婷婷色综合| AV女优男人的天堂| 久久国产精品一级二级三级| 久久久久久精| 伊人色综合超碰| 一区二区免费电影久久| 欧美夜夜骑视频| 亚洲1区2区三区高清中文字幕| 麻豆 亚洲 97| 国产欧美岛国精品一区| 91M一社| 青青草操逼逼视频| 国产精品ww久久| 亚州色站 日韩电影| 日本熟女免费視颖| 久9爱经典视频| 日本黄 R色 成 人网站| 超碰在线一区| 久久久不卡区一区二区三区久久久| 国产精品呦一区二区三区| 影音资源男人日韩| 久久精品国产精品亚洲艾通辽熟妇| 少妇久久久久久久久| 玖玖爱综合| 天堂中文资源在线bt| 天堂亚洲精品| 五月婷婷hd| 在线国产探花| 自拍偷拍第26| 欧美97免费| 欧美综合色站| 久热大香蕉| 国产高清吃奶免费视频网站| 蜜区区视频79| 九九热视频这里只有精品| 一区二区三区 日韩欧美| 久久亚洲一区女同性恋中文字幕| 久久9亚洲| 少妇干B| 深夜福利黄片| 97ai亚洲| 校园春色亚洲无码| 久久极品一区二区| 丝袜美腿制服人妻二区中文字幕 | 天天插天天插| www亚洲免费| 91色婷婷综合久久中文字幕二区| 超碰人妻中文在线| 操少妇很爽av| 美女天天干| 97硬碰| 丁香激情网| 欧亚乱色熟女一区二区| 久久国产在线一区二区| 亚洲男人在线观看天堂| 98精品国产乱码久久久久久| 日韩欧美亚洲国产日韩| 天天躁日日躁AAA片李宗瑞| 综合av社区| 超碰99re| 97 国产精品| 日韩精品电影| 久久99999| 日韩美女久久一区二区三区| 综合色99| 新版天堂中文资源8在线| A一区片| 97爱爱| 91第一页| 久久久久久十| 久久久一区二区三区麻豆| 手机av亚洲丝袜美腿日韩第一页二页| 99爱久久视频频| 国模限制级电影| 长长久久88视频| 欧美在线干| 麻豆国产免费影片| 中文字幕性感少妇av| 午夜视频好爽啊| 欧美一区二区日韩三区| 国产午夜精品理论片一二三区区 | 亚洲精品日韩国产欧美| 殴美在线AⅤ| 国产aⅴ无码片毛片一级网站| 国产狂喷潮在线精品| 最新亚洲黄色免费电影| 99999精品| 亚洲欧美色图| 国产精品一区二区a| 新亚洲无码| 1000部熟女视频在线观看| 2021国产成人精品久久| 欧美日韩1234| 99无码狠狠久久| 日本操逼视频在线| 日韩无码精品综合久久| 青草草免费网站av| 操逼操逼逼操操逼91| 成年人性爱日韩| 7777欧美成是人在线观看| 免费看欧美美女黄色大片 | 婷婷激情丁香| 看全色黄大色大片免费视频| 亚洲超碰97| 亚洲精品自拍| 岛国视频一二三区| 久操视频资源站公开| 久久精品性| 亚 欧 美 综合| 屌妞视频久久久久久久| 校园春色综合香蕉| 久草综合网| 亚洲另类春色| 91丨豆花丨熟女| 日韩人妻无码专区| 欧美三级一级| 伊人精品国产| 国产白丝网站| 久久免费99精品久久久久久| 日韩 欧美 视频 在线 一区| 另类小说五月天| 日韩精品高清资源在线| ai欧美亚洲小说| 超碰在线免费一区二区三区| 一级性爱视频免费观看| 日韩欧美综合激情| 少妇二级| 歐美性天天| 久草这里只有精品| 人妻啪| 大香蕉久| 国产青青美女玩逼视频| 欧美性色欧美| 无码丰满熟妇一区二区浪潮AV| 人人色人人操在线| 内射小黄片| 久久一区二区三区入口| 成人熟女视频一区二区三区| 天天综合网亚洲综合网| 很很操在线| 色婷婷久久| 后入式在线免费观看60秒| 综合亚洲欧美| 成人福利视频网| 自拍丝袜美腿人妻| 欧洲精品二区| 另类一区| av麻豆啪啪| 中文字幕三四五区| 亚洲第一成人影院色播| 欧美午夜色妇色鬼| 天天伊人| 去干网最新版| 俞拍自拍| 在线毛片片免费观看| 久久午夜伦| 国产精品午夜精品| 欧美人与性动交a美精品| 91 国产丝袜在线放观看 | 天天综合AV| 一区二区三区麻豆| 在线观看精品国产免费| 欧美熟女丝袜| 少妇一级婬片免费放一级a性色.| 精品射1999| 啊啊啊爽爽| 人妻少妇色综合| 欧美性爱超碰97| 久久久久婷婷| 精品日韩产品在线,日韩在线不卡视频,欧美日韩免费专区/久, | 91呆哥人妻| 乱操9999| 超碰成人国产| 久久噜噜噜精品国产亚洲综合| ..日韩av毛片精品久久久| 欧美97在线观看| 久久在线观看免费视频| 欧美性爱一内片一区二区三区| 亚洲欧洲激情卡通另类文学四射小说网站| 久久九九网| 精品97久久| 色99色| 国产精品福利视频| 丝袜美腿欧美| 精品久久久久久中文字幕视频免费| 噜噜在线| 97欧美视频| 人妻一区二区三区| 色哟哟综合| 欧美青青视频| 日本操BAV| 久久中文字幕人妻熟av女蜜柚| 亚洲砖码砖专无区2023| 97ai亚洲| 五月天婷婷欧美三区| 俞拍久久国应视频| 亚洲欧洲美腿丝袜| 婷婷色色五月天福利| 国产超碰在线一区| 欧美黄片免费在线观看视频| 老女人老91妇女老热女| 丰满少妇乱子伦精品无| 欧美一区二区三熟女剧情| 亚洲AV成人无码一区二区三区在线观看| 亚洲中文字幕av | 欧美夜夜狠| 91免费看一区二区三区| 啊啊啊啊啊啊啊啊啊啊在线观看| 成人午夜小视频手机在线看| 成人三级片一区二区三区视频| 美女刺激久久国产欧美| 久久一二三级一一一| 熟女这里只有精品6| 97超碰精品成| 青青草日韩无码| 激情天天视频| 麻豆a'v电影| 久久女人一区二区三区| 92性色国产午夜福利在线661| 91激情综合| 精品国产一区二区三区av在线资源| 中国操逼无码| 干妹子| 青青草视频爽一爽| av日韩国产一区二区| 美女性91| 超碰综合色| 人妻人人操| 美女操逼A A| 91美女精品| 国产青视频| 伊人激情| 在线强奷到舒服的无码视频| 婷婷丁香激情| 97欧美资源| 91少妇香蕉久久精品| 97天天摸天天碰| 久草免费在线一区二区| 国产免费黄色一级大片| 91久久国产精品| 国产第二页| 欧美 亚洲 大香| 五月丁香激情综合| 囯产操逼片| 8x福利精品第一福利视频导航| 综合第一页| 久久激情四射婷婷丁香五月天| 丰满精品人妻少妇久久字幕| 又大又黄国产| 日本一级一级一级一级| 人人操人人搞人人草| 综合亚洲欧美精品日韩?v| 国产2.3.4区| 亚洲欧洲第二视频在线观看色图| 亚洲人精品久久久喷水| 91久操| 天天干夜夜操网| 国产大陆天天艹| 精品久久无码午夜福利| 人妻少妇精品视频一区二区三区| 热热色色综合| 久草男人天堂| 精品国产72| 日韩欧美成人大香蕉| 粉嫩国产精品久久粉嫩| www.色五月| 伊人久久大香大香线蕉中文| 国产一级操B视频| 性色生活片久久毛片婬片免费放女人一级毛片 | 久夜视频| 成人性生活高清视频在线播放| 熟妇人妻一二三区免费| 九九免费影片| 国产亚热在线久久| 亚洲欧美综合网站| 人人摸人人舔一区二区| Julia Annxxxxx| 国产九九九九九九| 在线电影亚洲色图| 一区二区三区四区五区久久久久久| 伊人少妇久久久| 国产女主播视频在线观看| AV色五月天| 久久亚洲日韩国产欧| 久久久性少妇| 91精品导航| 亚洲超碰97| 日本αv| 91东京热男人的天堂| 日本高清免费一本视频在线观看| 亚洲国产一级黄色视频| AV天堂国产| 国产麻豆福利av在线播放| 96久久精品一二三区色欲| 日本精品不卡一二三区| 开心五月婷婷激情| 日韩欧美麻豆大片| 91殴美大片| 天天拍天| 人妻91少妇| 欧美日韩国产成人高清| 欧亚性爱在线视频| 日本在线播放不卡一区| 蜜臀av一区二区三区免费观看| 好淫网一二三视区| 日韩精品人妻中文字幕久久久| 内射中国少妇高清视频免费视频| 亚洲欧美激情小说| 久久精品一区二区| 伦理弟一页| 五十路成人在线视频二区三区| 肥佬影院91| 超碰国产精品无码| 蜜桃av综合网发布| 国产精品一区二区在钱播放| 亚洲一本色码中文字幕| 蜜桃香蕉久草精品在线| 午夜精品久久一区二区| 日本三级网页| 偷拍 精品另类 凸凹了四区| 四虎免费看黄| 亚州高清AV| 中文字幕天堂在线| 日韩一级成人毛片免费观看 | 日韩欧美被操黄免费观看| 欧美在线|亚洲| 亚洲色交| 亚洲αv一区二区三区| 欧美性天天影视| 大香网伊人久久综合网eew| 97se亚洲| 亚洲熟女性高潮久久久| 亚洲色欲天天人妻无码系列专区| 亚洲乱色视频一区、二区在线| 人妻大香蕉| 久久伊人最新网址视频| 日韩一级欧美一级在线观看| 蜜奶av| 婷婷探花久久精品一区| 日本高清视频xxxx| 亚洲最大91网| 蜜臀在线网站| 欧美性爱综合,免费| 亚洲国产激情国产av| 青青草乱入乱欲视频在线观看| 夜夜爽夜夜摸夜夜操免费视频| 激情熟女12P| 伊人成人中文字幕久久网| 美女主播色欲91抠b在线播放| 超碰地址久久| 青娱乐日韩无码| 操操操操操操| 欧美中出| 色婷婷综合久久久久中文国产精品一区中文字幕,国产福利电影一区二区三区 | 色狠狠一区二区三区香蕉| 亚洲人成在线放东京热| 成人看片网站| 安微少妇操BBB| 国产v片在线免费观看| 六月婷激情福利天堂69| 91观看 国产白丝| 操逼片国产| 9久久美女首页| 午夜男女爽爽爽影院视频| 99久久精品无码一区二区毛片免费 | 国产原创精品| 99av| 久久久久久久人妻| 91热热色| www超碰| 青青草国产一区二区三区| 韩日性爱av| 成人黄页| 日韩中文字幕人妻视频| 91扒丝袜综合在线| av毛片aaaaa免费看| 日本久久久久久久久| 床戏久久久av一区二区麻豆| 日韩成人大片在线观看| 97综合久第一页| 久久九九视频九九视频| 囯产精品强| 国产情侣自拍在线播放| 亚洲性猛交| 国产小黄片在线免费观看 | 日韩熟女乱伦中出| 欲射影视| 思思在线免费视频| 五月丁香影院| 蜜臀视频网站| 亚洲91色在线| 国产高清26uuu| 嗯嗯啊啊视频一区二区三区| 精品中文字幕一区二区| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师 | 色欲蜜臀AV| 综合情欲网| 九九热免费视频| 欲香欲色| 玖玖爱一区在线| 青草草免费网站av| 操老熟女AV| 五月天激情国产综合婷婷婷| 夜夜嗨TV| www.久久| 久久在线观看免费视频| 国产AV色黄看到爽| 精品美女少妇一区二区三区| 91精品人妻电影| 亚洲高清欧美总合| 欧美日韩国产色图在线| 600国产精品视频| 成人综合网 欧美| 性爱乱伦网址| 91精品导航| 色av中文字幕| 99热这里只有精品地址 | 国产精选三级在线观看| 熟妇女伦乱视频| 69人妻人人揉人人躁人人精品| 高潮的A片激情扒开一区| 久久久草草精品| 99久久com免费视频′| 久久东京伊人一本到鬼色| 啊啊啊骚| 久久9亚洲| 色牛牛AV| 蜜乳AV免费观看| 日韩BBN| 猛交交| 老司机射| 欧美狠狠| 啊啊啊啊操死我了| 亚洲精品色| 啪啪资源网| 精品欧美老熟女一二区| 综合97亚洲| 蜜臀久久99精品久久久久久久久| 萌白酱自拍视频| 色综合 加勒比| 超碰久久性爱| 一级久久性爱视频| 色欲Av人妻精品一区二| 无马一区二区| 国产亚洲日本| 丁香五月影院| 老司机老司机午夜影院| 17c嫩草51久久91嫩草| 97jingpin| 天天干2区3区| 99在线精品观看99| 国产精品无码久久久久2028| 亚洲高清欧美总合| 中亚黄色三级大片| 蜜臀亚洲中文| 992这里有精品| 蜜乳av一区二区| 欧洲在线性爱视频| 阿姨一区二区免费视频-高清正片西瓜视频下载app-T450AV | 日本 情色 1区2区3区| 91中文字幕在线观看| 欧美色图私拍91| 黑丝内射一区二区三区| 亚洲AV无码成人精品久久| 精品久久久久久无码| 青青草影视蜜久久| 粉嫩久久久久| 91熟女综合| 激情文学网伊人| 在线播放中文字幕| 在线强奷到舒服的无码视频 | 成人av动漫在线观看| 天天综合网日韩7799| 17c在线成人免费A片观看| 精品国产Av无码久久久亚洲| 91综合在线| 亚洲欧美另类激情小说| 精品国产乱码久久| 亚洲欧美情色| 色香欲影| 干超碰碰熟女| dy888午夜老子影视达达兔| 全国男人天堂网| 狠狠97| 18+91网站| 99超碰碰| 激情婷婷黑人91| 97超碰精品图片| 九九九九九精品视频| 91色花堂| 亚洲 欧美 色图| 神马久久久久久| 亚洲一区二区三区在线激情| PMv在线观看| 国产精品高潮久久久无码| 午夜小电影在线插入淫高潮 | 天天天肏屄欧美| 69精品在线| 麻豆区99999| 久久大线蕉一区| 亚洲色情在线影视| 欧亚日韩三区| 九九人妻|