《電子技術應用》
您所在的位置:首頁 > 測試測量 > 設計應用 > SQLite系統(tǒng)構架及虛擬機分析
SQLite系統(tǒng)構架及虛擬機分析
來源:微型機與應用2012年第10期
黨玉春1,翟秀云1,陳明通2
(1.攀枝花學院 機電工程學院,四川 攀枝花617000; 2.攀枝花學院 材料工程學院,四川 攀枝
摘要: 就目前廣泛使用的輕量級數據庫SQLite的構架進行分析,特別是對其中的虛擬數據庫引擎(VDBE)做了原理性的剖析,并結合實例,展示了SQLite的應用及SQLite內部VDBE指令程序的運行方式。
Abstract:
Key words :

摘  要: 就目前廣泛使用的輕量級數據庫SQLite構架進行分析,特別是對其中的虛擬數據庫引擎(VDBE)做了原理性的剖析,并結合實例,展示了SQLite的應用及SQLite內部VDBE指令程序的運行方式。
關鍵詞: SQLite;構架;VDBE;虛擬機

    SQLite是遵守ACID的輕量級關系型數據庫管理系統(tǒng),完全免費、開源,無需任何配置也無需任何安裝程序[1]。它廣泛應用在各種嵌入式系統(tǒng)中,在iOS和Android等系統(tǒng)中都是集成在各自的庫中。
    虛擬機是當前比較流行的一種軟件構架,特別是在解釋性編程語言領域。在安全領域,虛擬機也被用于實現軟件的加密,是公認的一種非常高效且實用的技術手段。SQLite用較小規(guī)模的代碼用C語言實現了一個程序虛擬機,提高了代碼的獨立性,降低了耦合性,同時保持了很高的效率。
1 SQLite數據庫構架
    圖1所示為SQLite系統(tǒng)的總體構架圖[2]。整體上SQLite可以分為前端和后端:前端負責從用戶數據到平臺不相關的指令的轉換;后端處理數據流,深入到具體數據庫數據在磁盤上的操作,這些數據是和平臺相關的。SQLite的平臺無關性通過其內部實現的虛擬數據庫引擎VDME(Virtual Database Engine)來完成,總地來說,就是將SQL語句先翻譯成一種專門設計的語言,然后下層再調用平臺相關的系統(tǒng)API接口,完成相應的功能。

    SQLite的源代碼由96個C語言文件(.c和.h)組成,在編譯之前會由Makefile生成一個完整的文件,即為可以在官方網站上下載的sqlite3.c和sqlite3.h等文件,然后編譯形成所需要的庫或者可執(zhí)行文件。
    圖1給出了SQLite的主要模塊及相互之間的關系,以下將分別介紹各個部分的功能。
    (1)接口(Interface)
    SQLite庫提供的對外不調用的接口大多數都在main.c、legacy.c和vdbeapi.c中,其他一些散布在源代碼的不同部分。對接口的查詢可以在文檔中找到詳細的介紹。為了避免命名上的沖突,所有外部可以調用的接口都以sqlite3_開頭[3]。
    (2)SQL編譯器(SQL Compiler)
    這是一個比較完整的編譯器構架,分別完成詞法分析、語法分析和中間代碼生成。詞法分析器(Tokenizer)由C語言實現,包含在tokenize.c中;語法分析器(Parser)由Lmon LALR(1)生成,和YACC/BISON類似,不兼容,但是生成的代碼是可重入且線程安全的,代碼包含在parse.c中;代碼生成器(Code Generator)生成虛擬機執(zhí)行的中間代碼,包含的文件相對較多,例如select.c、update.c等,大多和SQL命令同名對應。
    (3)虛擬機VM(Virtual Machine)
    代碼生成器生成的中間代碼會通過VM執(zhí)行。這部分后面會有更詳細的分解。
    (4)B-Tree(B-樹)
    數據庫在磁盤上的操作都是通過B-樹的,對應于數據庫中的每一個表或者索引都會有相應的B-樹。實現和接口分別在btree.c和btree.h中[4]。
    (5)頁緩存(Page Cache)
    數據的讀寫都以Chunk為單位進行,這樣可以提高效率。頁緩存負責這部分工作,同時提供了回滾(rollback)等功能,并對數據庫文件進行管理。實現和接口分別在pager.c和pager.h中。
    (6)系統(tǒng)接口(OS Interface)
    SQLite提供了一個系統(tǒng)抽象層,定義在os.h中。每個支持的平臺有自己對應的實現文件,例如os_uinx.c和os_win.c(及相應的頭文件os_unix.h和os_win.h)。
    (7)功能和測試(Utility和Test Code)
2 VDBE框架及關鍵源碼分析
    虛擬數據庫引擎VDBE(Virtual Database Engine)居于SQLite數據庫的核心部分。從整個SQLite的構架可以看出,它處在整個系統(tǒng)的中間部分:前端代碼完成對SQL語言的編譯,相當于簡化版本的一個編譯器;后端完成物理上的操作,即利用B-Tree和Pager對物理硬盤上的數據進行實際的操作。VDBE完成了這個層次上的抽象鏈接。
    整個虛擬數據庫引擎(VDBE)由若干個C語言文件組成,主題實現都包含在了vdbe.c(vdbe.h)中。vdbeInt.h定義了VDBE內部使用的各種結構和函數原型。vdbeaux.c實現了VDBE內部和整個SQLite構建VDBE程序需要的其他功能性函數代碼。vebeaip.c包含了供外部接口函數(SQLite庫外的應用程序,如sqlite3_bind系列函數)使用的一些結構。vdbemen.c 實現了在vdbe的存儲管理。
    對于用戶的SQL語句,編譯器會生成一個虛擬機實例。虛擬機實例在內部和外部是不同的。對內看到的是一個vdbe結構的實例,這個結構定義在vdbeInt.h中,代碼如下:
    struct Vdbe {
    sqlite3 *db;        /* 數據庫連接 */
    Op *aOp;            /* 保存虛擬機的空間 */
    …                /* 其他指令 */
    int nOp;            /* 生成的指令的條數 */
    char *zSql;        /* SQL語句 */
    …                /* 其他指令 */
    SubProgram *pProgram;  /* 虛擬機使用的其他子程序,
鏈表 */
    };
    一個虛擬機實例可以有多個子程序,每個子程序可以由多條指令組成。下面是子程序的結構:
    struct SubProgram {
    VdbeOp *aOp;            /* 指令 */
    int nOp;                /* 指令條數 */
    int nMem;            /* 需要的內部空間 */
    int nCsr;                /* 需要的游標 */
    void *token;            /* 循環(huán)觸發(fā)時需要的id */
    SubProgram *pNext;    /* 鏈表的下一個 */

 


    };
    現在的SQLite有142條操作指令,都定義在opcodes.h中,在vdbe.c中有相應的源代碼,將解析一些指令作為代表,詳細的技術文檔可以查看官方文檔。所有的指令大概可以分為3類:
    (1)數據操作:包含算術、邏輯運算、字符串操作等;
    (2)數據管理:主要關于內存和磁盤的操作。內存上如棧(stack)操作、數據的傳送等,磁盤操作主要是B-Tree和Pager模塊,包括打開及操作游標、事務的開始與結束等;
    (3)控制流:指令的跳轉。
    SQL語句在生成VDBE程序后,每條指令包含了一個操作碼(opcode)和至多5個操作數(operands:P1、P2、P3、P4和P5)。其中:
    (1)P1、P2、P3都是32 bit的帶符號整數,它們通常引用的是寄存器。
    (2)P2在所有的有跳轉功能的指令中表示目的地址。例如上面的第2條指令將會跳轉到第10條指令,然后順序執(zhí)行。
    (3)P4可以是32 bit或者64 bit的帶符號整型數據、字符串、BLOB數據(二進制大對象)、函數指針等其他多樣的對象。
    (4)P5通常是無符號的字符,充當的是標識位。
    在SQLite的VDBE內部,所有的指令都是VdbeOp結構的一個實例(定義在vdbe.h中),結構的定義也主要是這5個操作數。
    struct VdbeOp {
    u8 opcode;    /* 操作碼類型 */
    …            /* 其他數據接口 */
    signed char p4type;    /* p4 的類型 */
    u8 p5;        /* p5是無符號字符型 */
    int p1;        /* 操作數1 */
    int p2;        /* 操作數2,通常是跳轉指令的目的 */
    int p3;        /* 操作數3 */
    union { /* ... */ } p4;        /* p4 是一個聯(lián)合,
可以有不同的類型 */
    …            /* 其他數據接口 */
};
    由代碼生成器生成的程序交由VM執(zhí)行。sqlite3_step()會觸發(fā)內部vdbe解釋生成的vdbe指令。指令的執(zhí)行在如下的函數中進行(SQLITE_PRIVATE 即為static關鍵字),此處去掉了煩瑣的細節(jié),只展示其中的關鍵結構和一個指令的執(zhí)行。
    SQLITE_PRIVATE int sqlite3VdbeExec(
        Vdbe *p                /* VDBE 實例 */
    ) {
        int    pc;                /* 程序計數器 */
        Op    *aOp = p->aOp;    /* 得到所有的指令 */
        Op    *pOp;            /* 當前指令 */
        int    rc=    SQLITE_OK;    /* 返回值 */
        sqlite3* db = p->db;    /* 數據庫連接實例 */
        u8 encoding = ENC(db);/* UTF-8編碼 */
        …                /* 其他初始化代碼 */
        switch ( pOp->opcode )    {    /* 在此之后就是一個
非常大的case代碼
            case OP_Goto: {
                CHECK_FOR_INTERRUPT;
                pc=pOp->p2-1;/* 調整程序計數器 */
                break;
            }
            …    /* 其他的case指令 */
        }
        …        /* 其他指令 */
    }
    這個函數是整個VDBE的核心執(zhí)行函數,雖然重要,但是代碼的原理非常簡單,就是一系列的switch-case語句。在相應的case情況下,會執(zhí)行相應的底層代碼,進行數據庫的磁盤操作。
3 實驗
3.1 數據庫編程接口

    SQLite的編程模型比較簡單,下面的例子給出了一個基本的框架。
    #include "sqlite3.h"
    #include <stdlib.h>
    int main(int argc, char **argv)
    {
        char        *file = "./test.db";/* 數據庫文件 */
        sqlite3    *db = NULL;    /* 數據庫連接實例 */
        int        rc = 0;        /* 返回值 */
        sqlite3_initialize();        /* 初始庫 */
        rc= sqlite3_open_v2(file, &db,
SQLITE_OPEN_READWRITE, NULL);
        /* 準備SQL語句,生成VDBE程序 */
        sqlite3_stmt    *stmt = NULL:
        rc=sqlite3_prepare_v2(db, "SELECT * FROM FILM",
 -1, &stmt, NULL);
            if (rc != SQLITE_OK) exit(-1);
        while (sqlite3_step(stmt) == SQLITE_ROW) {
            const char *data = (const char*)
sqlite3_column_text(stmt, 0);
            printf("%s\n", data?data:"[NULL]");
        }
        sqlite3_finalize(stmt);
        sqlite3_close(db);            /* 關閉 */
        sqlite3_shutdown();            /* 釋放資源 */
    }
    在上面的例子中,使用了sqlite3_prepare_v2()和sqlite3_
step()函數,這是和內部的虛擬機聯(lián)系非常緊密的兩個函數,也是了解SQLite虛擬機的兩個點。sqlite3_prepare_v2()完成的是將SQL語句提交給SQL編譯器,編譯成VDBE指令程序,sqlite3_step()將驅動VDBE執(zhí)行指令程序。
    從應用上來說,這僅僅是最簡單的數據庫應用框架,更多的接口信息可以查看官方的文檔。
3.2 VDBE程序分析
    在官方提供的下載中,有編譯好的命令行可執(zhí)行程序,可以作為完全的SQLite數據庫管理工具。同時,它也考慮了一些Debug和Test功能,可以利用它們深入了解SQLite的內部機制。可以利用SQLite命令行程序中的explain命令查看由代碼生成器生成的中間代碼的形式,這只需要在相應的SQL代碼前面加上explain就可以了。如以搜索的命令行顯示(如圖2所示,箭頭表示實際執(zhí)行順序):
    圖2中,“addr”列是虛擬機的地址編號,并不是指令執(zhí)行的順序,由于跳轉指令的存在,用箭頭標示出了指令運行的實際順序,也可以在SQLite編譯時指定相應的選項,然后利用指令“pragma vdbe_trace=on;”詳細地看到指令的運行過程和堆棧的變化情況。

    指令0~指令12都是對SQLite數據庫內部的準備:由指令1跳轉到指令10,指令10(Transaction)開始一個事務,指令11(VerifyCookie)在執(zhí)行一個指令前檢查數據庫模式是否發(fā)生了變化,當發(fā)生了變化時要重置,指令12(TableLock)將要讀的數據庫表鎖起來,指令13(Goto)跳轉到指令2。
    從指令2開始是實際的對數據庫的操作了。指令2(OpenRead)會打開一個數據庫表的只讀游標,P1作為這個游標的標志,P2是打開的數據庫表的根頁(root page),P3==0表明是主數據庫,P4表明數據庫有兩列,P5說明是以P2的值作為根頁。(OpenRead指令的各個操作數還可以有其他含義,這里只是針對這條SQL語句的解釋,請查看技術文檔。)指令3(Rewind)~指令7(Next)完成了對所有查詢數據的遍歷。指令8(Close)關閉游標,指令9(Halt)結束這個VDBE程序。
    VDBE對上層提供的就是這樣的接口,而對下層將是調用相應的接口實現相應的功能,并由此完成模塊上的解耦合。
    由VDBE的定義、代碼分析及以上的實驗,可以總結出SQLite的整體構架:
    外部調用SQLite接口函數sqlite3_prepare(), SQL語句通過SQL編譯器生成對應的VDBE指令程序;
    內部調用sqlite3_step()驅動,內部執(zhí)行sqlite3VdbeEx-
ec(),switch-case語句執(zhí)行相應指令。底層通過B-Tree和Pager實現對磁盤數據庫文件的管理,如圖3所示。
    在實際應用中,可以設計一個面向應用的指令集,利用程序虛擬機設計中間抽象層,提高平臺通用性。同時程序虛擬機也為語言虛擬機、系統(tǒng)虛擬機及安全沙盒等技術提供了技術基礎。

參考文獻
[1] OWENS M.The definitive guide to SQLite[M].Apress,2006.
[2] KREIBICH J A.Using SQLite[M].O'Reilly Media,2010.
[3] 李蔚,陳亞峰.嵌入式數據庫SQLite及其應用研究[J].沿海企業(yè)與科技,2010(10):45-47.
[4] 杜國祥,石俊杰.SQLite嵌入式數據庫的應用[J].電腦編程技巧與維護,2010(14):43-46.

此內容為AET網站原創(chuàng),未經授權禁止轉載。
主站蜘蛛池模板: 91视频播放 | 国产一级片免费视频 | 久久亚洲免费 | 极品无码国模国产在线观看 | 久久久久亚洲精品成人网小说 | 青青草自拍 | 亚洲日韩国产精品第一页一区 | 国产欧美高清在线观看 | 性一交一乱一伧老太 | 婷婷免费视频 | 中文字幕日产乱码中文字幕 | 黑巨人与欧美精品一区 | 亚洲爽爽网 | 在线一区二区三区做爰视频网站 | 欧美黄页 | 亚洲精品一区二区三区新线路 | 国产69av | 亚洲最新| 夜夜添无码试看一区二区三区 | 国产免费网址 | 免费的又色又爽又黄的片捆绑美女 | 国色综合 | 蜜桃av在线 | 全部免费毛片在线播放 | 欧美视频一 | 成人片黄网站色大片免费观看 | 国产精彩视频在线观看 | 免费中文字幕 | 免费看黄色毛片 | 久久久久se色偷偷亚洲精品av | 五月天激情综合 | 久久免费视频观看 | 国产xxx在线| 国产一区二区三区色淫影院 | 国产午夜一级片 | 小毛片在线观看 | 狠狠色综合激情丁香五月 | 四虎在线免费观看 | 东北少妇白嫩bbwbbw | 黄色小说在线观看视频 | 人人澡人人妻人人爽人人蜜桃麻豆 | 亚洲精品国偷拍自产在线观看蜜臀 | 亚洲av毛片成人精品 | 免费a爱片猛猛 | 日本熟妇色一本在线视频 | h视频国产 | 国产日韩欧美一区二区东京热 | 91精品一区二区三区蜜臀 | 手机看片日韩日韩 | 中文字幕日产乱码中文字幕 | 国产传媒资源网站 | 2019中文字幕网站 | 特a级黄色片| 曰韩少妇内射免费播放 | 日本一区二区三区视频在线播放 | 亚洲精品喷潮一区二区三区 | 97精品伊人久久久大香线蕉97如何观看 | 国产精品igao视频网网址不卡日韩 | 天天色天天操天天射 | 在线精品亚洲一区二区佐佐木明希 | 亚洲欧美精品 | 欧美黑人一级视频 | 亚洲成人在线视频观看 | 激情射精爽到偷偷c视频无码 | 亚洲黄色免费 | 清纯唯美经典一区二区 | 69久久久成人看片免费一区二 | 国产精品久久久久久久毛片明星 | 九九免费视频 | 九九热视频精品 | 在线亚洲自拍 | 欧美激情18p | 欧美乱妇日本无乱码特黄大片 | 狠狠五月激情六月丁香 | 国产免费一级片 | 国产高清不卡一区二区 | 日韩在线欧美在线 | 欧洲金发美女大战黑人 | 在线观看黄网 | 在线视频se | 看全色黄大色黄女片18 | 久久精品国产视频 | 精品免费久久 | 中文在线免费观看 | 日韩精品二区在线观看 | 九九综合久久 | 亚洲性视频网站 | 久久久久久久性 | 午夜毛片 | 青青网站| 欧美国产日韩在线视频 | 欧美性xxxxx极品少妇 | 精品久久国产字幕高潮 | 久久99精品久久久久久秒播 | av日韩av | 奇米影视7777狠狠狠狠色 | 亚洲综合无码一区二区三区 | 亚洲精品www久久久 国产免费无码一区二区视频 | 国产一三四2021不卡 | 国产后入清纯学生妹 | 天天鲁一鲁摸一摸爽一爽 | 国产精品毛片一区二区在线看舒淇 | 文中字幕一区二区三区视频播放 | 1515hh毛片大全免费 | 521香蕉网站大香网站 | 国产视频首页 | 亚洲日韩欧美国产高清αv 性夜久久一区国产9人妻 | 精品国产乱码一区二区三区99 | 免费看一级黄色片 | 美女三级黄色片 | 特一级黄色片 | 非洲黑妞xxxxhd精品 | 亚洲视频在线观看免费的欧美视频 | 日本熟妇色xxxxx欧美老妇 | 成年人黄色网址 | 粉嫩小箩莉奶水四溅在线观看 | 波多野结衣在线播放视频 | 亚洲青春草 | 国产一区二区三区久久久久久久久 | 日本不卡视频在线 | 一区二区xxx | 欧美精品另类 | 三级黄色片网站 | 中文字幕美人妻亅u乚一596 | 中文字幕日韩在线播放 | 亚洲精品成a人ⅴ香蕉片 | 精品国产乱码久久久久久三级人 | 亚洲天堂色2017 | 国产jizz18高清视频 | 国产精品igao视频网网址 | 一本到在线 | 欧美精品在线观看一区二区 | 亚洲午夜精品 | 国产av一区二区三区最新精品 | 91精品孕妇哺乳期国产 | 亚洲a久久 | 调教重口xx区一精品网站 | 亚洲国产日韩在线视频 | www.久久爱 | 成人免费黄网站 | 免费在线观看av网址 | 久久九九日本韩国精品 | 亚洲精品一区二区三区99 | 日本xxx大片免费观看 | 人妻熟女一区二区aⅴ林晓雪 | 99免费| 免费看欧美黄色片 | 国产精品国产三级国产在线观什 | 台湾亚洲精品一区二区tv | 夜夜躁狠狠躁日日躁视频黑人 | 国产精品福利一区 | 国产精品8 | 日本黄色免费在线观看 | 欧美一级成人 | 91丨porny丨蝌蚪新疆 | 岛国大片在线免费观看 | 波多野结衣aⅴ在线 | 日韩 欧美 亚洲 精品 少妇 | 中文字幕亚洲情99在线 | 风间由美不戴奶罩邻居勃起av | 少妇与大狼拘作爱性a | 美女撒尿毛片视频免费看 | 久久久免费在线观看 | 在线观看精品国产 | 无码无套少妇毛多18p | 国产一级网站 | 四虎国产成人永久精品免费 | 亚洲一二三四区 | 亚洲中文字幕av无码专区 | 81国产精品久久久久久久久久 | 亚洲中文字幕无码一区 | 人妻少妇精品视频专区 | 色播视频在线 | 国产浮力视频 | 婷婷午夜天 | 美女视频黄是免费 | 四虎精品永久在线 | 2019午夜福利不卡片在线 | 91中文在线观看 | 夫妻毛片 | 国产深夜视频在线观看 | 黄色大片a级 | 337p粉嫩日本欧洲亚洲大胆 | 国产精品久久久久久亚洲影视内衣 | 国产精品香蕉在线观看 | 成年人国产 | 欧美精品成人一区二区三区四区 | 久草在线成人 | 久久av一区| 又黄又爽又色视频 | 亚洲成a人片在线观看无码 97se亚洲精品一区 | 亚洲人成网站18禁止人 | 综合一区二区三区 | 99久久久久久久久久久 | 香港三级韩国三级日本三级 | 永久av网站 | 视频一区 视频二区 视频三区 视频四区 国产 | 成年人免费在线观看网站 | 国产成人av一区二区三区不卡 | 岛国av免费在线 | 国产成人精品视频在线 | 国产男女猛烈无遮挡 | 777亚洲熟妇自拍无码区 | 中文字幕乱码一区av久久不卡 | 久久露脸视频 | 亚洲爱爱图 | 久久男人视频 | 特级精品毛片免费观看 | 国产美女精品人人做人人爽 | 亚洲精品一区二区三区影院忠贞 | 国产va亚洲va在线va | 日本内射精品一区二区视频 | 欧美一区二区高清视频 | 蜜桃无码一区二区三区 | 女女av在线 | 97久久久久久久 | 亚洲国产视频一区 | 日韩精品极品视频 | 三级成人网 | 亚洲中文字幕av无码区 | 777午夜福利理伦电影网 | 亚洲成a人v欧美综合天堂麻豆 | 福利国产视频 | 天天爽夜夜爽人人爽曰 | 婷婷色五| 欧美看片 | 婷婷丁香色综合狠狠色 | 青青草91 | 国产精品xxx在线 | 黄色免费av| 偷窥四川少妇野外啪啪 | 91免费大片网站 | 亚洲国产精品成人久久久麻豆 | 狂猛欧美激情性xxxx大豆行情 | 日韩欧美在线视频播放 | 亚洲先锋影音 | 欧美交换| 中国美女一级黄色片 | 久久免费视频在线观看30 | 一卡二卡国产 | 婷婷久久香蕉五月综合加勒比 | 亚洲精品中文字幕乱码三区91 | 91午夜剧场| 久久高清精品 | 欧美午夜精品一区二区蜜桃 | 中文字幕在线视频观看 | 一级日批片 | aaaaa级少妇高潮大片免费看 | 五月婷婷丁香 | 国产精品永久久久 | 亚洲日日射 | 黄色综合网 | 无码精品黑人一区二区三区 | 草的我好爽 | 亚洲成人aaa | 亚洲产国偷v产偷v自拍色戒 | 欧美成人一级 | 成人一级在线 | 偷偷操影院 | 色婷婷av久久久久久久 | 亚欧在线观看 | 成人777| 久久手机免费视频 | 小明看平台日韩综合45页 | 国产精品蜜臀av免费观看四虎 | 日本不卡视频在线观看 | 日本www| www,日韩| 日韩欧美精品在线视频 | 国内精品久久久久影视老司机 | 国产成人综合在线 | 精品视频一区二区三区四区五区 | 国产一区亚洲 | y11111少妇 | 激情二区| 双性受爽到不停的喷水bl | 欧美性受黑人性爽 | 国内精自视频品线一区 | 日本在线 | 中文 | 一级黄色av片 | 1111111少妇在线观看 | 亚洲学生妹高清av | 亚洲色成人网站www永久四虎 | 色窝窝无码一区二区三区成人网站 | 大屁股大乳丰满人妻 | 国产精品v欧美精品v日韩精品v | 手机免费av片 | 亚洲爱爱视频 | 美女mm131爽爽爽免费动视频 | 天堂资源官网在线资源 | 国产黄色精品网站 | 青青草视频免费看 | 久久精品aaaaaa毛片 | 国产福利视频一区二区 | 好屌爽在线视频 | 在线观看的黄色网址 | 91视频免费入口 | 免费观看在线视频www | 欧美色图偷窥自拍 | 极品少妇被啪到呻吟喷水 | 欧美牲交a欧美牲交aⅴ | 欧美精品久久久久久久久大尺度 | 天天爽夜夜爽夜夜爽精品视频 | 日本欧美精91品成人久久久 | 午夜福利无码不卡在线观看 | 三级毛片在线看 | 欧洲一区二区在线观看 | 成人爽a毛片一区二区免费 成人爽爽爽 | 无码一区二区三区视频 | 国产白嫩精品又爽又深呻吟 | 日韩国产亚洲欧美 | 日韩av男人天堂 | 欧美黑人又粗又大又爽免费 | 久久久久久1 | 一区成人| 国产成人无码精品亚洲 | 天天做天天爱天天爽综合网 | 久久久久国产精品 | 成人黄性视频 | 欧美午夜性春猛交xxxx按摩师 | 国产精品午夜福利视频234区 | 国产婷婷一区二区三区 | 泰国性xxx视频| 男人的天堂av社区在线 | 台湾极品xxx少妇 | 美女xx00| 国产福利姬喷水福利在线观看 | 国产欧美一级二级三级在线视频 | 伊人久久大香线蕉综合网站 | 老头糟蹋新婚少妇系列小说 | 麻豆视频一区二区 | 中文字幕亚洲情99在线 | 日本无翼乌全彩j奶无遮挡漫 | 日韩在线免费av | 欧洲做受高潮免费看 | 亚洲色成人网站www永久男男 | 强制高潮xxxxhd日本 | 国产精品毛片va一区二区三区 | 四虎精品成人免费视频 | 亚洲国产精品一区二区久久hs | 欧美视频第二页 | 97无码免费人妻超级碰碰碰碰 | 欧美成人aaaaa | 把女邻居弄到潮喷的性经历 | 欧美日韩国产免费一区二区三区 | 免费日本黄色片 | 男人扒女人添高潮视频 | 狠狠躁夜夜躁人人爽天天不卡软件 | 国产真实乱人偷精品视频 | 夜夜嗨av一区二区三区中文字幕 | 欧美肥老太牲交大战 | 一本色道亚洲精品aⅴ | 亚洲 欧美变态 另类 综合 | 丁香桃色午夜亚洲一区二区三区 | 夜夜高潮夜夜爽高清完整版1 | 一区二区美女视频 | 一本之道综合在线 | 春草 | 国产一级黄色片视频 | 亚洲深夜福利视频 | 国产偷窥盗摄一区二区 | 欧美成人在线免费观看 | 国产精品一久久香蕉国产线看观看 | 国产在线拍揄自揄拍无码 | 成人黄色在线看 | 色噜噜狠狠一区二区三区果冻 | 伊人春色视频 | 99精品热视频 | 不卡日韩| 国产高清第一页 | 小龙女娇喘呻吟啊快点 | 国产成人久久av免费看 | 欧美日韩一区二区在线 | 巨人精品福利官方导航 | 午夜无码一区二区三区在线观看 | 色小说在线观看 | 性中国videossexo另类 | 97超级碰碰人国产在线观看 | 妖精视频一区二区 | 国产女人爽到高潮a毛片 | 熟妇高潮喷沈阳45熟妇高潮喷 | 女同一区二区 | 超薄肉色丝袜一二三四 | 99草草国产熟女视频在线 | 大桥未久在线视频 | 中文字幕ipx696希岛あい | www.15hdav.com| 中国xxxx性xxxx产国 | 一级黄色毛片播放 | 少妇第一次交换又紧又爽 | 亚洲一区日韩 | 成人区人妻精品一区二区不卡网站 | 国产高清免费 | 国产色xx群视频射精 | 久久99青青精品免费观看 | 美女初尝巨物嗷嗷叫自拍视频 | 午夜久久福利 | 久久精品丝袜 | 好爽…又高潮了免费毛片 | 精品亚洲a∨无码一区二区三区 | 久久99亚洲精品久久久久 | 免费毛片一级 | 在线免费精品 | 麻豆成人精品国产免费 | 小柔好湿好紧太爽了国产网址 | videosgratis极品另类灌满高清资源 | 国产精品1区2区3区4区 | 97精品国产手机 | 无码人妻精品一区二区三区东京热 | 久久久精品人妻一区二区三区四 | 韩国主播福利一区二区三区 | 六月婷婷七月丁香 | 欧美亚洲色综久久精品国产 | 一级黄色毛毛片 | 成人美女黄网站色大免费的88 | 激情影院内射美女 | 国产又粗又猛又黄又爽无遮挡 | 亚洲精品欧美综合二区 | 久久久艹 | 中文字幕欧美日韩va免费视频 | 久久精品成人 | 四虎黄色影院 | 亚洲精品岛国片在线观看 | 狠狠操91 | 欧美爱爱小视频 | 天堂69堂在线精品视频软件 | 成人欧美一区二区三区1314 | 成年美女黄网站色大片免费看 | 99资源在线| 日本美女一级视频 | 国产精品成年片在线观看 | av无码免费一区二区三区 | 中文字幕无码不卡免费视频 | 欧美暧暧视频 | 91美女视频 | 女体拷问一区二区三区 | 韩国一级淫片 | 国产口语对白老妇 | 狠狠干夜夜操 | 男女无套免费视频网站 | 91成人国产综合久久精品 | 99热在线这里只有精品 | 亚洲一区精品无码 | 波多野结衣一区二区三区在线观看 | 国产白嫩初高中害羞小美女 | 欧美激情喷水 | 成年人性生活免费视频 | 国产精品拍拍 | 中日韩在线 | 边添小泬边狠狠躁视频 | 波多野吉衣一二三区乱码 | 超碰2023| 欧美性大战xxxxx久久久 | 精品亚洲国产成av人片传媒 | 精品国产免费久久久久久桃子图片 | 国产热re99久久6国产精品 | 国产精品久久国产精麻豆99网站 | 青青草视频在线观看 | 精品无人乱码一区二区 | 成人免费毛片明星色大师 | 国产日韩欧美亚洲精品中字 | 国产精品1区2区3区 国产精品1区2区3区4区 | 亚洲 国产 韩国 欧美 在线 | 在线亚洲+欧美+日本专区 | 亚洲天堂av网站 | 99久久国产综合精品麻豆 | 野战的情欲hd三级 | 最新国产网站 | 女人十八毛片嫩草av | 光棍影院一区二区 | 神马久久av| 福利视频亚洲 | 91中文字幕视频 | 国产亚洲精品久久久久久久 | 青青草国产精品一区二区 | 午夜激情视频网站 | 亚洲一区二区三区无码国产 | yyy6080韩国三级理论 | 小早川怜子一区二区的导演 | 久久久国产免费 | 免费xxxx性欧美18vr | 免费特级毛片 | 在线观看中文字幕视频 | 午夜网站视频 | 波多野结衣一区二区三区高清 | 日韩网站免费观看 | 久草久草| 欧美少妇一区二区 | 日韩国产精品一区 | 精品国产三级a∨在线 | 中国精品18videosex性中国 | 中文字幕精品一区久久久久 | 亚洲香蕉av在线一区二区三区 | 无套内射蜜桃小视频 | 日韩精品无玛区免费专区又长又大 | 中国一级簧色带免费看 | 精品久久久久久成人av | 久久香蕉国产线看观看精品yw | 免费播放毛片精品视频 | 99精品视频国产 | 白嫩少妇喷水正在播放 | 亚洲日本久久 | 午夜寂寞少妇aaa片毛片 | 亚洲欧美日韩国产综合精品二区 | 欧亚在线视频 | 久久一本久综合久久爱 | 两男一女3p揉着她的奶视频 | 含紧一点h边做边走动免费视频 | 亚洲精美视频 | 日本免费黄色网 | 黄色一级影片 | 国产精品爱久久久久久久电影蜜臀 | 超碰成人免费 | 双性受惨叫扩张调教虐宫h 爽插 | 亚洲成a∨人片在无码2023 | 国产精品女主播 | 婷婷在线免费视频 | 久久国产劲爆∧v内射 | 久久久久久久久久一级 | 久久久久爽爽爽爽一区老女人 | 天天综合天天干 | 爱情岛论坛亚洲品质自拍网址大全 | 成年美女黄网站色大免费全看 | 亚洲人成网站精品片在线观看 | 欧美精品三级 | 成人一级免费视频 | 欧美有码视频 | 全黄h全肉1v1各种姿势动漫 | 久久精品夜夜夜夜夜久久 | 午夜精品久久久久 | 色婷婷av一区二区 | 乱人伦人妻中文字幕 | 免费黄色短片 | 久久99国产精品久久99果冻传媒 | 午夜精品一区二区国产 | 亚洲欧美日本国产高清 | 黄色裸体网站 | 极品尤物魔鬼身材啪啪仙踪林 | 韩国三级欧美三级国产三级 | 国产成人精品网站 | 综合久久色 | 亚洲a成人片在线观看 | 小嘀咕视频官网在线观看 | 白浆在线| 亚洲永久精品ww47 | 国产精品久久一区性色av图片 | 亚洲国产成人无码网站大全 | 色婷婷香蕉在线一区 | 日本一区午夜艳熟免费 | 日韩一区二区在线观看视频 | 亚洲最新av在线 | 国产伦久视频免费观看视频 | 一区二区三区视频免费看 | 丰满少妇高潮惨叫视频 | 性色av无码一区二区三区人妻 | 日批| 无码中文字幕乱码一区 | 最近的中文字幕在线看视频 | 亚洲 欧美 清纯 校园 另类 | 影音先锋啪啪看片资源 | 国产小视频免费 | 蜜乳av网站 | 在线视频麻豆 | 他揉捏她两乳不停呻吟微博 | 国产精品日韩精品 | 国产乱人伦偷精精品视频 | 日日夜夜艹 | 91精品国产高潮对白 | 卧室激情呻吟黄暴h文 | 午夜婷婷国产麻豆精品 | 一级片aaaaa 一级片av | 99久久免费看精品国产一区 | 人与禽交av在线播放 | 久久久久久久99 | 欧美在线一 | 四虎国产精品永久在线 | 无码一区二区三区在线观看 | 99久久九九 | 一本一道av无码中文字幕 | 国产无套内射久久久国产 | 亚欧激情乱码久久久久久久久 | 国产丝袜无码一区二区三区视频 | 老熟妇毛片| 少妇愉情理伦片丰满丰满午夜 | 成人动漫在线观看免费 | 国产美女被遭强高潮免费网站 | 美女黄18以下禁止观看 | 久久久久久自慰出白浆 | 久久久av一区二区三区 | 亚洲精品一区二区三区在线 | 日韩综合中文字幕 | 成人在线观看av | 五月婷婷深深爱 | 亚洲综合图片网 | 午夜一二三| 国产精品女同一区二区 | 18视频在线观看网站 | 国产精品污www在线观看 | 天天射狠狠干 | 九色av| 日韩人妻熟女毛片在线看 | 精品免费国产一区二区 | 久久综合给合久久狠狠狠97色 | 欧美日韩爱爱 | 日本阿v视频在线观看 | 美女露隐私免费网站 | 国产一区二区不卡老阿姨 | 97无码人妻福利免费公开在线视频 | 精品无码人妻被多人侵犯av | 久久久久久久岛国免费网站 | 国产精品久久久久久久久久影院 | 97免费视频在线 | 日本va欧美va欧美va精品 | 久久综合久久鬼色 | 亚洲一级影片 |