日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

Rocksdb 与 TitanDb 原理分析 及 性能对比测试

發(fā)布時間:2023/11/27 生活经验 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Rocksdb 与 TitanDb 原理分析 及 性能对比测试 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章目錄

      • 前言
      • Rocksdb的compaction機制
        • compaction作用
        • compaction分類
          • level style compaction(rocksdb 默認進行的compaction策略)
            • level 的文件存儲結(jié)構(gòu)
            • compaction過程
            • compaction中的level target size
          • universal style compaction
          • fifo style compaction
      • Titan相比于rocksdb的核心優(yōu)化
        • key-value 存儲優(yōu)化
        • key-value 區(qū)分邏輯
        • 版本控制
        • GC垃圾回收機制
      • 編譯和安裝
        • Rocksdb
        • TitanDb
      • 測試
        • 使用rocksdb提供的接口編寫測試代碼
        • 編譯鏈接rocksdb和titandb 各自動態(tài)庫,生成二進制文件
        • 測試
      • 參考資料

前言

本文主要針對非關(guān)系型數(shù)據(jù)庫rocksdb以及在rocksdb基礎(chǔ)上所做的一些優(yōu)化的titandb做一個整體的介紹。
從他們編譯,安裝,測試以及titanDb相比于rocksdb優(yōu)化的方面進行一個整體歸納總結(jié)。

Rocksdb的compaction機制

compaction作用

compaction作為rocksdb使用LSM tree管理核心key-value數(shù)據(jù)的一種合并策略,主要是為了保證LSM tree的c0,c1…cn tree不過于冗余,影響讀性能。
關(guān)于LSM tree的介紹可以參考論文《The Log-Structured Merge-Tree (LSM-Tree)》

compaction分類

  • level style compaction 按層級進行合并
  • universal style compaction
  • fifo style compaction
  • none compaction
level style compaction(rocksdb 默認進行的compaction策略)

核心是 將數(shù)據(jù)分成互不重疊的一系列固定大小(例如 2 MB)的SSTable文件,再將其分層(level)管理。

level 的文件存儲結(jié)構(gòu)
  • 數(shù)據(jù)通過內(nèi)存寫到作為buffer的L0中,再持久化到底層的L1-Ln
  • 當需要確認key的位置時,通過二分查找確認key所處的文件,再去具體文件中查找。
    該過程會遍歷整個level集合
  • 每一層level都有target size,compaction的目的是為了限制每一層數(shù)據(jù),且每一層target的增加都是成倍增加
compaction過程
  1. 當level0的數(shù)據(jù)到達時,則會觸發(fā)compaction(level0_file_num_compaction_trigger 表示L0的SST文件個數(shù)達到了觸發(fā)參數(shù))到L1。操作過程會將L0中的file pick出來,以防重疊
  2. 當持續(xù)從L0 compaction到L1時,L1可能會達到target size。此時會從L1中挑選至少1個file,并與L2中的file進行合并,重新寫入L2中
  3. 當L2也達到了 target size,則和之前一樣進行file的合并,寫入到L3
  4. 并發(fā)compaction,通過 max_background_compactions控制可以進行并發(fā)compaction的個數(shù)
  5. L0 – L1 在并發(fā)compaction的層中,該問題可能會是compaction的性能瓶頸。
    優(yōu)化方式:通過設(shè)置 max_subcompactions 參數(shù),來使用多線程方式分割 file range 進行并發(fā)compaction
compaction中的level target size

level_compaction_dynamic_level_bytes 來控制level target size的是固定還是可以動態(tài)進行調(diào)整的

  • level_compaction_dynamic_level_bytes = false 則表示當rocksdb開始加載時,每一層的大小都一定固定了,且運行過程中不會發(fā)生變化。
    eg: rocksdb初始化參數(shù)如下

    max_bytes_for_level_base = 268435456
    level_compaction_dynamic_level_bytes = false
    max_bytes_for_level_multiplier = 10 
    num_levels = 3
    

    則最終的rocksdb每一層的大小為
    以上配置下的各個層級targe size 為:
    L1: 268435456
    L2: 2684354560
    L3: 26843545600

  • level_compaction_dynamic_level_bytes = true 則表示rocksdb每一層的level大小并不是固定的,而是可以動態(tài)進行變化的。
    當前模式下每一層的level size的動態(tài)調(diào)整同樣是基于QOS的思想,我們通過以上compaction的實現(xiàn)可以發(fā)現(xiàn)IO一定是通過level0 flush到底層的L1-LN,那么如果IO密集型業(yè)務下短時間內(nèi)L0增長的sst文件急劇增加且遠大于L1的大小,這個時候如果L1-LN的大小還是固定的,那么IO肯定就阻塞在了從L0-L1之間。
    此時可以通過該參數(shù)讓系統(tǒng)內(nèi)部自動進行每一層的target size的調(diào)整:

    eg: 原來的L1 - L3: 1G,10G,100G
    此時L0短時間內(nèi)的SST文件及占用容量達到了3G,超過了L1 的1G,那么進行動態(tài)調(diào)整后(修改Level的相關(guān)配置參數(shù))的L1-L3的大小變成了:3G,18G,108G

universal style compaction

核心實現(xiàn)同樣是通過 讀放大和空間放大 來降低寫放大,universal comapction

  • 每當某個尺寸的SSTable數(shù)量達到既定個數(shù)時,合并成一個大的SSTable
  • 通過讀放大和空間放大(合并時的臨時數(shù)據(jù)結(jié)構(gòu)占用空間較大)來最小化寫放大

這種方式的讀放大和空間放大較為嚴重,雖然寫放大在一定程度上得到了緩解(同一個sst文件并不會產(chǎn)生多次寫入),但這并不是一個可以代替level方式的策略。

fifo style compaction

fifo style compaction當文件過時時,優(yōu)先壓縮最老的文件,有點像cahce中數(shù)據(jù)的過濾。
所有的SST文件 都先存儲在L0中,當L0中的文件總大小超過了CompactionOptionsFIFO::max_table_files_size,則會選擇最老的文件進行刪除,所以它的key-value的數(shù)據(jù)從來不會復寫,也就是寫放大系數(shù)一直都是1。
當然這種方式有一個非常嚴重的問題是:核心key-value數(shù)據(jù)的刪除不會告知給用戶!!

這可嚴重影響系統(tǒng) 的可靠性啊。

Titan相比于rocksdb的核心優(yōu)化

通過對Rocksdb的compaction過程的分析,我們發(fā)現(xiàn)rocksdb默認使用的level 策略存在寫放大的情況,且在正常IO的時候compaction是在后臺進行的,這個時候顯然compaction和上層IO產(chǎn)生競爭,從而影響整體的rocksdb寫性能。

此時Titan借助論文wisckey提出的key-value分離存儲的思想進行了一系列相關(guān)的優(yōu)化。

具體的優(yōu)化方面如下幾個方面:

key-value 存儲優(yōu)化

如下圖為titan中寫請求闡述的數(shù)據(jù)存放方式

在LSM管理的SST文件之下多了一種blob結(jié)構(gòu),用來存儲value數(shù)據(jù),具體的blobfile結(jié)構(gòu)如下

其中:

  • blob record 有序得保存了key-value的鍵值對,且key是從sst中進行的一份拷貝,用來和保存和value的映射,方便后續(xù)進行過時key的垃圾回收, 所以這里的存儲存在一些寫放大。不過,key本身數(shù)據(jù)量比較小,并不會有太激烈的IO資源競爭。
  • meta block主要是為了可擴展性,來存儲了當前blobfile的一些屬性信息。
  • meta index則主要是記錄metablock的索引信息,方便快速查找meta block。

key-value 區(qū)分邏輯

傳統(tǒng)的rocksdb在進行創(chuàng)建sorted string table(SST)文件的時候也是通過工廠函數(shù)模式進行table文件的實例化,這里titan也是借用該設(shè)計模式進行 key-value的分離實現(xiàn),邏輯實現(xiàn)如下:

  • 當value-size >= min_blob_size的時候,將整個key-value存放在blobfile之中,同時創(chuàng)建一個key-index的結(jié)構(gòu),存放在SST中,用來索引該key-value
  • 反之,將整個key-value 存放在SST文件中

版本控制

因為多了一種數(shù)據(jù)結(jié)構(gòu),那么在分布式存儲系統(tǒng)中,即要保證在上層應用并發(fā)add或者delete的時候仍然能夠?qū)ν馓峁┮恢滦缘脑L問服務。此時,blob file也要加入到系統(tǒng)的版本控制中,這里主要用的是Multi-version Concurrency Control (MVCC)多版本控制的思想。

通過頭尾相對的雙向鏈表進行版本文件的管理,同時設(shè)置一個versionSet的數(shù)據(jù)結(jié)構(gòu)來管理所有的文件,同時增加一個current指針,一直指向最新的version版本。通過這種版本控制的方式,達到不需要對文件加鎖,即可在并發(fā)add/delete的時候?qū)ν馓峁┮恢滦苑铡?/p>

GC垃圾回收機制

titan的GC機制主要有兩個功能進行協(xié)助:

  • BlobFileSizeCollector
    這是一種屬性收集器,用來從對應的SST文件中SST屬性信息,最后收集到的屬性集叫做BlobFileSizeProperties
    收集前的表格和收集后的BlobFileSizeProperties表格如下:

    對于SST的表格內(nèi)容(大括號里面的內(nèi)容):第一列表示blob file ID ,第二列表示blob record在blob file中的偏移地址,第三列表示blob record的大小。
    對于BlobFileSizeProperties表格內(nèi)容如下:第一列表示blob fileID,第二列表示數(shù)據(jù)的大小。
  • EventListener
    在compaction的時候,rocksdb本身會丟掉一部分舊數(shù)據(jù)來釋放空間。同樣,在titandb中,compaction之后,titan中的部分blobfile存儲的數(shù)據(jù)可能已經(jīng)過時。此時,titan通過監(jiān)控compaction的事件來觸發(fā)自身的GC機制。
    這里GC做的內(nèi)容是,通過對比compaction輸入,輸出前后的BlobFileSizeProperties表格內(nèi)容變化的情況,來決定哪一些數(shù)據(jù)可以進行丟棄。過程如下:

    可以發(fā)現(xiàn)輸入輸出前后:
    blobfile 1: 從size-1536變?yōu)榱藄ize:512,那么表示blobfile1可以丟棄1024大小的內(nèi)容
    blobfile 2: 從size-1024 變成了沒有輸出,那么表示blobfile2可以完全丟棄
    blobfile 3: 同blobfile2,也可以完全丟棄

對于每一個有效的blobfile,titan會在內(nèi)存中維護一個有效的變量來記錄當前blob file可丟棄的大小。當進行compaction的時候,變量會隨著相應的blobfile的變化進行累加(以上event listener)。當GC開始的時候,會從累計的blobfile可丟棄的變量中挑選一個最大的blobfile最為可丟棄的候選人。

為了降低寫放大,titan盡可能減少GC所造成的IO,使用可控的配置來控制GC的寫放大,當blobfile挑選出來作為可丟棄的候選者的時候需要滿足一定的大小才能夠真正被丟棄。

這里使用的GC實現(xiàn)算法入下:

  • 從blobfile中隨機選取一部分數(shù)據(jù)A,起其size 為a
  • 遍歷A中所有的key, 使用d 來累加所有過時的key所代表的blob record(我們上面說過blobfile的結(jié)構(gòu),blob reocord代表的是key 對應的data的大小)
  • 計算比例 r = d / a,如果r >= discardable_ratio,即認為當前過時的key已經(jīng)超過了一定的比例,那么就在對應的blobfile上進行GC,否則不進行GC。

綜上為titanDb在rocksdb基礎(chǔ)之上所做的一些優(yōu)化以及優(yōu)化產(chǎn)生的周邊開發(fā)。顯然,key-value的分離存儲和管理是核心優(yōu)化點,解決了rocksdb 原生compaction帶來的大量的value寫放大問題。
且通過后續(xù)對應的測試,也確實發(fā)現(xiàn)了big value場景下,寫性能確實有2-3倍的優(yōu)化提升。

后續(xù)將深入titan的核心實現(xiàn),詳細分析研究titan的實現(xiàn)邏輯,從而應用到現(xiàn)有的業(yè)務上。

編譯和安裝

Rocksdb

基本變異過程可以參考官方給的安裝步驟,不過坑比較多,可以將一下步驟和官方給的步驟結(jié)合起來看。

  1. 確認系統(tǒng)編譯器版本gcc -v,建議版本在gcc 4.8.5以上,否則變異出來最新的代碼會缺少一些glibc的屬性信息。
    這里如果發(fā)現(xiàn)系統(tǒng)gcc版本確實比較低,可以下載gcc較高版本編譯安裝一下,我這里選擇的是gcc 5.3,詳細可以參考gcc編譯安裝

    這里需要注意:

    • 如果個人不想安裝的gcc在系統(tǒng)默認的目錄下,且gcc版本變更為可配置的,可以在gcc源碼生成makefile的那一步進行安裝的路徑指定(否則系統(tǒng)默認會安裝到/usr/local下):
      ./configure --prefix=/xxxx
    • 當GCC 編譯安裝在指定的目錄之后可以可以通過系統(tǒng)變量加載glibc庫和我們編譯好的gcc版本
      修改當前用戶的.bashrc文件(root用戶的在/etc/.bashrc,個人用戶直接編輯~/.bashrc)
      增加如下內(nèi)容:
      export CC=/xxx/gcc-5.3/bin/gcc #makefile中的gcc的路徑
      export CXX=/xxx/gcc-5.3/bin/g++ #makefile中的g++路徑
      export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/xxx/gcc-5.3/lib64#指定glibc的庫,使用當前版本編譯器的庫
  2. gflags安裝,gflags是谷歌提供的一些第三方庫,這里rocksdb部分功能需要使用到。
    該步驟的安裝可以參考:gflags安裝
    a. git clone https://github.com/gflags/gflags.git
    b. cd gflags
    c. mkdir build && cd build#以下DCMAKE_INSTALL_PREFIX 之后的路徑為自己想要安裝的路徑,如果有root權(quán)限且可以安裝到系統(tǒng)目錄下,那么可以不用指定prefix選項
    d. cmake .. -DCMAKE_INSTALL_PREFIX=/xxx -DCMAKE_BUILD_TYPE=Release e. make && make install	#增加gflags的include 和 lib庫的路徑到系統(tǒng)庫下面,如上面未指定路徑,則系統(tǒng)默認安裝在
    #/usr/local/gflags
    f. 編輯當前用戶下的bashrc,添加如下內(nèi)容:
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/xxx/gcc-5.3/lib64:/xxx/gflags/lib
    export LIBRARY_PATH=$LIBRARY_PATH:/xxx/gflags/include
    
  3. 安裝snappy
    sudo yum install snappy snappy-devel
  4. 安裝 zlib
    yum install zlib zlib-devel
  5. 安裝 bzip2
    yum install bzip2 bzip2-devel
  6. 安裝lz4
    yum install lz4-devel
  7. 安裝zstardard
    wget https://github.com/facebook/zstd/archive/v1.1.3.tar.gz
    mv v1.1.3.tar.gz zstd-1.1.3.tar.gz
    tar zxvf zstd-1.1.3.tar.gz
    cd zstd-1.1.3
    make && sudo make install
    
    以上已經(jīng)將rocksdb以及titandb所需要的一些系統(tǒng)庫安裝完成,接下進行rocksdb的安裝
  8. rocksdb源碼下載:
    git clone https://github.com/facebook/rocksdb.git
    或者直接在以上github鏈接中下載對應的源碼包即可
    安裝,可以參考官方給的安裝過程rocksdb官網(wǎng)安裝過程
    cd rocksdb 
    make static_lib  #編譯rocksdb的靜態(tài)庫
    cd example && make all
    
    此時成功之后,可以看到expample下生成了官方所給出的一些rocksdb的測試樣例。

TitanDb

以上rocksdb的一些插件都安裝完成且成功之后,記錄下gflags是安裝路徑,接下來進行TitanDbb的安裝。Titan的官方安裝過程如下titan安裝

#titanDb屬于rocksdb 6.4版本基礎(chǔ)上的一個插件,所以編譯時仍然需要rocksdb對應代碼的支持
#下載rocksdb對應版本的代碼
git clone https://github.com/tikv/rocksdb pingcap_rocksdbgit clone https://github.com/tikv/titan.git
cd titan && mkdir build && cd build#編譯時需制定我們剛才下載好的titan使用的rocksdb版本代碼,在pingcap_rocksdb目錄下
#(不能使用最新的rocksdb代碼,否則部分文件會缺失
#同時還要指定我們編譯好的glfags 安裝的路徑
cmake .. -DROCKSDB_DIR=../pingcap_rocksdb -DCMAKE_PREFIX_PATH=/xxx/gflags -DCMAKE_BUILD_TYPE=Releasemake -j #編譯

測試

使用rocksdb提供的接口編寫測試代碼

目標:測試rocksdb的寫性能。
需求子功能如下:

  • 可以指定寫請求的輸入
  • key的選擇范圍 可以輸入(測試熱點讀的性能),默認(2^64)范圍內(nèi),key的生成在指定的范圍內(nèi)是隨機的
  • value的size可以輸入,可以測試不同大小的value場景下寫的性能
  • compaction線程數(shù)目可以指定

編寫測試代碼如下 rocksdb_titan_test.h

#include <ctime>
#include <cstdio>
#include <cstdlib>
#include <cassert>#include <sys/time.h>
#include <unistd.h>
#include <signal.h>#include <iostream>
#include <string>
#include <vector>#include "rocksdb/db.h"using namespace std;static long db_count = 3; //生成三個db數(shù)據(jù)庫,使用三個字進程分別向三個db數(shù)據(jù)庫壓測數(shù)據(jù)
static long test_count;
static long key_range;static long compaction_num = 32; //指定compaction的線程數(shù),默認是32個
static long value_size = 100; //指定value_size的大小,默認是100KBstatic long db_no = -1;static long parse_long(const char *s)
{char *end_ptr = nullptr;long v = strtol(s, &end_ptr, 10);assert(*s != '\0' && *end_ptr == '\0');return v;
}static double now()
{struct timeval t;gettimeofday(&t, NULL);return t.tv_sec + t.tv_usec / 1e6;
}static string long_to_str(long n)
{char s[30];sprintf(s, "%ld", n);return string(s);
}/*初始化各個參數(shù) 以及 生成子進程來負責分別向各自的數(shù)據(jù)庫進行壓測*/
static void init(int argc, char *argv[])
{assert(argc == 5);test_count = parse_long(argv[1]);key_range = parse_long(argv[2]);value_size = parse_long(argv[3]);compaction_num = parse_long(argv[4]);/*如果key輸入為0,那么key的范圍為2^62次方,即完全的隨機key寫 */if (key_range == 0){key_range = 1L << 62;}assert(db_count > 0 && db_count <= 20 && test_count > 0 && key_range > 0 && value_size > 0 && compaction_num >= 0);for (long i = 0; i < db_count; ++ i){pid_t pid = fork();assert(pid >= 0);if (pid == 0){//childsignal(SIGHUP, SIG_IGN); //接收到兩個終止信號,則子進程終止運行db_no = i;break;}}if (db_no < 0){//parentsleep(1);exit(0);}srand((long)(now() * 1e6) % 100000000);
}/*在給定的key的范圍內(nèi),隨機生成key*/
static string rand_key()
{char s[30];unsigned long long n = 1;for (int i = 0; i < 4; ++ i){n *= (unsigned long long)rand();}sprintf(s, "%llu", n % (unsigned long long)key_range);string k(s);return k;
}/*使用模版函數(shù)來實例化Rocksdb和titanDb*/
template <class DB, class OPT>
static void do_test(const string &db_name)
{OPT options;options.create_if_missing = true;options.stats_dump_period_sec = 30;Options.use_fsync=true; //初始化db時使用SYNC寫,否則數(shù)據(jù)會通過文件系統(tǒng)寫入到pagecache中就返回了。if(compaction_num == 0) {options.compaction_style = kCompactionStyleNone;// 如設(shè)置的compaction線程數(shù)為0,則需制定None參數(shù)來禁止compaction} else {Options.max_background_compactions = compaction_num;  //否則設(shè)置具體線程數(shù)}string db_full_name = db_name + "_" + long_to_str(db_no); //組合各個子db數(shù)據(jù)庫的名稱printf("%s: db_count=%ld, test_count=%ld, key_range=%ld\n", db_full_name.c_str(), db_count, test_count, key_range);/*rocksdb自身的open函數(shù),打開./db/rocksdb_1 或者 ./db/titan_1作為db目錄*/DB *db;rocksdb::Status status = DB::Open(options, string("./db/") + db_full_name, &db);if (!status.ok()){cerr << "open db failed: " << status.ToString() << endl;exit(1);}const size_t long_value_len = 5 * 1024 * 1024;string long_value(long_value_len, 'x');assert(long_value.size() == long_value_len);for (size_t i = 0; i < long_value_len; ++ i){long_value[i] = (unsigned char)(rand() % 255 + 1);}double ts = now();const size_t value_slice_len = value_size * 1024; //每一個value的分片大小for (long i = 1; i <= test_count; ++ i){rocksdb::Slice rand_value(long_value.data() + rand() % (long_value_len - value_slice_len), value_slice_len);/*Put請求*/rocksdb::Status s = db->Put(rocksdb::WriteOptions(), rand_key(), rand_value);if (!s.ok()){cerr << "Put failed: " << s.ToString() << endl;exit(1);}/*每寫10000 key-value到數(shù)據(jù)庫,計算耗時和寫入性能*/if (i % 10000 == 0){double tm = now() - ts;printf("%s: time=%.2f, count=%ld, speed=%.2f\n", db_full_name.c_str(), tm, i, i / tm); fflush(stdout);}}printf("\n");sleep(30);   //等待最后的stat dump輸出delete db;
}

rocksdb_test.cpp

#include "rocksdb_titan_test.h"int main(int argc, char *argv[])
{init(argc, argv);do_test<rocksdb::DB, rocksdb::Options>("rocksdb");
}

titan_test.cpp

#include "titan/db.h"
#include "rocksdb_titan_test.h"int main(int argc, char *argv[])
{init(argc, argv);do_test<rocksdb::titandb::TitanDB, rocksdb::titandb::TitanOptions>("titan");
}

編譯鏈接rocksdb和titandb 各自動態(tài)庫,生成二進制文件

將以上三個文件放在同一目錄下db_code,且在當前目錄下編寫用于編譯鏈接庫的Makefile

PS:makefile中的一些路徑(g++/gflags)需要和之前編譯rocksdb/titandb時的路徑一致

#高版本g++所在路徑
CC = /xxx/gcc-5.3/bin/gcc#指定編譯時所需要的庫
CFLAGS = -std=gnu++11 -Wall -O2 -fno-strict-aliasing -fPIC -pthread -rdynamic#指定rocksdb和titandb 運行時需要依賴的庫
LDFLAGS = -lz -lbz2 -ldl -lrt -llz4 -lsnappyROCKSDB_DIR = /home/xxx/rocksdb_vs_titan/rocksdb
ROCKSDB_INCLUDE_FLAGS = -I$(ROCKSDB_DIR)/include
ROCKSDB_LIB = $(ROCKSDB_DIR)/librocksdb.arocksdb:$(CC) $(CFLAGS) $(R_INCLUDE_FLAGS) -o rocksdb_test rocksdb_test.cpp $(R_LIB) $(LDFLAGS)TITANR_DIR = /home/xxx/rocksdb_vs_titan/rocksdb_vs_titan/pingcap_rocksdb
TITAN_DIR = /home/xxx/rocksdb_vs_titan/rocksdb_vs_titan/titan
TITAN_INCLUDE_FLAGS = -I$(TITAN_DIR)/include -I$(TITANR_DIR)/include -I$(TITANR_DIR)
TITAN_LIB = $(TITAN_DIR)/build/libtitan.a $(TITAN_DIR)/build/rocksdb/librocksdb.atitan:$(CC) $(CFLAGS) $(T_INCLUDE_FLAGS) -o titan_test titan_test.cpp $(T_LIB) $(LDFLAGS)all: rocksdb titan

編譯:
在當前目錄下db_code執(zhí)行:
make rocksdb_test 來生成rocksdb的測試二進制文件 rocksdb_test
在當前目錄下db_code執(zhí)行:
make titan_test 生成titandb的測試二進制文件 titan_test

或者執(zhí)行make all生成兩個測試的二進制文件

測試

  • 尋找一塊磁盤(建議ssd),格式化成文件系統(tǒng)
    mkfs.xfs /dev/sdd
  • 掛載進入到文件系統(tǒng)
    mount /dev/sdd /db_test && cd /db_test
  • 拷貝我們編譯好的兩個二進制文件到當前目錄,創(chuàng)建db文件夾
  • 運行方式如下:
    ./rocksdb_test 500000 0 8 32
    測試五十萬value大小為8KB隨機key寫性能,后臺設(shè)置compaction線程個數(shù)為32

輸出如下:

Thu May 14 23:03:14 2020
rocksdb_1: db_count=3, test_count=500000, key_range=4611686018427387904
Thu May 14 23:03:14 2020
rocksdb_2: db_count=3, test_count=500000, key_range=4611686018427387904
Thu May 14 23:03:14 2020
rocksdb_0: db_count=3, test_count=500000, key_range=4611686018427387904
Thu May 14 23:03:14 2020rocksdb_3: time=275.50, count=30000, speed=108.89
Thu May 14 23:03:14 2020rocksdb_2: time=277.97, count=30000, speed=107.92
Thu May 14 23:03:14 2020rocksdb_0: time=280.40, count=30000, speed=106.99
Thu May 14 23:03:14 2020rocksdb_3: time=282.53, count=30000, speed=106.18
Thu May 14 23:03:14 2020rocksdb_2: time=358.02, count=40000, speed=111.73

同時在當前目錄的db目錄下可以看到對應的rocksdb數(shù)據(jù)庫相關(guān)文件已經(jīng)生成

#查看當前目錄下的db目錄
ls db/
rocksdb_0 rocksdb_1 rocksdb_2#查看rocksdb_0目錄可以看到已經(jīng)生成的sst和manifest文件
ls rocksdb_0
001303.sst
001304.log
001305.sst
CURRENT
IDENTITY
LOCK
LOG
MANIFEST-000009
OPTIONS-000005

可以通過LOG文件,分析rocksdb的寫過程 + compaction過程以及產(chǎn)生的寫放大的詳細情況。

通過以上方式分別在不同value size 和compaction線程數(shù)的情況下對rocksdb和titan Db的性能進行測試。目前僅僅測試了寫,發(fā)現(xiàn)titanDb的隨機key以及big value情況下的寫性能優(yōu)于rocksdb 2-3倍。
具體原因可以參考以上titanDB相對于rocksdb的核心優(yōu)化點。

參考資料

wisckey論文:https://www.usenix.org/system/files/conference/fast16/fast16-papers-lu.pdf
titanDb設(shè)計: https://pingcap.com/blog/titan-storage-engine-design-and-implementation/
titanDb代碼: https://github.com/tikv/titan
rocksdb設(shè)計: https://github.com/facebook/rocksdb/wiki
rocksdb代碼: https://github.com/facebook/rocksdb

總結(jié)

以上是生活随笔為你收集整理的Rocksdb 与 TitanDb 原理分析 及 性能对比测试的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

中国一 片免费观看 | 成年人在线观看免费视频 | 在线看黄色的网站 | 国产精品欧美久久久久三级 | 久草在线资源网 | 日韩羞羞 | 狠狠色噜噜狠狠狠 | 天天久久综合 | 国产精品欧美久久久久无广告 | 欧美亚洲一级片 | 九九有精品 | 午夜视频不卡 | 狠狠操狠狠 | 天堂中文在线播放 | 日韩一区精品 | 中文字幕免费国产精品 | 国产精品久久久久久久久久久久午夜片 | 色综合久久88 | 国产精品免费在线观看视频 | 成年性视频| 福利一区二区三区四区 | 久久少妇 | 天天骚夜夜操 | 亚洲爱视频 | 996久久国产精品线观看 | 国产成人精品亚洲a | 国产精品自产拍在线观看网站 | 国产成人精品久久久 | 国产97免费 | 国产成人精品亚洲日本在线观看 | 午夜性生活片 | 久久久免费视频播放 | 欧美日韩高清在线 | 成人毛片久久 | 黄网站a | 在线观看aa | 成人av在线直播 | 日韩在线电影一区二区 | 激情电影影院 | 亚洲国产精品电影 | 成人午夜电影网 | 日韩视频三区 | 亚洲精品在线视频播放 | www.成人精品 | 又色又爽的网站 | 日本特黄特色aaa大片免费 | 91高清一区| 亚洲高清在线观看视频 | 欧美另类巨大 | 国产成人精品综合久久久 | 久久精品国产v日韩v亚洲 | 黄色国产高清 | av电影中文 | 日韩网站免费观看 | 福利网在线 | 国产精品毛片一区二区在线看 | 亚洲视频免费在线 | 亚洲乱码精品久久久久 | 欧美日韩国产伦理 | 夜添久久精品亚洲国产精品 | 亚洲精品乱码久久久久久蜜桃欧美 | 在线观看91网站 | 狠狠操综合网 | 综合天天| 久久99久久99精品 | 国产小视频在线免费观看视频 | 狠狠色噜噜狠狠狠合久 | 日本bbbb摸bbbb | 亚洲h在线播放在线观看h | 国产91亚洲 | www.色就是色 | 在线免费观看国产 | 高清av中文在线字幕观看1 | 亚洲精品午夜视频 | 美女视频黄免费 | 日韩欧美高清不卡 | a在线观看国产 | 久久综合狠狠综合久久激情 | 性色av免费在线观看 | 久久综合偷偷噜噜噜色 | 97视频一区| 亚洲免费成人av电影 | 在线观看日韩一区 | 韩国一区在线 | 日韩午夜网站 | 91在线永久 | av免费在线观看网站 | 国产成人一级电影 | 操操操com| 国产老熟 | 97av在线视频免费播放 | 深夜福利视频在线观看 | 天天躁日日躁狠狠躁 | 亚洲国产欧洲综合997久久, | 美女露久久 | 亚洲精品麻豆视频 | 国产福利在线免费 | 在线看v片成人 | 97视频在线观看免费 | 香蕉影院在线观看 | 国产精品毛片久久久久久久 | 欧美另类高清 videos | 国内亚洲精品 | 国产一区二区电影在线观看 | 日韩一级精品 | 狠狠干干 | 色综合久久久久久久久五月 | 亚洲视频免费在线观看 | 欧美一区二区三区在线观看 | 日韩精品一区二区在线观看 | 久久国产精品久久久 | 欧美aa在线观看 | 又黄又爽又色无遮挡免费 | 天天干夜夜爱 | 天天做综合网 | 国产一区国产二区在线观看 | 久插视频| 久久er99热精品一区二区三区 | 国产日产欧美在线观看 | 国产99久久精品一区二区300 | 国产午夜精品一区二区三区嫩草 | 久久久亚洲麻豆日韩精品一区三区 | 国产精品99久久久久久宅男 | 天堂成人在线 | 亚洲高清av在线 | 色婷婷激情电影 | 国产91精品一区二区麻豆网站 | 成人免费视频播放 | 九九激情视频 | 久久久久伊人 | 日韩在线色 | 久久不射电影院 | 97国产精品久久 | 日韩美视频 | 亚洲精品久久久久久久不卡四虎 | 色网站在线 | 日本久久高清视频 | www免费黄色| 国产日韩精品在线观看 | a级国产毛片 | 天天射天天添 | 国产 日韩 在线 亚洲 字幕 中文 | 日本韩国中文字幕 | 久久看片 | 亚洲专区在线播放 | 亚洲国产日韩一区 | www.夜夜草| 成人久久网 | 亚洲精品看片 | 91九色在线 | 精品视频免费久久久看 | 中文字幕频道 | 在线免费观看不卡av | 亚洲欧美成人综合 | 一区在线免费观看 | 日韩国产精品久久久久久亚洲 | 久草在线看片 | 91在线免费观看网站 | 超碰人人做 | 亚洲成av人片在线观看 | 精品国内自产拍在线观看视频 | 日韩在线免费小视频 | 91视频在线自拍 | 99视频网站 | 成人高清在线 | 开心综合网 | 免费观看黄色12片一级视频 | 在线看小早川怜子av | 国产伦理久久精品久久久久_ | 日韩在线观看影院 | 91久久偷偷做嫩草影院 | 天天综合狠狠精品 | 午夜婷婷在线观看 | 午夜狠狠操 | 激情五月婷婷综合网 | 亚洲色五月 | 午夜精品一区二区三区在线视频 | 九月婷婷人人澡人人添人人爽 | 久久一区二 | 中文字幕免费高清av | 精品视频在线免费 | 中文字幕在线播放av | 国产精品色婷婷 | 欧美疯狂性受xxxxx另类 | 一级欧美黄 | 中文字幕你懂的 | 黄色在线免费观看网址 | 亚洲在线视频观看 | 国产精品一区二区果冻传媒 | 国产99久久久国产精品免费看 | 成人久久精品视频 | 亚洲精品tv久久久久久久久久 | 久草网在线视频 | 国偷自产视频一区二区久 | 色婷婷一区 | 久久精品三 | 久久精品99国产精品亚洲最刺激 | 在线免费精品视频 | 夜夜夜精品 | 激情伊人五月天久久综合 | 偷拍福利视频一区二区三区 | 中文字幕免费在线 | 久久精品www人人爽人人 | 91视频久久| 免费看国产曰批40分钟 | 日日夜夜天天射 | 中文字幕乱视频 | 91资源在线播放 | 91免费看片黄 | 久久深夜 | 国产精品久久久久久久久久尿 | 日产乱码一二三区别在线 | 综合色站导航 | 欧美国产高清 | 免费av小说 | 91免费高清观看 | av在线播放网址 | 日韩精品一区二区在线视频 | 色噜噜在线观看 | 国产日韩欧美在线 | 国产精品永久久久久久久久久 | 久久亚洲免费视频 | 国产日韩欧美网站 | 久久永久视频 | www免费| 免费高清无人区完整版 | 欧洲av不卡| 国产一区在线观看免费 | 日日干日日 | 免费看国产曰批40分钟 | 成人av影院在线观看 | 射射色 | 夜夜操天天操 | 亚洲午夜精品一区 | 99久国产 | 午夜黄色大片 | 久久综合九色综合欧美就去吻 | 日本久久影视 | 中文字幕专区高清在线观看 | www免费| 亚洲视频大全 | 精品久久久久久久久久久久 | 日韩中文免费视频 | 国产午夜在线 | 中文字幕在线观看视频网站 | 亚洲精品高清在线观看 | 91欧美国产 | 国产精品免费久久 | 亚洲一二视频 | 人人爽人人 | 久久99国产精品久久 | 三级av片| 日韩欧美在线一区二区 | 国内精品久久久久久久影视简单 | 中文字幕亚洲欧美日韩 | 国产一区二区久久久 | 欧美视频www | 91片黄在线观看动漫 | 天躁狠狠躁 | 国产又粗又猛又黄视频 | 网站你懂的| 欧美日韩国产在线一区 | 激情小说 五月 | 国产在线小视频 | 中文字幕亚洲欧美日韩 | 性色av免费在线观看 | 成全免费观看视频 | 日日草天天干 | 色婷婷六月天 | av女优中文字幕在线观看 | 91精选| 久久精品79国产精品 | 91久色蝌蚪| 久久大香线蕉app | 国产精品成人一区 | 日韩偷拍精品 | 免费观看一区二区 | 热久久视久久精品18亚洲精品 | 日本中文字幕在线 | 天天干亚洲 | 黄色av免费看 | 亚洲精选在线观看 | 在线视频观看成人 | 成人网大片| 在线观看v片| 六月丁香婷婷久久 | 日韩精品极品视频 | 玖玖玖在线观看 | 国产精品久久久久久一区二区 | 国产精品三级视频 | 区一区二区三在线观看 | 2022中文字幕在线观看 | 九九久久影视 | 亚洲精品视频网 | 国产一区精品在线观看 | 精品国产一区二区三区av性色 | 亚洲精品美女在线 | 91片黄在线观 | 久久网站av | 日韩欧美电影网 | 美女网站一区 | 国产一二三四在线视频 | 欧美做受高潮1 | 久久久久久久综合色一本 | 美女网站视频色 | 国产精品久久久久久吹潮天美传媒 | 狠狠的干狠狠的操 | 成人羞羞免费 | 免费观看国产精品视频 | 人人添人人澡人人澡人人人爽 | 中文字幕资源网在线观看 | 免费看三级网站 | 亚洲播播 | 国内精品久久久久久久久久清纯 | 欧美大片第1页 | 久久久精品网站 | 精品专区 | 91精品对白一区国产伦 | 国产成人精品一区二区三区免费 | 久久久免费电影 | 日韩视频中文字幕 | 成人中文字幕av | www.伊人网 | 久久久久久久免费 | 在线观看日本高清mv视频 | 毛片二区| 一区二区三区电影在线播 | 欧美黑吊大战白妞欧美 | 国产欧美精品一区二区三区 | 麻豆91精品| 91黄视频在线观看 | av亚洲产国偷v产偷v自拍小说 | 久久这里只有精品23 | 成全在线视频免费观看 | 日韩av电影手机在线观看 | 婷婷精品国产欧美精品亚洲人人爽 | 久久亚洲欧美日韩精品专区 | 色婷婷www| 99热99热| 亚洲精品国产品国语在线 | 91男人影院 | 91网页版免费观看 | 人人澡超碰碰 | 美女搞黄国产视频网站 | 亚洲精品中文字幕在线 | 国产在线观看一 | 久久久人 | 一区二区三区免费 | 国产免费xvideos视频入口 | 亚洲国产手机在线 | 色综合久久88色综合天天 | 久久精品视频网 | 亚洲久在线 | 欧美高清视频不卡网 | 蜜臀av性久久久久蜜臀aⅴ四虎 | 伊人网综合在线观看 | 精品久久久久久久久久 | 五月激情视频 | 国产精品一区二区在线观看免费 | 在线国产欧美 | 久久黄网站| 久久午夜剧场 | 青青河边草免费直播 | 色综合久久久久综合体 | 成人教育av | 国产在线2020 | 亚洲高清视频一区二区三区 | 欧美一级裸体视频 | 亚洲精品456在线播放 | 在线不卡a | 国产精品嫩草影院123 | 色午夜 | 免费特级黄色片 | 蜜臀av性久久久久av蜜臀妖精 | 91中文字幕在线视频 | 激情久久网 | 国产一级a毛片视频爆浆 | 国产自产在线视频 | 人人爽人人爱 | 国产精品高潮久久av | 日韩aⅴ视频 | 中文字幕免费在线看 | 国产精品av在线 | 人人爽人人av | 欧美极品xxxx | 成年人三级网站 | 日本一区二区三区免费看 | 欧美日韩国产免费视频 | 欧美日韩免费观看一区二区三区 | 色综合激情久久 | 欧美成人aa| 日韩久久精品一区二区 | 中中文字幕av在线 | 在线黄色国产电影 | 国产超碰97 | 亚洲午夜精品在线观看 | 97热在线观看 | 四虎在线永久免费观看 | 亚洲精品午夜aaa久久久 | 日韩免费在线一区 | 999久久久久久久久久久 | 国产精品一区二区久久精品爱涩 | 高清视频一区 | 欧美黑人性爽 | 亚洲 中文 在线 精品 | 国产视频在线播放 | 99婷婷狠狠成为人免费视频 | 97狠狠干| 视频 国产区 | 国产午夜精品视频 | 日韩免费高清 | 超碰在线免费福利 | 国产又粗又猛又爽又黄的视频先 | 国产精品12 | 一区二区三区播放 | www.69xx | 99久久精品国产毛片 | 在线国产日本 | 中文字幕第一 | 中文字幕亚洲字幕 | 天天射天天拍 | 久久天天躁狠狠躁亚洲综合公司 | 亚洲精品一区二区三区四区高清 | 日日爱视频 | 成人亚洲网 | 日本中文一级片 | 欧美日韩不卡一区 | 亚洲全部视频 | 久久99热这里只有精品 | 四虎影视8848aamm| 亚洲高清网站 | www.香蕉 | 6699私人影院 | 国产一区二区在线观看免费 | 午夜精品福利影院 | 精品中文字幕在线播放 | 日韩久久精品 | 亚洲黄色一级视频 | 四虎影视成人永久免费观看亚洲欧美 | 最近中文字幕免费视频 | 成人国产一区二区 | 国产精品久久久久久久久久 | 欧美成人xxx | 免费视频xnxx com | 99久久精| 免费观看丰满少妇做爰 | 国产精品观看在线亚洲人成网 | 国产小视频福利在线 | 美女一区网站 | 波多野结衣在线观看视频 | 国产精品成人av电影 | 久久免费视频精品 | 久草在线在线精品观看 | 久久国产精品99精国产 | 精品亚洲一区二区三区 | 日日夜夜狠狠干 | 超碰97网站| av看片在线 | 久久成人亚洲欧美电影 | 91私密视频 | 国产精品一区二区三区观看 | 亚洲国产影院av久久久久 | 精品国产乱码久久 | 欧美精品一区二区三区四区在线 | 婷婷午夜 | 亚洲桃花综合 | 亚洲免费色 | 中文字幕一区二区三区四区视频 | 久久精品99 | 亚洲欧美色婷婷 | 999视频精品 | 激情综合网天天干 | 久久久精品国产一区二区电影四季 | 视频在线99re | 91亚·色| 日韩精品久久一区二区三区 | 亚洲成人av在线电影 | 51久久成人国产精品麻豆 | 高清av免费一区中文字幕 | 人人插人人爱 | 深爱激情久久 | 在线播放国产一区二区三区 | 一区二区三区免费在线观看视频 | 欧美日韩另类在线 | 久久在线 | 午夜手机电影 | 久久婷婷视频 | 草久视频在线观看 | 91精品视频一区 | 国产手机在线播放 | 婷婷丁香久久五月婷婷 | 国产天天综合 | 国产玖玖在线 | 91av小视频 | 亚洲女欲精品久久久久久久18 | 日本精品中文字幕在线观看 | 国产一区二区在线免费 | 免费看网站在线 | 五月天婷婷免费视频 | 成人性生交大片免费看中文网站 | 日韩中文字幕亚洲一区二区va在线 | 69国产精品视频免费观看 | 久久最新 | 国内精品免费久久影院 | 草久久精品| 9在线观看免费高清完整版在线观看明 | 日韩网站一区二区 | av片子在线观看 | 一区二区视 | av一级一片 | 国产91精品一区二区麻豆网站 | 日韩电影在线一区 | 免费色网| 色香com. | 91黄视频在线 | 成人在线观看你懂的 | 国产精品欧美久久久久天天影视 | 国产在线精品一区二区 | 97天天综合网 | 午夜美女福利直播 | 黄色大全在线观看 | 97精品国产97久久久久久久久久久久 | 97在线资源 | 在线观看的a站 | 亚洲精品黄色在线观看 | 国产一级黄色片免费看 | 六月婷婷色 | 亚洲精品毛片一级91精品 | 操操操日日 | 成人性生交大片免费看中文网站 | 国产亚洲情侣一区二区无 | 美女网站在线免费观看 | 久久久黄色av | 91 在线视频| 天天激情 | 国产日韩视频在线 | 成人午夜影视 | 成人小视频在线观看免费 | 久草在线视频新 | 在线观看亚洲精品视频 | 中文字幕在线看 | 日韩精品短视频 | 91精品国产高清 | 久久综合九色综合久久久精品综合 | 97精品国自产拍在线观看 | 久久综合狠狠狠色97 | 一区二区三区免费在线播放 | 99久久精品视频免费 | 99久久精品国产一区二区成人 | 色激情在线| 精品国产乱码久久久久久三级人 | 日韩精品一区二区三区在线视频 | 日韩欧美精品一区二区 | 欧美激情第一页xxx 午夜性福利 | 国产精品a久久 | 久久手机免费观看 | 免费观看一区二区三区视频 | 亚洲精品视频在线观看免费 | 在线成人av | 欧美aaa大片| 久久深夜福利免费观看 | 久久影视中文字幕 | www操操| 欧美福利视频一区 | 亚洲综合网 | 午夜精品福利影院 | 亚洲精品一区二区精华 | 免费看久久| 九九日九九操 | 成人在线免费视频观看 | 国产xvideos免费视频播放 | 成人网在线免费视频 | 欧美激情精品久久久久 | 麻豆久久精品 | 国产精品麻豆果冻传媒在线播放 | 精品久久美女 | 国内精品国产三级国产aⅴ久 | 日韩一级片观看 | 国产91亚洲精品 | 黄色免费观看网址 | 99精品区 | 国产精品一区免费看8c0m | 国产中文字幕视频在线观看 | 欧美夫妻性生活电影 | 国产福利av在线 | 成av在线 | 日韩在线在线 | 色婷婷av一区二 | 精品一区 在线 | 日韩理论在线观看 | 国产成人精品久久久久蜜臀 | 午夜影院一级 | 日韩中文字幕免费视频 | 91久久人澡人人添人人爽欧美 | 色综合久久久 | www黄在线 | 婷婷六月天综合 | 精品影院一区二区久久久 | 天天综合网在线 | 九九九免费视频 | 在线激情网 | 成人黄色国产 | 干干干操操操 | 黄色的网站免费看 | 99视频免费在线观看 | 成人av免费在线 | 日韩精品中文字幕一区二区 | 免费高清在线视频一区· | 久久少妇免费视频 | 亚洲国产精品第一区二区 | 久久全国免费视频 | 亚洲国产精品成人va在线观看 | 日韩欧美99 | 国产精品毛片完整版 | 日韩色综合 | 欧美精品二区 | 国内精品国产三级国产aⅴ久 | 97精品国产一二三产区 | 国产精品视频久久 | 欧美日韩高清一区二区三区 | 在线观看成人福利 | 一区中文字幕在线观看 | 日本少妇高清做爰视频 | 中文字幕欲求不满 | 最近中文字幕完整高清 | 黄色免费观看网址 | 国产粉嫩在线观看 | 国产在线a免费观看 | 久久五月天综合 | 国产一级电影免费观看 | 欧美日韩在线视频一区二区 | 美女视频黄免费网站 | 久久无码精品一区二区三区 | 88av色| 精品一区电影 | 香蕉影院在线 | 在线成人免费电影 | 色视频在线免费 | 欧美国产日韩一区二区 | 久久人人添人人爽添人人88v | 精品一区二区免费在线观看 | 五月天精品视频 | 91av在线精品 | 国内免费的中文字幕 | 中文国产在线观看 | 国产精品大片在线观看 | 狠狠网 | 日韩精品视频免费看 | 亚洲精品乱码久久久久久9色 | 欧美亚洲久久 | 国产高清在线免费 | 国产精品免费一区二区三区在线观看 | 国产精品麻豆免费版 | 欧美精品久久久久久久久久白贞 | 婷婷精品在线 | 亚洲自拍av在线 | 99热99热 | 天天爽天天摸 | 在线观看免费成人 | 免费看黄的视频 | 亚洲综合网 | 国产福利一区二区三区视频 | 99视频在线观看视频 | 久久久精品午夜 | 久久这里只有精品首页 | 99精品视频在线免费观看 | 欧美在线你懂的 | 国产精品久久久久久久久久直播 | 国产一区二区中文字幕 | 国产高清在线精品 | 日韩在线免费播放 | av中文字幕在线免费观看 | 国产精品扒开做爽爽的视频 | 99精品黄色片免费大全 | 91精品久久久久 | 色网站视频 | 亚洲国产中文字幕在线视频综合 | 国产日本在线播放 | 麻豆国产露脸在线观看 | 久久,天天综合 | 国产精品美女视频 | 天天干夜夜爱 | 国产精品久久毛片 | 人人讲下载 | 超黄视频网站 | 国产黄色观看 | 国产一二区在线观看 | 久久久国产精品电影 | 久久99欧美 | 免费人成网 | 人人插人人插 | 久久9999久久免费精品国产 | 精品国精品自拍自在线 | 九九热在线观看 | 久久电影色 | 国产中文字幕视频在线 | 日本中文字幕一二区观 | 欧美一区成人 | 日韩xxxx视频 | 午夜精品久久久久久久爽 | 国产精品字幕 | 国产偷国产偷亚洲清高 | 久久精品—区二区三区 | 国产又黄又爽无遮挡 | 国内精品一区二区 | 怡红院成人在线 | 天天操天天色综合 | 永久免费毛片在线观看 | 99视频免费在线观看 | 欧美日韩在线播放 | 欧美一级黄色片 | 国产精品一区欧美 | 天天操天天色天天射 | 日本三级在线观看中文字 | 久久久精选 | 国产精品video爽爽爽爽 | 91视频成人免费 | 日韩小视频网站 | 国产精品99视频 | 国产一区二区三区在线 | 日韩精品一区二区免费视频 | 国产一区二区视频在线播放 | 欧美视频18| 一级全黄毛片 | 日韩手机在线 | 国产精品永久免费视频 | 黄色一二级片 | 久久久影院官网 | 中国成人一区 | 国产欧美高清 | 免费97视频 | 精品一区二区亚洲 | 激情中文字幕 | 91少妇精拍在线播放 | 欧美精品中文在线免费观看 | 日本久久中文 | 欧美视频二区 | 亚洲欧美日韩在线看 | 丁香久久久 | 日日干av | 国产视频精品免费播放 | 天堂av官网| 亚洲视频观看 | 欧美一区二区三区四区夜夜大片 | 成年人免费av | 免费男女羞羞的视频网站中文字幕 | 精品欧美小视频在线观看 | 中文字幕日本在线 | 国产精品入口麻豆 | 麻豆国产精品视频 | 亚洲天堂社区 | 国产精品国产三级国产 | 精品国产一区二区三区四区vr | 国产资源中文字幕 | 97国产小视频 | 操碰av| 久久免费视频这里只有精品 | 91大神电影 | 欧美性生活免费 | 特级毛片在线免费观看 | 久久不卡免费视频 | 精品影院一区二区久久久 | 精品国内自产拍在线观看视频 | 麻豆视频国产在线观看 | 欧美一级爽| 亚洲一二三在线 | 国产高清在线免费观看 | 超碰最新网址 | 一级成人在线 | 毛片网在线 | 在线视频国产区 | 成人免费 在线播放 | 91传媒在线看 | 亚洲无在线 | 久久精品女人毛片国产 | 日日夜夜操操操操 | 久久久久久久久久伊人 | 丁香花在线观看视频在线 | 日日夜夜操av | www.av中文字幕.com | 日本中文在线播放 | 99久久999久久久精玫瑰 | 久久私人影院 | 国产精品99精品久久免费 | 亚洲国产精品影院 | 亚洲精品久久久久久久蜜桃 | 天天爽夜夜爽精品视频婷婷 | 亚洲伦理中文字幕 | 国产亚洲精品久久久久久 | 91九色视频 | 国内精品久久久久久久久久 | www.五月天色 | 亚洲综合激情小说 | 日韩中文幕 | 国产成人91 | 狠狠地操| 最近中文字幕完整视频高清1 | 黄色aa久久 | 在线观看福利网站 | 亚洲最新精品 | 国产精品国产亚洲精品看不卡 | 天天操天天爱天天干 | 亚洲精品男人的天堂 | 天天天天色综合 | 免费成人av网站 | 日韩和的一区二在线 | 中文字幕视频三区 | 欧美少妇xxxxxx | 国产精品一区二区久久精品爱涩 | 精品久久久久免费极品大片 | 国产一区二区在线免费播放 | 日日综合| 国产日韩欧美中文 | 天天操天天射天天 | 国产精品一区二区在线免费观看 | 五月综合在线观看 | 国产成人福利片 | 国内丰满少妇猛烈精品播 | 天天插天天爱 | 正在播放国产91 | 伊人激情综合 | 1024在线看片 | 久草在线久草在线2 | 黄污污网站 | 天天爱天天 | 久久a久久 | 午夜精品一区二区三区可下载 | japanesexxxxfreehd乱熟 | 久久99精品久久久久蜜臀 | 91免费在线看片 | 91香蕉亚洲精品 | 麻豆影视网 | 国产精品ssss在线亚洲 | 午夜精品99久久免费 | 亚洲午夜久久久久久久久久久 | 日韩视频三区 | 亚洲一区 av | 久久不射电影网 | 综合久久婷婷 | 精品久久网 | 久久人人爽人人爽人人片av软件 | 亚洲欧美精品一区 | 最新91在线视频 | 国产在线小视频 | 午夜av在线免费 | 麻豆精品传媒视频 | 亚洲国产天堂av | 欧美日韩综合在线 | 国产精品久久在线观看 | 久草精品视频在线观看 | 久久九九影院 | 黄色av播放| 日韩亚洲国产精品 | 久久人人爽人人爽人人片av免费 | 日韩欧美在线视频一区二区 | 又黄又爽又刺激的视频 | 久久久久久久久黄色 | 精品一区二区影视 | 在线免费观看不卡av | 成人av资源网站 | 日韩免费观看一区二区三区 | 玖玖在线免费视频 | 成人黄色在线视频 | av丝袜美腿 | 五月婷婷开心中文字幕 | 91视频国产免费 | 一区三区视频 | 九九热在线免费观看 | 人人爱夜夜操 | 91香蕉视频好色先生 | 午夜精品久久久久久久久久 | 日韩高清观看 | 激情久久五月 | 在线观看免费91 | 韩国av不卡 | 香蕉视频在线播放 | 香蕉视频在线观看免费 | 日本aaaa级毛片在线看 | 成年人免费在线观看网站 | 久久久久久久久久久久久国产精品 | 久久一区二区免费视频 | 日韩电影在线视频 | 日韩av片无码一区二区不卡电影 | 麻豆国产精品永久免费视频 | 久久在视频 | 国产日韩精品在线观看 | 精品国产乱码一区二 | 亚洲专区欧美专区 | 国产99一区视频免费 | 综合精品在线 | 五月婷婷六月丁香 | 天天综合网~永久入口 | 中文日韩在线视频 | 亚洲成aⅴ人在线观看 | 中国一区二区视频 | 天天操天天操天天操天天操天天操 | 亚洲精品一区二区三区新线路 | 久久a热6 | 国产做a爱一级久久 | 天天干人人插 | 久久视了| 免费在线观看日韩 | 日韩理论影院 | 2020天天干夜夜爽 | 69国产在线观看 | 欧美国产日韩一区二区三区 | 麻豆传媒视频观看 | 免费福利在线播放 | 最近久乱中文字幕 | 日韩综合视频在线观看 | 免费91在线 | 精品一二 | 国内精品久久久久 | 91黄色成人| 久久综合精品一区 | 亚洲理论片在线观看 | 日韩一区二区三区高清免费看看 | 伊人一级| 人人要人人澡人人爽人人dvd | 国产精品中文在线 | 亚洲视频一区二区三区在线观看 | 欧美 亚洲 另类 激情 另类 | 在线日韩视频 | 91精品视频播放 | 激情开心网站 | 欧美99久久 | 婷婷激情站 | 久久久久久久精 | 成年人视频免费在线播放 | 亚洲丁香日韩 | 粉嫩一区二区三区粉嫩91 | 国产手机av | 亚洲永久精品视频 | 青青河边草免费观看完整版高清 | 日韩电影中文字幕在线 | 亚洲美女精品区人人人人 | 中文免费| 中文字幕有码在线播放 | 久久99久久99精品 | 在线观看一级 | 黄色一及电影 | 黄色午夜 | 亚洲黄色成人网 | 国产福利一区二区在线 | 欧美一级性生活片 | 黄色软件在线观看视频 | 午夜婷婷在线观看 | 国产中文视频 | 国产福利一区二区三区在线观看 | 福利视频入口 | av网站在线观看免费 | 亚洲春色综合另类校园电影 | 在线中文字幕视频 | 中文国产字幕 | 亚洲视频网站在线观看 | 国产真实在线 | 夜色资源网| 国产又粗又长又硬免费视频 | 日韩综合色 | 欧美激情视频一区二区三区免费 | 超级av在线 | 欧美网站黄色 | 国产拍揄自揄精品视频麻豆 | 国产成人61精品免费看片 | 国产成人精品综合久久久久99 | 四虎在线影视 | 免费观看www视频 | 国产免费成人av | 午夜婷婷在线播放 | 黄色片网站av| 国产精品久久久久久久久婷婷 | 麻豆综合网 | 亚洲精品免费在线观看视频 | 在线黄色毛片 | 天天天干天天射天天天操 | 亚洲最大av在线播放 | 久久99免费视频 | 精品欧美一区二区三区久久久 | 曰韩在线 | 久久理论视频 | 免费在线激情电影 | 狠狠狠狠狠狠干 | 伊人狠狠干 | 久久99国产精品久久99 | av线上看| 欧美视频一区二 | 色婷婷啪啪免费在线电影观看 | 国产精品美女免费看 | 亚洲成a人片77777kkkk1在线观看 | 日韩精品一区电影 | 欧美最猛性xxxxx免费 | 国产精品久久久久婷婷二区次 | 五月网婷婷 | 欧美日韩视频免费 | 色婷婷色 | av在线播放亚洲 | 中文字幕在线观看第三页 | 久久国产一区二区 |