亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

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

RucBase C++數(shù)據(jù)庫(kù)源碼實(shí)戰(zhàn):B+樹(shù)并發(fā)與緩沖池解析

RucBase C++數(shù)據(jù)庫(kù)源碼實(shí)戰(zhàn):B+樹(shù)并發(fā)與緩沖池解析 簡(jiǎn)介這份資源是面向計(jì)算機(jī)專(zhuān)業(yè)學(xué)生與數(shù)據(jù)庫(kù)系統(tǒng)實(shí)現(xiàn)學(xué)習(xí)者的RucBase關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)C源碼工程參考CMU15445的BusTub與Stanford CS346的Redbase設(shè)計(jì)適合作為《數(shù)據(jù)庫(kù)系統(tǒng)實(shí)現(xiàn)》課程實(shí)驗(yàn)框架幫助理解并動(dòng)手實(shí)現(xiàn)數(shù)據(jù)庫(kù)核心模塊。包內(nèi)共185個(gè)文件以58個(gè)h頭文件、34個(gè)cpp源文件、35個(gè)txt說(shuō)明、20個(gè)sql腳本為主另含少量Python腳本、Markdown文檔與圖片壓縮包約1.36MB目錄結(jié)構(gòu)清晰便于按模塊檢索。內(nèi)容覆蓋數(shù)據(jù)庫(kù)與表管理、索引創(chuàng)建刪除、事務(wù)提交終止、鎖管理器實(shí)現(xiàn)的共享鎖與排他鎖、日志記錄與恢復(fù)、SQL語(yǔ)義分析與執(zhí)行計(jì)劃生成以及緩沖池與磁盤(pán)管理器的頁(yè)面讀寫(xiě)替換策略并附有B樹(shù)并發(fā)與刪除測(cè)試、緩沖池管理器測(cè)試等用例。已有56人學(xué)習(xí)適合需要完整實(shí)驗(yàn)框架、源碼參考與測(cè)試樣例的讀者深入研讀。1. 從一份 C 源碼包說(shuō)起RucBase 到底能跑出什么如果你正在搜「C 數(shù)據(jù)庫(kù)管理系統(tǒng)源碼」大概率會(huì)撞見(jiàn)兩類(lèi)東西一類(lèi)是動(dòng)輒幾十萬(wàn)行的工業(yè)級(jí)項(xiàng)目clone 下來(lái)連編譯都過(guò)不去另一類(lèi)是只有幾百行的玩具跑完SELECT 1就沒(méi)了下文。RucBase 卡在中間——它是一個(gè)教學(xué)向的 RDBMS 原型參考了 CMU 15-445 的 BusTub 和 Stanford CS346 的 Redbase把數(shù)據(jù)庫(kù)內(nèi)核拆成存儲(chǔ)、索引、查詢(xún)、事務(wù)、日志幾個(gè)可獨(dú)立動(dòng)手的模塊。這份源碼包里能看到y(tǒng)acc.tab.c、lex.yy.c這類(lèi)詞法語(yǔ)法分析產(chǎn)物也有ix_index_handle.cpp、b_plus_tree_concurrent_test.cpp、buffer_pool_manager_test.cpp這些索引與緩沖池的實(shí)現(xiàn)和測(cè)試文件說(shuō)明它不是一個(gè)空殼框架而是帶著可編譯、可跑測(cè)試的完整鏈路。適合誰(shuí)正在做數(shù)據(jù)庫(kù)課程設(shè)計(jì)的學(xué)生、想補(bǔ)數(shù)據(jù)庫(kù)內(nèi)核實(shí)操的后端工程師、以及需要一份能改能調(diào)的 C 項(xiàng)目練手的人。它不承諾生產(chǎn)級(jí)性能但能讓你把「B 樹(shù)怎么并發(fā)、緩沖池怎么替換、SQL 怎么變成執(zhí)行計(jì)劃」這些黑匣子親手拆一遍。2. 把源碼跑起來(lái)從 yacc/lex 到第一個(gè)可執(zhí)行測(cè)試2.1 先看清目錄里有什么再?zèng)Q定編譯順序拿到壓縮包解壓后別急著make。先花兩分鐘掃一遍文件構(gòu)成能省掉后面半小時(shí)的鏈接報(bào)錯(cuò)。這份源碼里幾類(lèi)文件承擔(dān)不同職責(zé)文件/目錄作用編譯階段yacc.tab.c/yacc.tab.cpp語(yǔ)法分析器由 yacc/bison 生成先于業(yè)務(wù)代碼lex.yy.c/lex.yy.cpp詞法分析器由 lex/flex 生成先于業(yè)務(wù)代碼ix_index_handle.cpp索引句柄B 樹(shù)對(duì)外接口業(yè)務(wù)層b_plus_tree_concurrent_test.cpp并發(fā) B 樹(shù)測(cè)試測(cè)試層buffer_pool_manager_test.cpp緩沖池替換策略測(cè)試測(cè)試層disk_manager.cpp磁盤(pán)頁(yè)讀寫(xiě)存儲(chǔ)層planner.cpp查詢(xún)計(jì)劃生成查詢(xún)層常見(jiàn)做法是詞法語(yǔ)法文件先由工具生成 C/C 源再和業(yè)務(wù).cpp一起交給編譯器。如果你直接改yacc.tab.c而不改.y源文件下次重新生成就會(huì)被覆蓋——這是新手最容易翻車(chē)的地方。2.2 環(huán)境配置編譯器、構(gòu)建工具和依賴(lài)RucBase 是 C 項(xiàng)目對(duì)工具鏈版本有要求。我一般會(huì)先確認(rèn)三件事編譯器支持 C17、CMake 版本不低于 3.10、系統(tǒng)里有 flex 和 bison。下面這套命令在 Ubuntu 22.04 上驗(yàn)證過(guò)其他發(fā)行版把包管理器換掉即可。# 安裝編譯工具鏈與詞法語(yǔ)法分析器 sudo apt update sudo apt install -y build-essential cmake flex bison # 確認(rèn)版本C17 是硬門(mén)檻 g --version # 期望 9.0 cmake --version # 期望 3.10 flex --version bison --version邏輯說(shuō)明build-essential提供 g 和 makecmake負(fù)責(zé)生成構(gòu)建文件flex/bison用來(lái)從.l/.y重新生成詞法語(yǔ)法分析器。參數(shù)上唯一要盯的是 g 版本低于 9 會(huì)在std::filesystem和結(jié)構(gòu)化綁定上直接報(bào)錯(cuò)。如果你在 Windows 上常見(jiàn)做法是用 WSL2 或 MSYS2不要硬扛 MSVC——這份源碼的構(gòu)建腳本默認(rèn)按類(lèi) Unix 環(huán)境寫(xiě)。2.3 編譯與運(yùn)行第一個(gè)測(cè)試環(huán)境就緒后標(biāo)準(zhǔn)流程是建 build 目錄、cmake 生成、make 編譯。不要在原目錄里直接 cmake產(chǎn)物和源碼混在一起清理時(shí)很痛苦。# 在項(xiàng)目根目錄下創(chuàng)建獨(dú)立構(gòu)建目錄 mkdir -p build cd build # 生成構(gòu)建文件Debug 模式便于調(diào)試 cmake -DCMAKE_BUILD_TYPEDebug .. # 編譯-j 后面跟 CPU 核心數(shù)加快速度 make -j$(nproc)邏輯說(shuō)明CMAKE_BUILD_TYPEDebug會(huì)帶上-g和關(guān)閉優(yōu)化方便你用 gdb 跟棧如果只想跑測(cè)試看結(jié)果可以換成Release。make -j$(nproc)用滿(mǎn)所有核心但第一次編譯建議先不加-j讓報(bào)錯(cuò)順序清晰定位缺失依賴(lài)更快。編譯完成后測(cè)試可執(zhí)行文件通常在build/test/或build/bin/下。先跑緩沖池測(cè)試它依賴(lài)最少# 運(yùn)行緩沖池管理器測(cè)試 ./test/buffer_pool_manager_test # 運(yùn)行并發(fā) B 樹(shù)測(cè)試 ./test/b_plus_tree_concurrent_test如果buffer_pool_manager_test全綠說(shuō)明存儲(chǔ)層和頁(yè)管理沒(méi)問(wèn)題b_plus_tree_concurrent_test通過(guò)說(shuō)明索引層的鎖和并發(fā)控制邏輯是通的。這兩個(gè)測(cè)試是判斷「這份源碼是否完整可用」的最快信號(hào)。2.4 用 SQL 走一遍完整鏈路測(cè)試跑通只證明模塊能獨(dú)立工作真正要驗(yàn)證的是 SQL 從輸入到執(zhí)行計(jì)劃的整條鏈路。RucBase 自帶交互式 shell啟動(dòng)方式一般是# 啟動(dòng)數(shù)據(jù)庫(kù) shell具體路徑以編譯產(chǎn)物為準(zhǔn) ./bin/rucbase進(jìn)入后可以執(zhí)行建庫(kù)建表、插入、查詢(xún)-- 創(chuàng)建數(shù)據(jù)庫(kù)并切換 CREATE DATABASE testdb; USE testdb; -- 建表帶主鍵和索引 CREATE TABLE student (id INT PRIMARY KEY, name VARCHAR(32), score INT); CREATE INDEX idx_score ON student(score); -- 插入數(shù)據(jù) INSERT INTO student VALUES (1, alice, 90); INSERT INTO student VALUES (2, bob, 85); -- 查詢(xún)觀(guān)察是否走索引 SELECT * FROM student WHERE score 86;邏輯說(shuō)明CREATE INDEX會(huì)觸發(fā)ix_index_handle.cpp里的 B 樹(shù)插入邏輯SELECT ... WHERE score 86會(huì)經(jīng)過(guò)planner.cpp生成執(zhí)行計(jì)劃。如果你在輸出里看到計(jì)劃選擇了索引掃描而非全表掃描說(shuō)明查詢(xún)優(yōu)化模塊是活的。參數(shù)上注意VARCHAR(32)的長(zhǎng)度要和存儲(chǔ)頁(yè)大小匹配超長(zhǎng)字符串會(huì)被截?cái)嗷驁?bào)錯(cuò)。3. 拆開(kāi) B 樹(shù)與緩沖池索引和存儲(chǔ)層怎么改、怎么驗(yàn)3.1 B 樹(shù)的并發(fā)控制鎖的粒度決定測(cè)試能不能過(guò)b_plus_tree_concurrent_test.cpp和b_plus_tree_delete_test.cpp是這份源碼里含金量最高的兩個(gè)測(cè)試文件。它們驗(yàn)證的不是「B 樹(shù)能不能插」而是「多線(xiàn)程同時(shí)插刪時(shí)樹(shù)結(jié)構(gòu)會(huì)不會(huì)崩」。B 樹(shù)的并發(fā)難點(diǎn)在于分裂和合并會(huì)修改父節(jié)點(diǎn)如果只鎖當(dāng)前節(jié)點(diǎn)父節(jié)點(diǎn)可能被另一個(gè)線(xiàn)程同時(shí)改掉。常見(jiàn)做法是 crabbing 協(xié)議——加鎖時(shí)先鎖子節(jié)點(diǎn)再釋放父節(jié)點(diǎn)或者用 latch coupling 從根一路鎖到葉子。RucBase 的ix_index_handle.cpp里能看到對(duì)應(yīng)的鎖獲取和釋放邏輯。你改這塊代碼時(shí)要盯住三個(gè)點(diǎn)讀操作是否用了共享鎖寫(xiě)操作用排他鎖節(jié)點(diǎn)分裂時(shí)父節(jié)點(diǎn)的鎖是否在子節(jié)點(diǎn)鎖獲取后才釋放刪除導(dǎo)致合并時(shí)是否處理了「兄弟節(jié)點(diǎn)也被鎖住」的死鎖場(chǎng)景。// 偽代碼示意B 樹(shù)插入時(shí)的 crabbing 加鎖順序 // 從根開(kāi)始先鎖子再放父避免持有父鎖等待子鎖 auto child root; root-RLatch(); // 根節(jié)點(diǎn)加讀鎖 while (!child-IsLeaf()) { auto next child-Lookup(key); next-RLatch(); // 先鎖子節(jié)點(diǎn) child-RUnlatch(); // 再釋放父節(jié)點(diǎn) child next; } child-WLatch(); // 葉子節(jié)點(diǎn)加寫(xiě)鎖準(zhǔn)備插入 // ... 執(zhí)行插入與可能的分裂 ... child-WUnlatch();邏輯說(shuō)明這段不是讓你照抄而是說(shuō)明加鎖順序。RLatch/WLatch是讀寫(xiě)鎖Lookup根據(jù) key 找下一層。關(guān)鍵參數(shù)是鎖的持有時(shí)間——持有越短并發(fā)越高但太短會(huì)導(dǎo)致結(jié)構(gòu)不一致。跑b_plus_tree_concurrent_test時(shí)如果出現(xiàn)段錯(cuò)誤或斷言失敗九成是加鎖順序反了。3.2 緩沖池替換策略L(fǎng)RU-K 的 K 怎么選buffer_pool_manager_test.cpp驗(yàn)證的是頁(yè)面替換。RucBase 的緩沖池管理器負(fù)責(zé)把磁盤(pán)頁(yè)讀進(jìn)內(nèi)存幀滿(mǎn)了就按策略淘汰。教學(xué)項(xiàng)目里常見(jiàn)的是 LRU 或 LRU-KK 表示參考最近 K 次訪(fǎng)問(wèn)。K 越大越能抵抗「掃描一遍大表把熱頁(yè)全沖掉」的問(wèn)題但實(shí)現(xiàn)復(fù)雜度和內(nèi)存開(kāi)銷(xiāo)也上去。改這塊代碼時(shí)參數(shù)選擇直接影響測(cè)試通過(guò)率參數(shù)含義常見(jiàn)取值影響KLRU-K 的歷史窗口2K1 退化成 LRUK 太大冷啟動(dòng)慢幀數(shù)緩沖池大小測(cè)試?yán)锿ǔ?10~50太小頻繁淘汰太大測(cè)不出策略差異淘汰閾值歷史訪(fǎng)問(wèn)次數(shù)門(mén)檻2低于閾值優(yōu)先淘汰// 緩沖池取頁(yè)的核心邏輯示意 Page* BufferPoolManager::FetchPage(page_id_t page_id) { std::lock_guardstd::mutex lock(latch_); // 1. 先在頁(yè)表里找命中直接返回并更新訪(fǎng)問(wèn)記錄 auto it page_table_.find(page_id); if (it ! page_table_.end()) { frame_id_t fid it-second; replacer_-RecordAccess(fid); // 更新 LRU-K 歷史 return pages_[fid]; } // 2. 未命中找一個(gè)空閑幀或淘汰一個(gè) victim frame_id_t fid; if (!free_list_.empty()) { fid free_list_.front(); free_list_.pop_front(); } else if (!replacer_-Evict(fid)) { return nullptr; // 所有幀都被釘住取頁(yè)失敗 } // 3. 把磁盤(pán)頁(yè)讀進(jìn)幀更新頁(yè)表 disk_manager_-ReadPage(page_id, pages_[fid].GetData()); page_table_[page_id] fid; replacer_-RecordAccess(fid); return pages_[fid]; }邏輯說(shuō)明RecordAccess是替換策略的輸入Evict是輸出。參數(shù)上要特別注意「釘住」的頁(yè)不能被淘汰——如果測(cè)試?yán)锍霈F(xiàn)FetchPage返回nullptr先檢查是不是有頁(yè)忘了UnpinPage。這是血淚經(jīng)驗(yàn)緩沖池測(cè)試掛掉一半是替換策略寫(xiě)錯(cuò)另一半是 pin 計(jì)數(shù)沒(méi)配對(duì)。3.3 磁盤(pán)管理器頁(yè)讀寫(xiě)與持久化邊界disk_manager.cpp是存儲(chǔ)層最底下的那塊負(fù)責(zé)把頁(yè)寫(xiě)到文件、從文件讀回來(lái)。它不復(fù)雜但邊界條件多文件偏移怎么算、頁(yè)號(hào)越界怎么處理、寫(xiě)失敗要不要回滾。常見(jiàn)做法是每個(gè)頁(yè)固定大小比如 4KB頁(yè)號(hào)乘以頁(yè)大小就是文件偏移。// 磁盤(pán)頁(yè)讀寫(xiě)示意 void DiskManager::WritePage(page_id_t page_id, const char* data) { // 頁(yè)號(hào)轉(zhuǎn)文件偏移頁(yè)大小固定 off_t offset static_castoff_t(page_id) * PAGE_SIZE; // 定位并寫(xiě)入整頁(yè) if (lseek(fd_, offset, SEEK_SET) -1) { throw std::runtime_error(lseek failed); } ssize_t n write(fd_, data, PAGE_SIZE); if (n ! PAGE_SIZE) { throw std::runtime_error(short write); } }邏輯說(shuō)明PAGE_SIZE要和緩沖池、B 樹(shù)節(jié)點(diǎn)大小保持一致改一處就得全改。lseek的返回值必須檢查write的短寫(xiě)也必須處理——這兩個(gè)是文件 IO 最常見(jiàn)的翻車(chē)點(diǎn)。如果你在測(cè)試?yán)锟吹綌?shù)據(jù)讀回來(lái)是亂碼先確認(rèn)寫(xiě)的時(shí)候偏移算對(duì)了沒(méi)有。4. 查詢(xún)鏈路與事務(wù)日志planner 和恢復(fù)怎么串起來(lái)4.1 從 SQL 文本到執(zhí)行計(jì)劃planner 的輸入輸出planner.cpp處在查詢(xún)層的核心位置它接收語(yǔ)法分析后的抽象語(yǔ)法樹(shù)輸出可執(zhí)行的計(jì)劃樹(shù)。RucBase 作為教學(xué)原型計(jì)劃節(jié)點(diǎn)通常包括順序掃描、索引掃描、投影、過(guò)濾、連接這幾類(lèi)。你要改優(yōu)化規(guī)則就在這一層動(dòng)手。一個(gè)典型的鏈路是lex.yy.c把 SQL 切成 tokenyacc.tab.c按語(yǔ)法規(guī)則組裝成 ASTplanner 遍歷 AST 生成計(jì)劃執(zhí)行器再遞歸執(zhí)行計(jì)劃節(jié)點(diǎn)。如果你發(fā)現(xiàn)某條 SQL 報(bào)「語(yǔ)法錯(cuò)誤」但 SQL 本身沒(méi)問(wèn)題先去看.y文件里的語(yǔ)法規(guī)則是不是沒(méi)覆蓋這種寫(xiě)法。// 計(jì)劃生成示意把 WHERE 條件轉(zhuǎn)成過(guò)濾節(jié)點(diǎn) std::unique_ptrAbstractPlanNode Planner::PlanSelect( const SelectStatement* stmt) { // 1. 先為 FROM 子句生成掃描節(jié)點(diǎn) auto scan PlanTableRef(stmt-from_); // 2. 如果有 WHERE包一層過(guò)濾 if (stmt-where_ ! nullptr) { auto filter std::make_uniqueFilterPlanNode( PlanExpression(stmt-where_), std::move(scan)); scan std::move(filter); } // 3. 最后套投影決定輸出哪些列 return std::make_uniqueProjectionPlanNode( stmt-select_, std::move(scan)); }邏輯說(shuō)明PlanTableRef決定用全表掃描還是索引掃描PlanExpression把條件表達(dá)式轉(zhuǎn)成可求值的節(jié)點(diǎn)。參數(shù)上要注意投影和過(guò)濾的順序——先過(guò)濾再投影能減少中間數(shù)據(jù)量如果寫(xiě)反了性能會(huì)差但結(jié)果正確測(cè)試不一定抓得出來(lái)。4.2 事務(wù)與鎖管理器行級(jí)鎖和表級(jí)鎖怎么配合RucBase 的并發(fā)控制通過(guò)鎖管理器實(shí)現(xiàn)支持行級(jí)和表級(jí)的共享鎖、排他鎖。事務(wù)開(kāi)始、提交、終止對(duì)應(yīng)鎖的獲取和釋放。這塊最容易出的問(wèn)題是鎖升級(jí)和死鎖一個(gè)事務(wù)先拿行鎖再要表鎖另一個(gè)反過(guò)來(lái)就死鎖了。常見(jiàn)做法是給鎖請(qǐng)求排個(gè)全序或者用死鎖檢測(cè)定期掃等待圖。教學(xué)項(xiàng)目里通常簡(jiǎn)化成「按固定順序加鎖」。你寫(xiě)事務(wù)測(cè)試時(shí)可以構(gòu)造兩個(gè)事務(wù)交叉訪(fǎng)問(wèn)同一批行觀(guān)察是否有一個(gè)被回滾。-- 事務(wù)交叉訪(fǎng)問(wèn)示意 -- 事務(wù) A BEGIN; UPDATE student SET score 91 WHERE id 1; -- 此時(shí)不提交事務(wù) B 嘗試更新同一行會(huì)阻塞或失敗邏輯說(shuō)明BEGIN之后鎖才生效COMMIT或ABORT釋放。參數(shù)上注意隔離級(jí)別——RucBase 教學(xué)版通常只實(shí)現(xiàn)到可串行化或可重復(fù)讀不要假設(shè)它有完整的 MVCC。4.3 日志管理與恢復(fù)WAL 的順序不能亂日志管理支持記錄和恢復(fù)核心是 WAL預(yù)寫(xiě)日志先寫(xiě)日志再寫(xiě)數(shù)據(jù)頁(yè)崩潰后才能重放。disk_manager.cpp寫(xiě)頁(yè)之前日志必須已經(jīng)落盤(pán)。如果你改恢復(fù)邏輯要保證 redo 和 undo 的順序正確。日志類(lèi)型作用恢復(fù)階段BEGIN標(biāo)記事務(wù)開(kāi)始分析階段UPDATE記錄前像和后像redo/undoCOMMIT標(biāo)記事務(wù)提交分析階段ABORT標(biāo)記事務(wù)回滾undo邏輯說(shuō)明分析階段確定哪些事務(wù)要 redo、哪些要 undoredo 階段重放已提交的修改undo 階段回滾未提交的修改。參數(shù)上注意 LSN日志序列號(hào)的單調(diào)遞增亂了就恢復(fù)錯(cuò)亂。5. 避坑與排查編譯、鏈接、運(yùn)行時(shí)的五類(lèi)翻車(chē)現(xiàn)場(chǎng)5.1 現(xiàn)象undefined reference to yyparse或yylex原因詞法語(yǔ)法分析器的生成文件沒(méi)參與鏈接或者生成順序不對(duì)。yacc.tab.c和lex.yy.c是工具產(chǎn)物如果 CMakeLists 里只 glob 了.cpp就會(huì)漏掉它們。解決在 CMake 里顯式把生成文件加入源列表或者用add_custom_command在構(gòu)建前重新生成。確認(rèn)flex/bison已安裝且.l/.y源文件存在。5.2 現(xiàn)象編譯通過(guò)運(yùn)行測(cè)試時(shí)Segmentation fault原因B 樹(shù)并發(fā)測(cè)試?yán)锛渔i順序錯(cuò)誤或者緩沖池 pin 計(jì)數(shù)不配對(duì)導(dǎo)致頁(yè)被提前淘汰。也可能是空指針解引用——教學(xué)代碼里指針管理不嚴(yán)格。解決用 gdb 跑gdb ./test/b_plus_tree_concurrent_testrun后bt看棧。重點(diǎn)檢查ix_index_handle.cpp的鎖獲取釋放路徑以及buffer_pool_manager_test.cpp里UnpinPage是否和FetchPage/NewPage成對(duì)。5.3 現(xiàn)象buffer_pool_manager_test斷言失敗提示淘汰頁(yè)不對(duì)原因LRU-K 的RecordAccess沒(méi)在命中時(shí)調(diào)用或者Evict選 victim 時(shí)沒(méi)排除被 pin 住的幀。解決在FetchPage命中分支補(bǔ)上RecordAccess在Evict里檢查pin_count_ 0才允許淘汰。參數(shù)上確認(rèn) K 值和測(cè)試預(yù)期一致。5.4 現(xiàn)象SQL 執(zhí)行報(bào)「table not found」但表確實(shí)建了原因數(shù)據(jù)庫(kù)切換或元數(shù)據(jù)沒(méi)持久化。CREATE TABLE寫(xiě)進(jìn)了系統(tǒng)表但USE沒(méi)切換對(duì)或者元數(shù)據(jù)頁(yè)沒(méi)落盤(pán)。解決先SHOW TABLES確認(rèn)當(dāng)前庫(kù)檢查disk_manager.cpp的寫(xiě)頁(yè)是否真的刷到文件。教學(xué)項(xiàng)目里元數(shù)據(jù)可能只在內(nèi)存重啟就丟這是設(shè)計(jì)邊界不是 bug。5.5 現(xiàn)象Windows 下編譯報(bào)fopen安全錯(cuò)誤原因MSVC 默認(rèn)把fopen標(biāo)為不安全要求用fopen_s。這份源碼按類(lèi) Unix 寫(xiě)直接上 MSVC 會(huì)撞。解決要么加_CRT_SECURE_NO_WARNINGS宏要么換 WSL2/MSYS2 用 g。我一般直接上 WSL2省得和平臺(tái)差異糾纏。6. 進(jìn)階玩法給 RucBase 加一條自定義 SQL 函數(shù)跑通測(cè)試只是起點(diǎn)真正能驗(yàn)證你理解了鏈路的方式是加一條自己的 SQL 函數(shù)從詞法、語(yǔ)法、計(jì)劃到執(zhí)行全走一遍。我拿「求平方」舉例SELECT square(score) FROM student。第一步在詞法文件里加關(guān)鍵字或函數(shù)名識(shí)別。如果square當(dāng)普通標(biāo)識(shí)符處理就跳過(guò)這步在語(yǔ)法里當(dāng)函數(shù)調(diào)用解析。第二步在語(yǔ)法規(guī)則里加函數(shù)調(diào)用表達(dá)式。找到表達(dá)式相關(guān)的產(chǎn)生式加一條expr: ID ( expr )動(dòng)作里構(gòu)造函數(shù)調(diào)用節(jié)點(diǎn)。第三步在 planner 里把函數(shù)調(diào)用節(jié)點(diǎn)轉(zhuǎn)成計(jì)劃表達(dá)式。常見(jiàn)做法是加一個(gè)FunctionExpression執(zhí)行時(shí)根據(jù)函數(shù)名分發(fā)。// 函數(shù)表達(dá)式求值示意 Value FunctionExpression::Evaluate(const Tuple* tuple) const { // 先求參數(shù) Value arg child_-Evaluate(tuple); // 按函數(shù)名分發(fā) if (func_name_ square) { int v arg.GetAsInteger(); return Value(v * v); } throw std::runtime_error(unknown function: func_name_); }邏輯說(shuō)明child_-Evaluate遞歸求參數(shù)func_name_決定行為。參數(shù)上注意類(lèi)型檢查——square只接受整數(shù)傳字符串要報(bào)錯(cuò)而不是崩。加完后重新生成詞法語(yǔ)法文件、編譯、跑一條SELECT square(score) FROM student如果輸出是平方值說(shuō)明整條鏈路你都打通了。驗(yàn)證方法上我習(xí)慣先跑原有測(cè)試確保沒(méi)改壞再加新測(cè)試覆蓋新函數(shù)。從那以后我每次改 RucBase 的解析或計(jì)劃層都強(qiáng)制先跑一遍buffer_pool_manager_test和b_plus_tree_concurrent_test確認(rèn)底層沒(méi)被波及再驗(yàn)證新功能。這個(gè)習(xí)慣幫我省過(guò)好幾次「改了上層崩了底層」的后悔藥。希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
欧美日韩丝袜| 五月婷婷六月丁香| 美女露胸露屁股| 久久久天美| www.av在线视频| 美女的肌被草喷水视频| 亚洲欧洲日韩天堂av| 九九九九九九九九九五码| 亚洲欧美色图小说| 亚洲国产午夜真人一级片中文字幕精品黄网站 | 国产综合永久精品日韩鬼片| 99re视频在线播放青草| 亚洲色图久久成人| 午夜人人操| 色老汉色| 一级久久性爱视频| 999精品久久久久久久| 国产欧美美女免费观看视频| 六月丁香网| 欧美中文综合| 亚洲综合在线91| 色月天AV导航| 1024日韩| 婷婷亚洲综合| 日本久久女同性恋视频| 夜夜嗨一区二区三区三州加勒比| 97大色网| 五月天婷婷色| 亚洲日韩精品在线播放| 一,爱啪啪,在线免费视频| 综合伊人激情| 国产性爱乱伦AV| 一二三区精品视频| 人妻内射一区二区在线视频| 激情五月婷| 亚洲国产一区二区三区四区国产| 国产精品嫩草影院午夜两性| 9久久久久久| 91色色综合| 91无人区卡一卡二卡三乱码入口最新版:能让用户有更多选择的选择-经典说说-爱 | 日本精品一区三区| 色yeye成人免费视频| 国产精品福利视频播放| 欧美在线亚洲| 亚洲色图自拍| 久操大香蕉超碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰 | 夜夜爽爽夜夜精品视频| 国产97/欧美| 久久视网78| 啊啊啊啊啊啊好湿好爽视频| 久久婷婷色| 国产绿奴视频在线观看| 9国产超碰| av天堂精品久久| 亚欧成人综合影院| 亚州操逼网| 中文字幕一区电影在线观看| 日本人妻伦在线中文字幕| 天天射天天操天天干天天吃2018 | 另类天堂| 亚洲色婷婷久久久综合日本| 日韩精品资源专区二区| 亚洲一区二区三区欧美日韩| 大稥蕉免费视频这里只有精品| 日本人体九九九九九九| 这里只有精品视频| 欧美少妇性乱| 疯操AV| 天美传媒麻豆一区二区三区国产精| 加勒比综合在线| 麻豆亚洲AV成人无码久久精品| 大香蕉性欧美| 91亚洲丝袜熟女| 久久久久99999| 精品人妻一区二区三区不卡断| 97欧美综合| 熟妇xxxxx性春色| 91人妻中文| 国产熟女乱论| 欧美性爱97超碰| 91美女視頻| 天天射夜夜| 日韩一性一交一A片俄罗斯| 国产白嫩漂亮KTV在线| 久99热| 久操热| 亚州综合图片| 在线二区不卡| 99精品欧美一区二区三区桃色| 女人爽到高潮潮喷18禁网站| 二级久久网| 鸥美极品| 亚洲国产91精品一区二区久久| A级片日韩欧美国产欧美视频精选观看| 色欧洲97| 乱操乱伦AV| 色成人Www精品永久观看| 超碰碰97| 一级毛片电影免费看| 免费精品无码一级毛片牛牛影视| 国产尤物AV尤物在线观看不卡| 大香网伊人久久综合| 亚洲91网。| 午夜精品久久99蜜桃的功能章节| 制度丝袜99| 国人欧美精品一区二区| 美骚妇av高清在线| 男人的天堂com| 日美免费黄片| 偷拍亚洲视频一区二区三区四区| 国产一级高跟丝袜| 欧美白嫩女HD| 色嗨嗨在线| 成人熟女区| 91操熟女视频| 盗摄女人妻在线| 老熟女熟妇| 国产呦精品系列在线观看| 婷婷五月天在线观看| 久久久久九九九九九| 探花一区二区三| 天堂伊人久久| 99热在线播放| 在线视频97| 熟女人妻一区二区三区| 久久原创中文| 92性色国产午夜福利在线661| 激情丁香五月| 亚洲资源站| 亚洲天堂女优在线| 97色综合中文网| 无码自拍SM| 躁躁日曰躁2020| 老外又粗又长一晚做五次| 亚洲精品欧洲精品| 丰满的三级少妇欧美久久久| 黑人综合网| 国产精品情侣啪啪| WWW黄片COM| 欧美日韩亚洲少妇寂寞影院正在播放| 嗯嗯嗯好爽| 国产肏逼网站| 青青操视频在线| 18禁超污无遮挡无码免费网| 人妻天堂网| 欧美人妻精品| 中文字幕aⅴ在线视频| 97国产精品在线观看| 99九九精品| 国产婷婷综合在线观看| 97干综合网| 大香交伊人网| 国产精品久久| 国产自偷| 亚洲色欲一区二区三区| 欧美成人免费在线观看| 偷拍亚洲情色| 欧美欲色| 免费视频a级毛片免费视频| 91女色| 精品久久久久黄少妇| 人人艹亚洲| 78精品| 亚州久久9| 一区二区视频在线播放| 无码一区免费在线不卡| 99久在线精品99re8| 亚洲综合在线视频| 九九干| 久久久偷拍| 60秒免费小视频| 超碰在线人妻| 淫荡少妇免费| 日本人妻最新在线中| 天堂综合| 极品久久久久久久久久久久久久| 这里只有精品视频| 一区二区三区免费岛国片| 欧美日韩中文视频播放| 口爆综合网| 男人成人黄色视频在线观看免费下载| 青青伊人这里只有精品| 国产夫妻性生活视频| 亚洲最大黄网| 麻豆2区1区天美| 日本激情免费大片| 久96热在线观看视频| 搡老女人老91妇女熟女| 精吧天堂| 97资源免费视频| 亚洲成人一二三区| 人妻加勒比东京热| 五月天激情四射| 日本操逼视频导航| 91精品国产日韩欧美综合| 婷婷操视频| 日韩精品 欧美激情| 日本久久999| 久久綜合很很很| 天天肏美女| 欧美九9 9 9| 午夜福利视频在线一区| 亚洲成人美女无吗| 久久这里只精品99re66图| 亚洲无码免费看| 亚洲一卡二卡在线免费| 1人人看人人摸人人操| 啊啊啊免费| 香蕉精品二区二区| 久久久久九九九| 丰满人妻-区二区三区免费看| 超碰久草| 日骚逼视频| 国产青视频| 欧美性后入| 国产女上位好爽在线| www.狠狠| 欧美淫穴| 在线一区| 日韩精品 欧美激情| 久久九九97| 天堂亚洲欧美| 在线免费观看高清无码视频| 无码人妻精品一区二区三区99不卡 | 亚洲精品人伦一区二区| 色婷婷一区二区三区久久午夜成人不| 日本幼女18+| 欧美天天搞| 欲香欲色综合天天伊人| 91五十路| 中文字幕精品一区二区精| 亚洲色图日韩精品| 丁香五月天堂网| 九九热精品免费视频| 亚洲城人男人的天堂| 高树玛利亚无码流出| 亚州人妻| 91操熟女视频 | 欧 美 自 拍 偷 拍| 国产精品国产自产高清AV| 国产精品成人无码av无码免费| 手机看片1025| 性色乱AV一区二区| 日本高清加勒比| 天天摸天天操视频| 黄色大片免费在线| 久久丁香五月婷婷| 日韩精品熟妇| 日本 情色 1区| 欧美精品日韩久久久九| 久久伊人大香蕉| 九一亚洲国产免费| 97在线免费看视频| 搡老女人老妇女AAA一VU麻豆 | 天天操天天日天天干| 天天影视综合色| 亚洲欧美国产va在线播放频| 国产AV久久久蜜爱影集| 蜜臀人妻少妇久久在线观看| 91中出在线| 99亚洲精品| 26uuu国产| 精品无码久久久久| 日韩欧美亚洲自拍偷拍| 五月香婷婷| 中文字幕精品久久久久人妻红杏ⅰ| 综合亚洲网| 99国产在线 精品 视频| 艳美熟妇先锋一二三区| 亚洲综合在线91| 园内精品自拍视频在线播放| 久久最新免费视频23| 激情另类激情| 国产精品制服丝袜清纯唯美| 东北女人的毛片| 久久东京热久久| 亚洲综合精品国产一区| 久草草一二三四区久久| 日韩欧美操逼xxx| 婷婷大香蕉| 婷婷五月天色网| 国产午夜无码片在线观看影视 | www.久久制服糖| 久极品在线观看| 久久久人妻| 丁香六月婷| 玖玖爱伊人玖玖爱| 日本国产高清色www视频在线| 色哟哟-国产专区| 男同专区一区二区三区在线| 91人妻Pr| 欧美三级偷拍| 精品人妻伦一二三区久久| 超碰97亚洲区| 一起草精品人妻| 亚洲偷91色| 精品伊人久久久大香线蕉小说| AV色五月天| 高清无码 国产精品| 亚洲综合图色在线| 1人人看人人摸人人操| 一区二区不卡| 亚洲精品aa久久伊人| 嗯嗯啊啊的视频| 久久99午夜精品一区人妻| 97视频在线视频| 伊人五月天激情| 欧洲亚洲天堂精品| 五月丁香色情| 欧洲久久一二线| 91色噜噜狠狠| 精品视频免费在线一区| 伊人网一本| 五月婷婷综合网| 野狼福利社区| 91高跟美女在线播放| 欧美日韩国产三级黄色| 伊人性在线视频| 正在播放:深夜激情大战,自带黑丝袜全力输出骚穴 | 欧美的性爱网站免费| 美女淫穴| 秋霞一级视频在线观看免费| 色网亚洲人| 欧美成人9797| 亚洲AV无线| 少妇无码999| 第四色色综合91| 亚洲五码一区二区三区| 丰满人妻-区二区三区| 日本 免费 一区二区三区 久久香蕉 | www.婷婷| 亚洲精品一区二区精品| 18精品一二区| 青春草A| 欧美一区二区观看在线| 2024黄色视频| 色逼综合| 亚洲国产福利视频| 天天α片| 天天欧美欧美亚洲网| 国产毛片在线| 日本操逼无码| 99超碰网| 亚洲精品一卡二卡三卡福利视频网站 | 野狼激情网| 2020中文在线一区二区三区| 老女人综合| 蜜臀AV成人精品蜜臀| 久久婷五月天| 五月香婷婷| www.伪伪| 操国产逼| 欧美天天干| 国产亚洲精品美女| 中 文字幕一区二区三四 五 区日 日 骚 | 欧美一区二区成人一卡| 98一区二区精品| 粉嫩av在线一区二区| 亚洲AV成人精品网站在AV| 亚洲天堂一区二区| 99精品人人爽| 日本A级视频| 激情五月婷婷| 桃花色涩综合影院| 风流老熟女一区二区三区l| 超碰95| 传媒在线观看一区二区三区| 在线中文AV| 人人综合| 欧美亚洲日韩16色| 91电影色诱| 日韩精品三区四区| av婷婷色网| 欧美男女午夜啪啪| 久久亚州高清| 久久久久久性爱视频| 久久久久久亚洲精品中文字幕人妻| 欧美网站免费| 人妻激情偷乱视三区频一区二区| 操逼视频免费日韩无码| 精品偷拍13p欧美dodk视频| 中国AV美女| 中文字幕天堂在线| 国产精品原创巨作?v网站| 天天视频黄| 日本成人免费一区二区三区| 婷婷干黄色| jazzjazz国产精品麻豆| 性爱视频免费网址| 欧美专区日本专区| 毛片电影一区二区三区| 国产成人在线观看综合| 120分钟婬片免费看| 十八禁视频网站| 在线不卡视频| 肥臀熟女福利视频一区二区| 丝袜综合| 久久 久久国内精品亚洲| 97操综合| 人妻无码久久一区二区三区免费| 麻豆国产成人精品| 成人资源中文字幕在线观看| 天天综合网在线91| 一本色道无码DVD中文字幕| 搡老熟女免费视频| 国产精品视频一区二区三区八戒| 大香蕉啪啪啪| 伊人久久国产免费观看视频| 噜噜噜久久亚洲精品色情| 午夜AV污污污| 亚洲情欲| 久久国内| 用力操死我| 男人天堂 天天射| 伊人性在线视频| 蜜桃狠狠色伊人亚洲综合网站| 国内亚洲高清无码| 五月丁香婷婷啪啪| 五月天久久婷婷亚洲 | 欧美性高潮| 日本操逼视频在线| 超碰成人国产| 久久久久久久久九九久孕交| 超碰久草| 国产JDAV无码视频在线观看| 搡老熟女老女人老熟妇免费视频| 97这里都是精品| 后入日本1234| 国产黄色影片在线观看| 久久久久免费少妇| 亚洲人妻久久久| 五月天婷婷在线看| 1024日韩| www.av不卡中文字幕| 嗯嗯啊啊操我| 色区久久| 伊人色综合欧美| 亚洲超碰97| 欧美国产伊人久久久久| 人妻少妇三级| 国产1024在线播放| 91精品91久久久中77777| 97超碰免费人人性爱| 五十路熟女人妻一区二区在线观看| 女同女同恋久久级三级| 日本九九久久99播| 97AV在线观看| 99爱爱| 超碰欧美在线欧美| 亚洲AV无码翔田千里网站| 蜜臀久久99精品久久久久久久久| 亚洲天堂久久| 三级片网站在线播放| 青青草乱入乱欲视频在线观看| 天天综合-91入口| 人人操人人大香蕉| 精彩久久中文| 日韩一级片在线看| 久久视频,这里只有精品| 欧美性爱精品七区| 毛片视频白嫩| 97精品视频| 久久国产精品一级二级三级| 夜夜爽夜夜操| 亚洲青青青视频在线| 加勒比99999| 99在线精品观看99| 97精品在线视频| 婷婷操逼| 色香av| 色五月激情网| 亚洲色图欧美| 黄色成品网站| 精品人妻1区| 日韩人妻精品中文字幕| 欧美人妻久久精品二区三区| 亚洲综合一| 免费作爱一级视频| 午夜九九| 色色色综合网| 国产精品美女久久久久久网站| 久无码| 亚洲**2021在线观看| 一区麻豆 高清中文字幕| 国产丝袜欧美在线视频| av线电影| 九九碰九九爱97超碰| 精品午夜福利| 一区中文字幕二区日韩| 亚洲一区二区三区中文字幕| 中文字幕无码不卡啪啪| 亚洲激情久久| 国产成人拍国产亚洲精品| 偷拍在线观看视频| 91精品综合久久久久久五月丁香| 亚洲精品久久久久毛片A片拉屎 | a亚洲欧美色欲| 欧美日韩人妻婷婷一区| 2018色综合天天操| 欧美高清无码免费视频高清版| 久久久久久久久久久999| 强奸乱伦动态污图免费 | 1禁看欧美黄片免费看| 91在线丝袜| 日本天天吊| av绯色| 亚洲欧洲日韩中文字幕一区| 青春草A| 美女被艹尤物视频| 日本淫乱女一区二区三区视频| 熟女一区二区三区| 91久久久久免| 色久桃花影院在线观看| 中文字幕乱码在线观看| 超碰97欧美日韩| 97爱爱爱综合| 国产一区二区视频在线播放| 亚洲精品一二牛牛| 抽插一区二区视频| 国产日韩人人| 一区黄二区黄| 五月香婷婷| 人人操人人插人www| 91视频综合网| 快播电影网日韩新片| 欧美精品第四五页中文字幕在线观看| 丝袜大香蕉| 视频国产精品未满十八禁止在线观看| 91春色| 2019男人的天堂| 国产十八禁视频| 国产精品肉丝自拍| 超碰免费在线| 亚洲一区中文字幕一区| 乱欲一区二区| 国产人妖视频一区在线观看| 成人a v在线播放免费| 9久久精品| 天天爽入口| 天天摸天天舔天天操| 日日干夜夜操视频h| 天天做天天爱天天高潮| 色婷五月| 五月丁香啪啪网| 一级性爱aaaa| 久久无码电影| 亚洲天堂无码| 97摸视频| 欧美特大黄一级片片免费| 国产网红精品| 欧美强奸乱能| 亚洲国产精品无码AV在线| 黄色电影在线播放综合网站| 日韩激情无码影院| 麻豆视频国产一区二区| 日韩精品一区二区三区色欲| 欧美日韩操逼动图| 日本欧美亚洲高清在线看| 午夜一区二区三区国产| 999亚洲国产视频| 91碰超| 强奸乱伦中文字幕AV| 亚欧视频在线| 黄色一级视| 欧美国产日韩高清在线| 99久热| 91在线页| 久操 高清| 99久热精品99re6热| 97精品中文字幕| 国产精品在线一区二区| 少妇高潮九九九九九九九| 99热精品在线观看| 欧美人妻少妇| 日本操逼aaaaa| 看大黄色大片原件| 日韩av影片在线观看| 国产亚洲99久久精品| 中文啪啪视频| 日日夜夜草草草| 亚洲精品久久一区二区三区蜜桃臀| 天天在线91| 网友自拍第1页| 国产综合日韩伦理| 啪啪免费| 情侣开房子拍 日韩无码 女的很漂亮| 国产农村妇女精品1区二区| 色欲色香天天天综合网www-亚洲综合国| 97精品综合久久| 日韩精品99999| 歐美一級亂黃99在綫精品| 天天日天天操VV| 狠狠入| 先锋影音av先锋一区| 久久精品国产亚洲AV高级北京| 亚洲偷拍自拍在线视频| 女人妻一区| 精品美女人人干| 欧美激情专区| 人人摸人人摸人人干| 亚洲麻豆精品二区三区| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师 | 婷婷10月天青娱乐| 人妻AV 中文字幕的| 97人人夜夜精品视频| 四季AV一区二区凹凸精品小说| 久久久久人妻二区精品叶可怜| 208天天久久九九九| 思思热在线| 老熟女乱子伦中文字幕一区二区| 亚洲日本大香蕉1| 人人操人人摸人人骑| 欧美顶级黄色大片免费| 久久发布国产伦子伦精品| 国产精品3| 日本淫乱女一区二区三区视频| 风流老熟女一区二区三区l| 91久热这里只有精品| 91在线丝袜| 国产一级137片内射麻豆| 大香蕉伊人色偷偷在线| 青草视频人妻在线观看| 亚洲人妻中文在线视频| 日韩啪啪啪啪啪| 欧美精品,四区。五区| 国产福利电影| 啪啪视频mP4| 偷偷人人精品女女久久| 欧美日韩操操操| 久久一二三四五六七八九区区| 啊啊啊啊好爽好舒服一区二区易域| 亚洲美女自拍偷拍视频| 亚洲涩涩| 国产黄片精品在线| 欧美 传媒 麻豆 日韩 偷拍| 久久久96| 亚洲一区二区三区久久 亚洲一区二区| 静品嫩模一区二区| 日本精品一区二区三| 久久东京伊人一本到鬼色| 欧美成人亚洲精品| 麻豆三极片| 久无码| 东京热大香蕉| 99青草| 岛国爱情动作片在国产AV无码专区亚洲AV漫画| 国产精品 久久久精品一牛| 天天综合91在线| 欧美资源| 91九久| 精品国产av一区二区三区四区入口| 97精品国产97久久久久久| 日韩97在线| 精品丰满人妻一区二区三区免费观| 天天天干977| 婷婷五月天av| 亚洲天堂一区| 欧洲乱码一区二区| 日韩无码a片| 好吊爽好吊爽在线视频,中文字幕精品一区二区日本,国产良妇出轨视频在线观看, | 91干熟女| 三四中文字幕| 9久久9综合| 1人人看人人摸人人操| 精品无码久久久久| 曰韩av中文字幕专区| 9丨久久九九九| 夜夜操天天肏| 国产精品无套内谢| 噜噜瑟| 国语人妻精彩刺激| 人人玩人人添人人澡免费| 色亚州人久干视频在线观看免费版| 国产精品自在线发布| 亚洲一区日韩精品| 日日玩天天干| 有码免费观看| 日韩一区二区高清在线观看的| 高潮9999外国| 久久做97| 91粉嫩萝控精品福利网站_精品影音先锋国 | 啪啪视频亚洲第一| 3级毛片一二| 国产老熟女| 亚洲色图殴美色图激情乱伦| 精品午夜福利| 99精品久久久久久| 亚洲天堂男人在线| 久久毛卡| 国产精品一区二区a| 精品人妻伦一区二区三区久久| 99热精品在线在线| 国产一级特黄大片处女| 色香综合| 男人的天堂无码| 青娱乐亚洲热| 欧美精品1区2区3区| 国产日韩精品suv| 91大香蕉伊人| 人妻少妇三级| 久久天天摸| 久久香蕉综合一本到3atv| 男女啪啪啪18禁网站| 久久精品成人| 是还免费视频1727我| 荡小穴在线观看| 在线人人人人人人精品超| 思思久热在线精品66| 四季av一区二区凹凸精品小说| 蜜桃中文字日产乱幕4区| 综合色色婷婷| 亚洲国产精品无码AV久久久| 无码九九九九| 亚洲视频,小说| 欧美|91色综合| 日本精品成人无码| 国产日韩欧美亚洲精品95| 黄片视频观看| 五月天亚洲色图| 日韩精品亚洲一二三| 校园春色家庭伦理欧美激情| 国产91精品久久久久久久网曝门| 久久极品伊人| 色婷婷电影网| 久久伊人大香蕉| 欧亚在线视频| 国产福利av精彩对白| 一级黄色视频网| 国产精品毛片?v一区二区三区| 丰满人妻被猛烈进入中| 亚洲九九九| 欧美日韩97| 91性网| 亚洲色交| 超碰97亚洲| 欧亚日韩一区在线| 99re免费| 91人妻人人澡人人爽人人精品| 99久久精品国产系列| 人妻三级在线中文字幕| 91久久午夜无码鲁丝片久久人妻| 神马福利久草| 清清一区二区三区四区不卡视频| 亚洲 欧美 中文 日韩超碰| 婷色五月天| 97中文天堂| www.一本大99| 精品乱码久久久久| 美女丝袜激情小说| 91在线一起| 东北女人高潮视频| 亚洲成a人v欧美综合天堂下载| 亚洲成人贴图| 性饥渴少妇av无码毛片| 久久国产免费激情视频| 国产精品无码av| 粉嫩不卡一区二区性爱| 久久老子无码午夜伦不卡| 五月婷婷影院| 亚洲欧美另类少妇精品| 日本超碰色精品| 加勒比伊人影院| 大香蕉欧美日韩| 九九热这里只有在线精品视 伊人草 成人菠萝蜜视频在线观看 | 成人在线午夜视频一区| 超碰综合97在线| 日本最新1区2区3区| 国产999精品久久久| 精品九九九| 欧美,日韩综合久久| 国内三级自拍小视频在线观看| 国产女人高潮视频| 色色色色色色色色综合| 国产美女91| 国产粉嫩蜜臀av一区二区三区 | 久久国色天香香蕉| 夜夜 中文视频rt| 清纯唯美综合| 国产一区二区三区久久久精品| A 天堂在线观看视频| 熟妇人妻精品一区二区视频色欲| 九九夜精品九九在线| 亚洲美腿丝袜香蕉影视欧美成人| 97久久超碰| 丝袜美腿制服人妻二区中文字幕| 亚洲图片 91| 欧美亚洲宗合色性图| 我想要 啊 啊 啊| 黄片国产精品一区二区| 五月开心网| 亚洲天堂美臀在线| 日韩啊V| 91人人臊| 欧美伦乱爱| 性色亚洲| a在线视频免费观看| 91色爽欧美| 91天堂| 欧美日韩性爱无码| 四季AV综合网址| 久久九九97| 人人人人插| 综合网亚| 亚洲天堂久久久久久粉红视频| 亚洲最新a在线观看| 亚洲色图 欧美热图 清纯唯美 另类自拍 | 国产在线视频二区| 日本九九九九| 亚州Av天美传媒| 天天日天天搞天天干| 91ise欧美| 国产农村妇女毛片精品久久| 国产综合网站在线播放| 青青草伊人久久| 色牛aV| 夜夜嗨一区二区| 91精品91久久久久77777| 乱伦a片视频| 人人摸人人干| 一起草三级AV电影在线观看| 少妇二级| 天天久久| 97五月天| 亚洲 在线| 久久香蕉网| 青草伊人网| 久久草在线综合视频| 97jingpin| 中日韩熟女| 亚洲精品不卡一二三区| 97精品熟女少妇一区| 香港日本韩国人妇99www.wccm20| 97无码视频在线播放| 亚洲国产一区二区三区在线 | 五月丁香婷婷色| 伊人国产AV| 99啪啪| 水滴偷拍| 久久精品欧美一区蜜桃| 九九碰九九爱97超碰| 欧美综合97www| 天堂69亚洲精品中文字| 国产亚卅97| 中国一级操逼视频| 天天日美女的B| 男人的天堂一区三区| 偷拍欧美亚洲| 99这里有精品视频| 亚洲另类春色| 亚州综合电影| 国产AV久久野战精品| 久久久国产护士丝袜美腿一| 日韩AC| 日本免费二区三区| 欧美十八禁在线看| 午夜男人的天堂| 人人色人人射人人妻| 欧美一区二区日韩三区| 久操影视| 蜜臀少妇一区二区| 天天夜躁日日躁狠狠2002| 国产乱人妻精品入口| 手机在线观看不卡无码av| 国产999精品久久久| 日韩紧密久久| 在线看片国产精品每日更新| 黑人性欧美| 亚洲精品亚洲人成人网| 欧洲视频在线| 欧洲综合视频| 国产亚洲精品农村妇女| 男人天堂导航| 亚洲熟妇丝袜在线观看| 国语国产操逼伊人AV网| 九九热re99re6在线精品| 四虎影视在线| 中文字幕精品一区二区精| 欧美日韩制服| 吉田爱美AV在线| 国产一级做a爰大片免费久久| 亚洲欧美碰碰| 日韩人妻精品中文字幕| 综合激情五月丁香| 亚洲欧洲无码bt精品合集| 亚洲高清在线se| 美女露胸露尿口| 顶级丝袜熟女一区二区三区 | 性爱乱伦视频免费| 极品色综合| 久偷拍欧美日韩三区| 天天操综合网| 女人 A一级| 免费成人自拍视频在线| 欧美综合 站| 久久人妻四季| 99久久婷婷国产综合| 国产精品探花色| 欧美97色| 啊啊啊啊啊舒服| 亚洲精品天天影视综合网 | 国产精品在线一区二区| 日韩欧美成人大香蕉| 熟女六十路| 色黄污美女啪啪啪免费网站| 少妇精品久久| 热热色青青草| 97av,com| 久热久操| 日日夜夜国产综合| 99国产精品人妻人伦| 91精品黄在线观看| 约操熟妇| 99这里只有精品国产| 国产97在线 | 亚洲| 另类图片五月天| 亚洲综合一| 色九九九综合| 亚洲97P| 欧洲中文字幕| 搡老女人老妇女老妇老熟女怎么读| 丁香五月久久| 亚洲AV永久无码一区仙野| 大香焦A片| 欧美大香蕉久| 成人蜜乳小视频网站| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师黑人潮喷一 | 丝袜熟女2P| 欧美一级三级| 激情四射婷婷六月天| 亚洲棕合电彰| 日韩超碰精品综合| 国产一级久久久| 久久超碰亚洲人| 亚洲综合另类欧美久久久| 日本韩国一本产品小视频日本韩国一本产品久久久产品小视频日本韩国一本产品久 | 久久美女福利是上海美女| 久干9操| 一本一道vs波多野结衣| 日韩欧美俄罗斯A片| 丰满高潮18xxxx| 强奸乱伦动态污图免费 | 青草香蕉网| 久热久操| 中国熟女91| 色欲久久99精品久久| 蜜桃传媒视频第一区入口在线看| 日本道人妻久久久在线不卡色视频| 久久久性少妇| 九九九九九精品视频| 91少妇人妻| 国产精品爆乳懂色蜜乳| 白丝被操91| 五月婷婷六月丁香网址| 中文一区在线视频| 欧美婷婷五月天| 91粉芽高清在线一区二区| 花野真衣| 亚洲色图美腿丝袜| 天天天做天天天爱天天天爽| 成人无码欧美一级A片狼牙直播| 中文乱码字幕观看视频| 日本成a人v网站在线观看| 手机在线免费看的av| 亚洲成a人片在线观看中文!!!| 伊人色综合网电影| 日韩免费人妻色情网站| 色噜噜人妻丝袜AV资源| 日韩综合97P| 91美女片在线| 98人妻精品一区二区色欲| 激情无码日韩| 一级黄色影片| 欧美色66| 亚洲图片视频小说| 91视频精品| 亚洲最大AV网| 高清不卡视频| 中文字幕精品专区搜索结果91| 精精品人妻一区二区三区| 香伊人在线| 国产精品视频精品一二| 国产丝袜美女诱惑| 日本久久999| 国产老太乱伦一区| 1024人妻熟女一区二区三区| 啊啊啊啊一区| 欧美 综合 亚洲| 香蕉人欧美综合| 亚洲成?V人片在线观看福利| 国产乱码久久| 欧美色图在线视频少妇| aa片毛片| 中文字幕性感少妇av| 综合久欧洲| 综合色欧美| 青娱乐国产精品| 久久久久中出| 精品9999| 精品国产Av无码久久久亚洲| 亚洲精品成人激情在线| 无码视频一区二区| 91天天综合日韩欧美| 亚洲无码?第一页| 久久久久久久久久久人妻| 67914在线兔费成人视频| 日本人妻中文字幕| 亚洲av在线免费观看| 黑人干亚洲| 免费日韩黄片| av在线人气| 亚洲色阁| 超碰99热| 久久99深爱久久99精品| 亚洲AV无码乱码| 久久国产精品一级二级三级| 超碰97综合网| 国产精品久久久久久久毛片1| 欧美色图片91| 97操| 夜夜爽33333| 男女啊啊啊| 免费看日产一区二区三区| SUV一区二区在线看| 飘花国产午夜精品不卡| 大香蕉伊人网WWWn0n| 伊人骚琪琪亚洲天堂网站| 亚洲AV成人无码一区二区三区在线观看 | 中文字幕伊人| 中日韩久久久| 亚洲天天影视色综合| 波多野结衣被操50分钟免费视频| 91色综合激情| 欧美A片中文字幕| 综合亚洲情色| 久久久精品中文字幕爱豆| 67194无码不卡| 成人精品无码| 久久久久久性爱视频| 一级黄色性爱裸体视频| 欧美人妻二区三区| 亚洲无码视频免费在线观看网址! J?P?NESEHD熟女熟妇伦 | 视频在线观看一二三区| 思思热一热婷婷热一热| 色婷婷一区二区三区久久午夜成人不| 一区操逼日比视频| 欧美成人国产精品| 天天天天天天天天天天干美女| 国产精品乱码久久久久久| 日韩少妇一区二区三区| 成人情色综合网| 天天拍天天操| 爱爱动态60秒| 男女91| 久久成人午夜精品影院 | 九九黄色视频在线观看| 国产嫩草精品A88AV| 亚洲男人的天堂亚洲| 99re9| 成人色女网| 日韩无码黄色片| 久久久精品九| 久久超碰久| 日韩熟女操逼| 日韩精品系列| 婷婷香蕉| 综合伊人激情| 亚洲AV在线资源| 婷婷久久网| 国产强奸乱伦无码视频| 精品人妻视频一区二区三区蜜桃视频| 性久久| 夜夜夜爽www精品视频| www.欧精品| 日本东京热加勒比久久| 日韩欧美三级| 精品v1区| 国产精品亚洲一区二区三区四区| 美欧色综合| 日本五十路在线| 亚洲色婷婷| 日韩精品一区二区高清| 9久9久| 五月天伊人| 日韩av在线播放不卡| 97色97干| 久久精品女同亚洲女同13| 艳美熟妇先锋一二三区| 操逼视频亚洲| 久久色网| 人人妻天天做天天爽| 超碰久久性爱| 另类小色呦| 亚洲人妻中文在线视频| 国产一区二区在线看| 国产亚洲色婷婷99精品91| 欧美性高潮| 丝袜AV一区二区三区| 一牛一区二区三区久久| 色婷婷丁香| 国产精品爽爽v| 91在线超高颜值国产| 国产精品视屏| 四虎免费视频| 国产污视频麻豆传媒一区二区| 亚洲天堂 视频你懂的| 日韩中文字幕国产| 9丨久久九九九| 2020中文字幕在线| 动漫区日韩区欧美区| 97久久精品亚洲| 亚洲国产无码精品首页久久久| 在线观看一级α片刺激高潮视频| 欧美综色欧| 日本高清加勒比| 亚洲国成人情色好看电影| 亚洲色吧网| 韩国一级婬片A片AAAAA| 欧美精品日韩久久久九| 欧美日韩在线视频网站| 日本二三四区| 亚洲在线观看| 精品综合久久久久久97| 天天享受天天看| 欧美天天综| 日本天天吊| 国产11页| 五月综合视频| 亚洲1区| 日本在线激情一区二区三区| 淫荡熟女乱伦网| WWW啪啪的com| 无码精品久久| 色综合国产在线观看| 国产h小视频在线观看免费| 超碰碰97资源站| 久久久精选| 97伊人| 激情欧美97| 欧美九九九九九| 蜜臀网 一区| 亚洲美女精品九九视频| 激情在线青青操| 天天综合青苹果| 欧美+日产+中文| 亚洲欧美色图片| 国产品精品自在在线午夜免费| 97综合国产| 日韩在线国产字幕| 欧美日韩大香蕉| 欧美日韩另类在线| 人人操肉肉| 91动漫操逼视频| 国内精品伊人久久久久影院会| 最新国产亚洲精品精品国产亚洲综合| 国产黄色av大片网站| 大香蕉综合在线| 啊灬啊灬啊灬好深灬快高潮了动漫-国产字幕国产在线观看-B049AV | 国产乱伦亚洲| 国产69精品久久久久99尤物| 日韩三级天堂在线观看|