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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Hologres基于TPCH的性能测试介绍

發(fā)布時間:2024/9/3 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Hologres基于TPCH的性能测试介绍 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
簡介:本文將會介紹在Hologres中如何基于TPCH數(shù)據(jù)集做性能測試,并提供測試結(jié)果參考,方便您進(jìn)行產(chǎn)品規(guī)格選型。

背景信息

TPC-H(商業(yè)智能計算測試)是美國交易處理效能委員會(TPC,Transaction Processing Performance Council)組織制定的用來模擬決策支持類應(yīng)用的一個測試集。目前在學(xué)術(shù)界和工業(yè)界普遍采用它來評價決策支持技術(shù)方面應(yīng)用的性能。TPC-H 是根據(jù)真實的生產(chǎn)運行環(huán)境來建模,模擬了一套銷售系統(tǒng)的數(shù)據(jù)倉庫。其共包含 8 張表,數(shù)據(jù)量可設(shè)定從 1G~3T 不等。其基準(zhǔn)測試共包含了22個查詢,主要評價指標(biāo)各個查詢的響應(yīng)時間,即從提交查詢到結(jié)果返回所需時間。其測試結(jié)果可綜合反映系統(tǒng)處理查詢時的能力。詳情參考TPCH 文檔。

數(shù)據(jù)集介紹

該數(shù)據(jù)集包含如下 8 張表,互相間的關(guān)系如下圖所示。

測試詳情

測試數(shù)據(jù)量說明

測試數(shù)據(jù)量會直接影響測試結(jié)果,TPC-H 的生成工具中使用 SF ( scale factor ) 控制生成數(shù)據(jù)的數(shù)據(jù)量的大小,1 SF 對應(yīng) 1 GB。

注意:以上提及的數(shù)據(jù)量僅僅為原始數(shù)據(jù)的數(shù)據(jù)量,不包括索引等空間占用,所以準(zhǔn)備環(huán)境時,需要預(yù)留更多的空間。

測試環(huán)境

本次測試使用了獨享實例(按量付費)的實例,由于僅為測試示意使用,所以計算資源配置選擇了8核32G。

測試場景

本測試場景主要包含3部分:

  • OLAP查詢場景測試,主要使用列存表,直接使用TPCH測試中的22條查詢;
  • Key/Value點查場景測試,主要使用行存表,針對orders使用行存表后,進(jìn)行主鍵過濾的點查;
  • 基礎(chǔ)環(huán)境準(zhǔn)備

    • 該步驟主要用于準(zhǔn)備OLAP查詢場景和Key/Value點查場景所需的數(shù)據(jù);

    基礎(chǔ)環(huán)境準(zhǔn)備

    1. 創(chuàng)建 ECS 實例

    登陸阿里云,創(chuàng)建一個 ECS 實例,用于數(shù)據(jù)生成、向 Hologres 導(dǎo)入數(shù)據(jù)、客戶端測試。建議規(guī)格:

    • ecs.g6.4xlarge 規(guī)格
    • CentOS 7.9 系統(tǒng)
    • ESSD 數(shù)據(jù)盤,具體數(shù)據(jù)容量根據(jù)需要測試的數(shù)據(jù)量大小決定
    • 建議 ECS 與 Hologres 實例用相同 Region 和 VPC 網(wǎng)絡(luò)

    2. 創(chuàng)建 Hologres 實例

    • 登陸阿里云,進(jìn)入 Hologres 產(chǎn)品控制臺,點擊新增引擎實例
    • 選擇配置,并填寫實例名稱,詳細(xì)說明請參考官方文檔。

    3. 創(chuàng)建測試數(shù)據(jù)庫

    • 在創(chuàng)建實例后,您需要登陸您創(chuàng)建的 Hologres 實例,創(chuàng)建一個數(shù)據(jù)庫,本測試中命名數(shù)據(jù)庫為tpch_1sf,詳細(xì)操作步驟請參考官方文檔

    生成 TPC-H 數(shù)據(jù)

    1. 準(zhǔn)備數(shù)據(jù)生成工具

    • 遠(yuǎn)程鏈接 ECS 實例
    • 更新所有庫
    yum update
    • 安裝 git
    yum install git
    • 安裝gcc
    yum install gcc
    • 下載 TPC-H 數(shù)據(jù)生成代碼
    git clone https://github.com/gregrahn/tpch-kit.git
    • 進(jìn)入數(shù)據(jù)生成工具代碼目錄
    cd tpch-kit/dbgen
    • 編譯數(shù)據(jù)生成工具代碼
    make

    2. 生成數(shù)據(jù)

    • 編譯成功后,您可以使用如下代碼查看代碼生成工具的相關(guān)參數(shù)。
    ./dbgen --help
    • 本次測試僅生成 1 GB 數(shù)據(jù),所以運行如下代碼生成數(shù)據(jù)。
    ./dbgen -vf -s 1 如您需要生成更多數(shù)據(jù)量的數(shù)據(jù),可以調(diào)整 SF 的參數(shù),例如您可以使用如下代碼生成 1 T 數(shù)據(jù) ./dbgen -vf -s 1000
    • 一般情況下,32CU 可以跑 TPCH SF10,256CU 可以跑 TPCH SF50
    • 數(shù)據(jù)生成后,您可以使用如下代碼查看生成的文件。可以看到生成工具生成了 8 個數(shù)據(jù)文件,每個數(shù)據(jù)文件都對應(yīng)一張數(shù)據(jù)集中的表。
    ls | grep '.*.tbl'

    OLAP查詢場景測試

    準(zhǔn)備數(shù)據(jù)

    1. 創(chuàng)建表

    • 由于本文主要使用 psql 進(jìn)行數(shù)據(jù)導(dǎo)入操作,需要先在 ECS 中運行如下命令安裝 psql
    yum install postgresql-server
    • 安裝 psql 后,您可以使用如下命令登陸 Hologres 實例
    PGUSER=<AccessID> PGPASSWORD=<AccessKey> psql -p <Port> -h <Endpoint> -d <Database>
    • 使用psql連接Hologres后,您可以使用如下建表語句創(chuàng)建數(shù)據(jù)庫表
    DROP TABLE IF EXISTS LINEITEM;BEGIN; CREATE TABLE LINEITEM (L_ORDERKEY INT NOT NULL,L_PARTKEY INT NOT NULL,L_SUPPKEY INT NOT NULL,L_LINENUMBER INT NOT NULL,L_QUANTITY DECIMAL(15,2) NOT NULL,L_EXTENDEDPRICE DECIMAL(15,2) NOT NULL,L_DISCOUNT DECIMAL(15,2) NOT NULL,L_TAX DECIMAL(15,2) NOT NULL,L_RETURNFLAG TEXT NOT NULL,L_LINESTATUS TEXT NOT NULL,L_SHIPDATE TIMESTAMPTZ NOT NULL,L_COMMITDATE TIMESTAMPTZ NOT NULL,L_RECEIPTDATE TIMESTAMPTZ NOT NULL,L_SHIPINSTRUCT TEXT NOT NULL,L_SHIPMODE TEXT NOT NULL,L_COMMENT TEXT NOT NULL,PRIMARY KEY (L_ORDERKEY,L_LINENUMBER) ); CALL set_table_property('LINEITEM', 'clustering_key', 'L_SHIPDATE,L_ORDERKEY'); CALL set_table_property('LINEITEM', 'segment_key', 'L_SHIPDATE'); CALL set_table_property('LINEITEM', 'distribution_key', 'L_ORDERKEY'); CALL set_table_property('LINEITEM', 'bitmap_columns', 'L_ORDERKEY,L_PARTKEY,L_SUPPKEY,L_LINENUMBER,L_RETURNFLAG,L_LINESTATUS,L_SHIPINSTRUCT,L_SHIPMODE,L_COMMENT'); CALL set_table_property('LINEITEM', 'dictionary_encoding_columns', 'L_RETURNFLAG,L_LINESTATUS,L_SHIPINSTRUCT,L_SHIPMODE,L_COMMENT'); CALL set_table_property('LINEITEM', 'time_to_live_in_seconds', '31536000'); COMMIT;DROP TABLE IF EXISTS ORDERS;BEGIN; CREATE TABLE ORDERS (O_ORDERKEY INT NOT NULL PRIMARY KEY,O_CUSTKEY INT NOT NULL,O_ORDERSTATUS TEXT NOT NULL,O_TOTALPRICE DECIMAL(15,2) NOT NULL,O_ORDERDATE timestamptz NOT NULL,O_ORDERPRIORITY TEXT NOT NULL,O_CLERK TEXT NOT NULL,O_SHIPPRIORITY INT NOT NULL,O_COMMENT TEXT NOT NULL ); CALL set_table_property('ORDERS', 'segment_key', 'O_ORDERDATE'); CALL set_table_property('ORDERS', 'distribution_key', 'O_ORDERKEY'); CALL set_table_property('ORDERS', 'colocate_with', 'LINEITEM'); CALL set_table_property('ORDERS', 'bitmap_columns', 'O_ORDERKEY,O_CUSTKEY,O_ORDERSTATUS,O_ORDERPRIORITY,O_CLERK,O_SHIPPRIORITY,O_COMMENT'); CALL set_table_property('ORDERS', 'dictionary_encoding_columns', 'O_ORDERSTATUS,O_ORDERPRIORITY,O_CLERK,O_COMMENT'); CALL set_table_property('ORDERS', 'time_to_live_in_seconds', '31536000'); COMMIT;DROP TABLE IF EXISTS PARTSUPP;BEGIN; CREATE TABLE PARTSUPP (PS_PARTKEY INT NOT NULL,PS_SUPPKEY INT NOT NULL,PS_AVAILQTY INT NOT NULL,PS_SUPPLYCOST DECIMAL(15,2) NOT NULL,PS_COMMENT TEXT NOT NULL,PRIMARY KEY(PS_PARTKEY,PS_SUPPKEY) ); CALL set_table_property('PARTSUPP', 'distribution_key', 'PS_PARTKEY'); CALL set_table_property('PARTSUPP', 'colocate_with', 'LINEITEM'); CALL set_table_property('PARTSUPP', 'bitmap_columns', 'PS_PARTKEY,PS_SUPPKEY,PS_AVAILQTY,PS_COMMENT'); CALL set_table_property('PARTSUPP', 'dictionary_encoding_columns', 'PS_COMMENT'); CALL set_table_property('PARTSUPP', 'time_to_live_in_seconds', '31536000'); COMMIT;DROP TABLE IF EXISTS PART;BEGIN; CREATE TABLE PART (P_PARTKEY INT NOT NULL PRIMARY KEY,P_NAME TEXT NOT NULL,P_MFGR TEXT NOT NULL,P_BRAND TEXT NOT NULL,P_TYPE TEXT NOT NULL,P_SIZE INT NOT NULL,P_CONTAINER TEXT NOT NULL,P_RETAILPRICE DECIMAL(15,2) NOT NULL,P_COMMENT TEXT NOT NULL ); CALL set_table_property('PART', 'distribution_key', 'P_PARTKEY'); CALL set_table_property('PART', 'colocate_with', 'LINEITEM'); CALL set_table_property('PART', 'bitmap_columns', 'P_PARTKEY,P_SIZE,P_NAME,P_MFGR,P_BRAND,P_TYPE,P_CONTAINER,P_COMMENT'); CALL set_table_property('PART', 'dictionary_encoding_columns', 'P_NAME,P_MFGR,P_BRAND,P_TYPE,P_CONTAINER,P_COMMENT'); CALL set_table_property('PART', 'time_to_live_in_seconds', '31536000'); COMMIT;DROP TABLE IF EXISTS CUSTOMER; BEGIN; CREATE TABLE CUSTOMER (C_CUSTKEY INT NOT NULL PRIMARY KEY,C_NAME TEXT NOT NULL,C_ADDRESS TEXT NOT NULL,C_NATIONKEY INT NOT NULL,C_PHONE TEXT NOT NULL,C_ACCTBAL DECIMAL(15,2) NOT NULL,C_MKTSEGMENT TEXT NOT NULL,C_COMMENT TEXT NOT NULL ); CALL set_table_property('CUSTOMER', 'distribution_key', 'C_CUSTKEY'); CALL set_table_property('CUSTOMER', 'colocate_with', 'LINEITEM'); CALL set_table_property('CUSTOMER', 'bitmap_columns', 'C_CUSTKEY,C_NATIONKEY,C_NAME,C_ADDRESS,C_PHONE,C_MKTSEGMENT,C_COMMENT'); CALL set_table_property('CUSTOMER', 'dictionary_encoding_columns', 'C_NAME,C_ADDRESS,C_PHONE,C_MKTSEGMENT,C_COMMENT'); CALL set_table_property('CUSTOMER', 'time_to_live_in_seconds', '31536000'); COMMIT;DROP TABLE IF EXISTS SUPPLIER;BEGIN; CREATE TABLE SUPPLIER (S_SUPPKEY INT NOT NULL PRIMARY KEY,S_NAME TEXT NOT NULL,S_ADDRESS TEXT NOT NULL,S_NATIONKEY INT NOT NULL,S_PHONE TEXT NOT NULL,S_ACCTBAL DECIMAL(15,2) NOT NULL,S_COMMENT TEXT NOT NULL ); CALL set_table_property('SUPPLIER', 'distribution_key', 'S_SUPPKEY'); CALL set_table_property('SUPPLIER', 'colocate_with', 'LINEITEM'); CALL set_table_property('SUPPLIER', 'bitmap_columns', 'S_SUPPKEY,S_NAME,S_ADDRESS,S_NATIONKEY,S_PHONE,S_COMMENT'); CALL set_table_property('SUPPLIER', 'dictionary_encoding_columns', 'S_NAME,S_ADDRESS,S_PHONE,S_COMMENT'); CALL set_table_property('SUPPLIER', 'time_to_live_in_seconds', '31536000'); COMMIT;DROP TABLE IF EXISTS NATION;BEGIN; CREATE TABLE NATION(N_NATIONKEY INT NOT NULL PRIMARY KEY,N_NAME text NOT NULL,N_REGIONKEY INT NOT NULL,N_COMMENT text NOT NULL ); CALL set_table_property('NATION', 'distribution_key', 'N_NATIONKEY'); CALL set_table_property('NATION', 'colocate_with', 'LINEITEM'); CALL set_table_property('NATION', 'bitmap_columns', 'N_NATIONKEY,N_NAME,N_REGIONKEY,N_COMMENT'); CALL set_table_property('NATION', 'dictionary_encoding_columns', 'N_NAME,N_COMMENT'); CALL set_table_property('NATION', 'time_to_live_in_seconds', '31536000'); COMMIT;DROP TABLE IF EXISTS REGION;BEGIN; CREATE TABLE REGION (R_REGIONKEY INT NOT NULL PRIMARY KEY,R_NAME TEXT NOT NULL,R_COMMENT TEXT ); CALL set_table_property('REGION', 'distribution_key', 'R_REGIONKEY'); CALL set_table_property('REGION', 'colocate_with', 'LINEITEM'); CALL set_table_property('REGION', 'bitmap_columns', 'R_REGIONKEY,R_NAME,R_COMMENT'); CALL set_table_property('REGION', 'dictionary_encoding_columns', 'R_NAME,R_COMMENT'); CALL set_table_property('REGION', 'time_to_live_in_seconds', '31536000'); COMMIT;
    • 創(chuàng)建完畢后,您能在 psql 中使用如下代碼查看是否創(chuàng)建成功
    tpch_1sf=# \dt
    • 若成功,現(xiàn)實效果如下
    tpch_1sf=# \dtList of relationsSchema | Name | Type | Owner --------+----------+-------+--------------------public | customer | table | tpch_1sf_developerpublic | lineitem | table | tpch_1sf_developerpublic | nation | table | tpch_1sf_developerpublic | orders | table | tpch_1sf_developerpublic | part | table | tpch_1sf_developerpublic | partsupp | table | tpch_1sf_developerpublic | region | table | tpch_1sf_developerpublic | supplier | table | tpch_1sf_developer (8 rows)

    2. 導(dǎo)入數(shù)據(jù)

    • 本測試方案主要使用 COPY FROM STDIN?的方式導(dǎo)入數(shù)據(jù)詳細(xì)可以參考官方文檔。此處會將此前生成的 tbl 數(shù)據(jù)文件導(dǎo)入 Hologres 中創(chuàng)建的表中。
    • 您可以在數(shù)據(jù)生成工具的目錄中參考如下 shell腳本導(dǎo)入數(shù)據(jù)
    for i in `ls *.tbl`; doecho $i;name=`echo $i| cut -d'.' -f1`;PGUSER=<AccessID> PGPASSWORD=<AccessKey> psql -p <Port> -h <Endpoint> -d <Database> -c "COPY $name from stdin with delimiter '|' csv;" < $i; done
    • 至此您已完成數(shù)據(jù)導(dǎo)入

    3. 收集統(tǒng)計信息

    • 為了更好的執(zhí)行查詢,可以在 psql 中使用如下語句,使 Hologres 收集各張表特征信息。
    vacuum region; vacuum nation; vacuum supplier; vacuum customer; vacuum part; vacuum partsupp; vacuum orders; vacuum lineitem;analyze nation; analyze region; analyze lineitem; analyze orders; analyze customer; analyze part; analyze partsupp; analyze supplier;

    執(zhí)行查詢

    • 為了方便統(tǒng)計查詢信息,需要使用pgbench工具,您可以使用如下命令安裝pgbench(如果測試機(jī)上已有pgbench,請確保版本大于9.6以上,最好大版本是13以上,否則以下測試會遇到各種不兼容)
    yum install postgresql-contrib
    • 為了方便查詢,您可以直接通過以下連接,下載所需的22條SQL

    tpch_data_tpch_query.zip

    • 然后上傳至ECS
    • 進(jìn)入ECS,并進(jìn)入上傳文件的目錄,使用如下shell命令解壓縮文件
    unzip tpch_data_tpch_query
    • 至此,您已經(jīng)完成了準(zhǔn)備工作,即可使用pgbench進(jìn)行測試,您可以使用如下命令執(zhí)行單條查詢
    PGUSER=<AccessID> PGPASSWORD=<AccessKey> pgbench -h <Endpoint> -p <Port> -d <Database> -c <Client_Num> -t <Query_Num> -n -f xxx.sql
    • 參數(shù)解釋
    配置項參數(shù)說明
    -hHologres實例的endpoint在Hologres管控臺查看
    -pHologres實例的端口地址在Hologres管控臺查看
    -dHologres指定實例中的數(shù)據(jù)庫名
    -c客戶端數(shù)目(并發(fā)度)示例:1,由于該測試僅測試查詢性能,不測試并發(fā),所以并發(fā)度置為1即可
    -t每個客戶端需要執(zhí)行的壓測query數(shù)目50
    -f壓測的sql示例:6.sql
    • 也可以直接執(zhí)行如下 shell?腳本,直接批量執(zhí)行22條查詢,并將結(jié)果輸出到文件hologres_tpch_test.out中
    rm -f hologres_tpch_test.out echo `date +"%Y-%m-%d %H:%M:%S"` begin >> ./hologres_tpch_test.out for i in {1..22} doPGUSER=<AccessID> PGPASSWORD=<AccessKey> pgbench -h <Endpoint> -p <Port> -d <Database> -c <Client_Num> -t <Query_Num> -n -f ./tpch_data_tpch_query/${i}.sql >> ./hologres_tpch_test.out done
    • 查看hologres_tpch_test.out即可得到查詢結(jié)果,樣例如下

      • transaction type:說明了執(zhí)行的具體的SQL文件
      • latency average:記錄了對應(yīng)SQL文件的3次查詢的平均時間
    2021-03-23 03:50:54 begin pghost: hgpostcn-cn-oew21c935002-cn-hangzhou.hologres.aliyuncs.com pgport: 80 nclients: 1 nxacts: 3 dbName: tpch_100 transaction type: ./tpch_data_tpch_query/1.sql scaling factor: 1 query mode: simple number of clients: 1 number of threads: 1 number of transactions per client: 3 number of transactions actually processed: 3/3 latency average = 76.936 ms tps = 12.997850 (including connections establishing) tps = 15.972757 (excluding connections establishing) ...

    TPCH 22條查詢語句

    Q1

    selectl_returnflag,l_linestatus,sum(l_quantity) as sum_qty,sum(l_extendedprice) as sum_base_price,sum(l_extendedprice * (1 - l_discount)) as sum_disc_price,sum(l_extendedprice * (1 - l_discount) * (1 + l_tax)) as sum_charge,avg(l_quantity) as avg_qty,avg(l_extendedprice) as avg_price,avg(l_discount) as avg_disc,count(*) as count_order fromlineitem wherel_shipdate <= date '1998-12-01' - interval '90' day group byl_returnflag,l_linestatus order byl_returnflag,l_linestatus;

    Q2

    selects_acctbal,s_name,n_name,p_partkey,p_mfgr,s_address,s_phone,s_comment frompart,supplier,partsupp,nation,region wherep_partkey = ps_partkeyand s_suppkey = ps_suppkeyand p_size = 15and p_type like '%BRASS'and s_nationkey = n_nationkeyand n_regionkey = r_regionkeyand r_name = 'EUROPE'and ps_supplycost = (selectmin(ps_supplycost)frompartsupp,supplier,nation,regionwherep_partkey = ps_partkeyand s_suppkey = ps_suppkeyand s_nationkey = n_nationkeyand n_regionkey = r_regionkeyand r_name = 'EUROPE') order bys_acctbal desc,n_name,s_name,p_partkey limit 100;

    Q3

    selectl_orderkey,sum(l_extendedprice * (1 - l_discount)) as revenue,o_orderdate,o_shippriority fromcustomer,orders,lineitem wherec_mktsegment = 'BUILDING'and c_custkey = o_custkeyand l_orderkey = o_orderkeyand o_orderdate < date '1995-03-15'and l_shipdate > date '1995-03-15' group byl_orderkey,o_orderdate,o_shippriority order byrevenue desc,o_orderdate limit 10;

    Q4

    selecto_orderpriority,count(*) as order_count fromorders whereo_orderdate >= date '1993-07-01'and o_orderdate < date '1993-07-01' + interval '3' monthand exists (select*fromlineitemwherel_orderkey = o_orderkeyand l_commitdate < l_receiptdate) group byo_orderpriority order byo_orderpriority;

    Q5

    selectn_name,sum(l_extendedprice * (1 - l_discount)) as revenue fromcustomer,orders,lineitem,supplier,nation,region wherec_custkey = o_custkeyand l_orderkey = o_orderkeyand l_suppkey = s_suppkeyand c_nationkey = s_nationkeyand s_nationkey = n_nationkeyand n_regionkey = r_regionkeyand r_name = 'ASIA'and o_orderdate >= date '1994-01-01'and o_orderdate < date '1994-01-01' + interval '1' year group byn_name order byrevenue desc;

    Q6

    selectsum(l_extendedprice * l_discount) as revenue fromlineitem wherel_shipdate >= date '1994-01-01'and l_shipdate < date '1994-01-01' + interval '1' yearand l_discount between 6 - 1 and 6 + 1and l_quantity < 2400

    Q7

    set hg_experimental_enable_double_equivalent=on; selectsupp_nation,cust_nation,l_year,sum(volume) as revenue from(selectn1.n_name as supp_nation,n2.n_name as cust_nation,extract(year from l_shipdate) as l_year,l_extendedprice * (1 - l_discount) as volumefromsupplier,lineitem,orders,customer,nation n1,nation n2wheres_suppkey = l_suppkeyand o_orderkey = l_orderkeyand c_custkey = o_custkeyand s_nationkey = n1.n_nationkeyand c_nationkey = n2.n_nationkeyand ((n1.n_name = 'FRANCE' and n2.n_name = 'GERMANY')or (n1.n_name = 'GERMANY' and n2.n_name = 'FRANCE'))and l_shipdate between date '1995-01-01' and date '1996-12-31') as shipping group bysupp_nation,cust_nation,l_year order bysupp_nation,cust_nation,l_year;

    Q8

    set hg_experimental_enable_double_equivalent=on; selecto_year,sum(casewhen nation = 'BRAZIL' then volumeelse 0end) / sum(volume) as mkt_share from(selectextract(year from o_orderdate) as o_year,l_extendedprice * (1 - l_discount) as volume,n2.n_name as nationfrompart,supplier,lineitem,orders,customer,nation n1,nation n2,regionwherep_partkey = l_partkeyand s_suppkey = l_suppkeyand l_orderkey = o_orderkeyand o_custkey = c_custkeyand c_nationkey = n1.n_nationkeyand n1.n_regionkey = r_regionkeyand r_name = 'AMERICA'and s_nationkey = n2.n_nationkeyand o_orderdate between date '1995-01-01' and date '1996-12-31'and p_type = 'STANDARD POLISHED TIN') as all_nations group byo_year order byo_year;

    Q9

    set hg_experimental_enable_double_equivalent=on; selectnation,o_year,sum(amount) as sum_profit from(selectn_name as nation,extract(year from o_orderdate) as o_year,l_extendedprice * (1 - l_discount) - ps_supplycost * l_quantity as amountfrompart,supplier,lineitem,partsupp,orders,nationwheres_suppkey = l_suppkeyand ps_suppkey = l_suppkeyand ps_partkey = l_partkeyand p_partkey = l_partkeyand o_orderkey = l_orderkeyand s_nationkey = n_nationkeyand p_name like '%green%') as profit group bynation,o_year order bynation,o_year desc;

    Q10

    selectc_custkey,c_name,sum(l_extendedprice * (1 - l_discount)) as revenue,c_acctbal,n_name,c_address,c_phone,c_comment fromcustomer,orders,lineitem,nation wherec_custkey = o_custkeyand l_orderkey = o_orderkeyand o_orderdate >= date '1993-10-01'and o_orderdate < date '1993-10-01' + interval '3' monthand l_returnflag = 'R'and c_nationkey = n_nationkey group byc_custkey,c_name,c_acctbal,c_phone,n_name,c_address,c_comment order byrevenue desc limit 20;

    Q11

    selectps_partkey,sum(ps_supplycost * ps_availqty) as value frompartsupp,supplier,nation whereps_suppkey = s_suppkeyand s_nationkey = n_nationkeyand n_name = 'GERMANY' group byps_partkey havingsum(ps_supplycost * ps_availqty) > (selectsum(ps_supplycost * ps_availqty) * 0.0000010000frompartsupp,supplier,nationwhereps_suppkey = s_suppkeyand s_nationkey = n_nationkeyand n_name = 'GERMANY') order byvalue desclimit 100;

    Q12

    selectl_shipmode,sum(casewhen o_orderpriority = '1-URGENT'or o_orderpriority = '2-HIGH'then 1else 0end) as high_line_count,sum(casewhen o_orderpriority <> '1-URGENT'and o_orderpriority <> '2-HIGH'then 1else 0end) as low_line_count fromorders,lineitem whereo_orderkey = l_orderkeyand l_shipmode in ('MAIL', 'SHIP')and l_commitdate < l_receiptdateand l_shipdate < l_commitdateand l_receiptdate >= date '1994-01-01'and l_receiptdate < date '1994-01-01' + interval '1' year group byl_shipmode order byl_shipmode;

    Q13

    selectc_count,count(*) as custdist from(selectc_custkey,count(o_orderkey)fromcustomer left outer join orders onc_custkey = o_custkeyand o_comment not like '%special%requests%'group byc_custkey) as c_orders (c_custkey, c_count) group byc_count order bycustdist desc,c_count desc;

    Q14

    select100.00 * sum(casewhen p_type like 'PROMO%'then l_extendedprice * (1 - l_discount)else 0end) / sum(l_extendedprice * (1 - l_discount)) as promo_revenue fromlineitem,part wherel_partkey = p_partkeyand l_shipdate >= date '1995-09-01'and l_shipdate < date '1995-09-01' + interval '1' month;

    Q15

    with revenue0(SUPPLIER_NO, TOTAL_REVENUE) as(selectl_suppkey,sum(l_extendedprice * (1 - l_discount))fromlineitemwherel_shipdate >= date '1995-12-01'and l_shipdate < date '1995-12-01' + interval '3' monthgroup byl_suppkey) selects_suppkey,s_name,s_address,s_phone,total_revenue fromsupplier,revenue0 wheres_suppkey = supplier_noand total_revenue = (selectmax(total_revenue)fromrevenue0) order bys_suppkey;

    Q16

    selectp_brand,p_type,p_size,count(distinct ps_suppkey) as supplier_cnt frompartsupp,part wherep_partkey = ps_partkeyand p_brand <> 'Brand#45'and p_type not like 'MEDIUM POLISHED%'and p_size in (49, 14, 23, 45, 19, 3, 36, 9)and ps_suppkey not in (selects_suppkeyfromsupplierwheres_comment like '%Customer%Complaints%') group byp_brand,p_type,p_size order bysupplier_cnt desc,p_brand,p_type,p_size;

    Q17

    selectsum(l_extendedprice) / 7.0 as avg_yearly fromlineitem,part wherep_partkey = l_partkeyand p_brand = 'Brand#23'and p_container = 'MED BOX'and l_quantity < (select0.2 * avg(l_quantity)fromlineitemwherel_partkey = p_partkeyand l_partkey in(select p_partkey from part where p_brand = 'Brand#23' and p_container = 'MED BOX'));

    Q18

    selectc_name,c_custkey,o_orderkey,o_orderdate,o_totalprice,sum(l_quantity) fromcustomer,orders,lineitem whereo_orderkey in (selectl_orderkeyfromlineitemgroup byl_orderkey havingsum(l_quantity) > 300)and c_custkey = o_custkeyand o_orderkey = l_orderkey group byc_name,c_custkey,o_orderkey,o_orderdate,o_totalprice order byo_totalprice desc,o_orderdate limit 100;

    Q19

    selectsum(l_extendedprice* (1 - l_discount)) as revenue fromlineitem,part where(p_partkey = l_partkeyand p_brand = 'Brand#12'and p_container in ('SM CASE', 'SM BOX', 'SM PACK', 'SM PKG')and l_quantity >= 1 and l_quantity <= 1 + 10and p_size between 1 and 5and l_shipmode in ('AIR', 'AIR REG')and l_shipinstruct = 'DELIVER IN PERSON')or(p_partkey = l_partkeyand p_brand = 'Brand#23'and p_container in ('MED BAG', 'MED BOX', 'MED PKG', 'MED PACK')and l_quantity >= 10 and l_quantity <= 10 + 10and p_size between 1 and 10and l_shipmode in ('AIR', 'AIR REG')and l_shipinstruct = 'DELIVER IN PERSON')or(p_partkey = l_partkeyand p_brand = 'Brand#34'and p_container in ('LG CASE', 'LG BOX', 'LG PACK', 'LG PKG')and l_quantity >= 20 and l_quantity <= 20 + 10and p_size between 1 and 15and l_shipmode in ('AIR', 'AIR REG')and l_shipinstruct = 'DELIVER IN PERSON');

    Q20

    selects_name,s_address fromsupplier,nation wheres_suppkey in (selectps_suppkeyfrompartsuppwhereps_partkey in (selectp_partkeyfrompartwherep_name like 'forest%')and ps_availqty > (select0.5 * sum(l_quantity)fromlineitemwherel_partkey = ps_partkeyand l_suppkey = ps_suppkeyand l_shipdate >= date '1994-01-01'and l_shipdate < date '1994-01-01' + interval '1' year))and s_nationkey = n_nationkeyand n_name = 'CANADA' order bys_name;

    Q21

    selects_name,count(*) as numwait fromsupplier,lineitem l1,orders,nation wheres_suppkey = l1.l_suppkeyand o_orderkey = l1.l_orderkeyand o_orderstatus = 'F'and l1.l_receiptdate > l1.l_commitdateand exists (select*fromlineitem l2wherel2.l_orderkey = l1.l_orderkeyand l2.l_suppkey <> l1.l_suppkey)and not exists (select*fromlineitem l3wherel3.l_orderkey = l1.l_orderkeyand l3.l_suppkey <> l1.l_suppkeyand l3.l_receiptdate > l3.l_commitdate)and s_nationkey = n_nationkeyand n_name = 'SAUDI ARABIA' group bys_name order bynumwait desc,s_name limit 100;

    Q22

    selectcntrycode,count(*) as numcust,sum(c_acctbal) as totacctbal from(selectsubstring(c_phone from 1 for 2) as cntrycode,c_acctbalfromcustomerwheresubstring(c_phone from 1 for 2) in('13', '31', '23', '29', '30', '18', '17')and c_acctbal > (selectavg(c_acctbal)fromcustomerwherec_acctbal > 0.00and substring(c_phone from 1 for 2) in('13', '31', '23', '29', '30', '18', '17'))and not exists (select*fromorderswhereo_custkey = c_custkey)) as custsale group bycntrycode order bycntrycode;

    Key/Value點查場景測試

    準(zhǔn)備數(shù)據(jù)

    1. 創(chuàng)建表

    • 繼續(xù)使用OLAP查詢場景創(chuàng)建的數(shù)據(jù)庫,我們會使用TPCH數(shù)據(jù)集中的orders表進(jìn)行測試,使用psql連接Hologres后,您可以使用如下建表語句創(chuàng)建數(shù)據(jù)庫表;
    注意:點查場景需要使用行存表,所以需要創(chuàng)建一張新表,不能使用OLAP查詢場景中使用的表 DROP TABLE IF EXISTS orders_row;BEGIN; CREATE TABLE public.orders_row ("o_orderkey" int8 NOT NULL,"o_custkey" int8,"o_orderstatus" bpchar(1),"o_totalprice" numeric(15,2),"o_orderdate" date,"o_orderpriority" bpchar(15),"o_clerk" bpchar(15),"o_shippriority" int8,"o_comment" varchar(79), PRIMARY KEY (o_orderkey) ); CALL SET_TABLE_PROPERTY('public.orders_row', 'orientation', 'row'); CALL SET_TABLE_PROPERTY('public.orders_row', 'clustering_key', 'o_orderkey'); CALL SET_TABLE_PROPERTY('public.orders_row', 'time_to_live_in_seconds', '3153600000'); CALL SET_TABLE_PROPERTY('public.orders_row', 'distribution_key', 'o_orderkey'); COMMIT;

    2. COPY方式導(dǎo)入數(shù)據(jù)

    • 本測試方案主要使用 COPY FROM STDIN 的方式導(dǎo)入數(shù)據(jù)詳細(xì)可以參考官方文檔。此處會將此前生成的 tbl 數(shù)據(jù)文件導(dǎo)入 Hologres 中創(chuàng)建的表中。
    • 您可以在數(shù)據(jù)生成工具的目錄中參考如下命令導(dǎo)入數(shù)據(jù)
    PGUSER=<AccessID> PGPASSWORD=<AccessKey> psql -p <Port> -h <Endpoint> -d <Database> -c "COPY public.orders_row from stdin with delimiter '|' csv;" < orders.tbl

    3. INSERT INTO方式導(dǎo)入數(shù)據(jù)

    • 由于OLAP場景時您已經(jīng)導(dǎo)入了orders表的數(shù)據(jù),您可以運行如下SQL語句導(dǎo)入數(shù)據(jù)
    INSERT INTO public.orders_row SELECT * FROM public.orders;

    查詢

    1. 生成查詢語句

    • Key/Value點查場景主要的查詢語句特征如下
    SELECT column_a,column_b,...,column_x FROM table_x WHERE pk = value_x ;

    SELECT column_a,column_b,...,column_x FROM table_x WHERE pk IN ( value_a, value_b,..., value_x ) ;
    • 您可以使用如下腳本生成所需的sql,該腳本會生成2條sql

      • kv_query_single.sql 針對單值篩選的SQL
      • kv_query_in.sql 針對多值篩選的SQL,該腳本會隨機(jī)生成一個針對10個值篩選的SQL
    rm -rf kv_query mkdir kv_query cd kv_query echo '\set column_values random(1,99999999) select O_ORDERKEY,O_CUSTKEY,O_ORDERSTATUS,O_TOTALPRICE,O_ORDERDATE,O_ORDERPRIORITY,O_CLERK,O_SHIPPRIORITY,O_COMMENT from public.orders_row WHERE o_orderkey =:column_values;' >> kv_query_single.sql echo '\set column_values1 random(1,99999999) \set column_values2 random(1,99999999) \set column_values3 random(1,99999999) \set column_values4 random(1,99999999) \set column_values5 random(1,99999999) \set column_values6 random(1,99999999) \set column_values7 random(1,99999999) \set column_values8 random(1,99999999) \set column_values9 random(1,99999999) \set column_values10 random(1,99999999) select O_ORDERKEY,O_CUSTKEY,O_ORDERSTATUS,O_TOTALPRICE,O_ORDERDATE,O_ORDERPRIORITY,O_CLERK,O_SHIPPRIORITY,O_COMMENT from public.orders_row WHERE o_orderkey in(:column_values1,:column_values2,:column_values3,:column_values4,:column_values5,:column_values6,:column_values7,:column_values8,:column_values9,:column_values10);' >> kv_query_in.sql

    2. 進(jìn)行查詢

    • 查詢需要使用pgbench,您可以使用如下命令安裝pgbench
    yum install postgresql-contrib
    • 之后您即可使用pgbench進(jìn)行壓測,針對單值篩選的場景
    注意,請在生成SQL的目錄執(zhí)行如下命令 PGUSER=<AccessID> PGPASSWORD=<AccessKey> pgbench -h <Endpoint> -p <Port> -d <Database> -c <Client_Num> -t <Query_Num> -n -f kv_query_single.sql
    • 針對多值篩選的場景
    注意,請在生成SQL的目錄執(zhí)行如下命令 PGUSER=<AccessID> PGPASSWORD=<AccessKey> pgbench -h <Endpoint> -p <Port> -d <Database> -c <Client_Num> -t <Query_Num> -n -f kv_query_in.sql
    • 參數(shù)解釋
    配置項參數(shù)說明
    -hHologres實例的endpoint在Hologres管控臺查看
    -pHologres實例的端口地址在Hologres管控臺查看
    -dHologres指定實例中的數(shù)據(jù)庫名
    -c客戶端數(shù)目(并發(fā)度)示例:8
    -t每個客戶端需要執(zhí)行的壓測query數(shù)目50
    -f壓測的sql示例:6.sql

    測試結(jié)果參考

    測試數(shù)據(jù)量:

    • 本測試基于TPCH 100G的數(shù)據(jù)集進(jìn)行測試,具體數(shù)據(jù)量如下表所示
    表名行數(shù)
    LINEITEM600,037,902
    ORDERS150,000,000
    PARTSUPP80,000,000
    PART20,000,000
    CUSTOMER15,000,000
    SUPPLIER1,000,000
    NATION25
    REGION5

    集群規(guī)格

    計算資源存儲容量軟件版本備注
    64 CU
    (CPU:64 Core 內(nèi)存:256 GB)100 GBr0.10.20使用集群默認(rèn)配置,Shard數(shù)量:40
    128 CU
    (CPU:128 Core 內(nèi)存:512 GB)100 GBr0.10.20使用集群默認(rèn)配置,Shard數(shù)量:80
    測試時間:2021年6月

    測試結(jié)果

    數(shù)據(jù)導(dǎo)入時間

    • 數(shù)據(jù)導(dǎo)入執(zhí)行時間以秒(s)為單位。
    • 導(dǎo)入時間指將數(shù)據(jù)導(dǎo)入Hologres內(nèi)表
    • 在使用COPY方法導(dǎo)入數(shù)據(jù)時,一張表對應(yīng)一個數(shù)據(jù)文件,并未使用并發(fā)導(dǎo)入方式。
    • 具體數(shù)值如下表所示
    說明:使用COPY方式導(dǎo)入時一張表對應(yīng)一個數(shù)據(jù)文件,并未使用并發(fā)導(dǎo)入方式 表名行數(shù)數(shù)據(jù)量Hologres 64CU
    使用COPY方式導(dǎo)入(公網(wǎng)網(wǎng)絡(luò))使用COPY方式導(dǎo)入(VPC網(wǎng)絡(luò)導(dǎo)入)使用MaxCompute外表導(dǎo)入
    LINEITEM600,037,90273.6GB3,070.453694.364148.165
    ORDERS150,000,00016.4GB691.060172.52937.741
    PARTSUPP80,000,0002.3GB468.560107.09218.488
    PART20,000,00011.3GB96.34224.0208.083
    CUSTOMER15,000,0002.3GB95.19022.93710.363
    SUPPLIER1,000,000132MB5.0571.8031.503
    NATION252KB0.5800.5840.747
    REGION50.375KB0.1680.1530.430
    Total106G4427.4101023.482225.52
    • 下圖中藍(lán)色為使用COPY方式在公網(wǎng)條件下導(dǎo)入數(shù)據(jù)的時間,綠色為使用COPY方式在VPC網(wǎng)絡(luò)條件下導(dǎo)入數(shù)據(jù)的時間,灰色為使用MaxCompute外表方式導(dǎo)入的時間
    • 縱坐標(biāo)數(shù)值越低,表示導(dǎo)入速度越快
    • 橫軸:表名。縱軸:數(shù)據(jù)導(dǎo)入時間(s)

    • 可以看出,由于網(wǎng)絡(luò)帶寬影響,使用COPY方式導(dǎo)入本地文件數(shù)據(jù)時,使用VPC網(wǎng)絡(luò)導(dǎo)入數(shù)據(jù)時間明顯短于使用公網(wǎng)導(dǎo)入數(shù)據(jù)時間;使用MaxCompute導(dǎo)入數(shù)據(jù)時間明顯短于使用COPY方式導(dǎo)入本地文件數(shù)據(jù)時間。

    查詢時間

    • 查詢執(zhí)行時間以秒(s)為單位。
    • 查詢結(jié)果均基于Hologres內(nèi)表
    • 具體數(shù)值如下表所示
    TPCH Query編號Hologres 64CUHologres 128CU
    13.1202.150
    20.5810.467
    31.7351.005
    41.5580.836
    52.9211.917
    60.2970.096
    72.0061.029
    82.6741.679
    95.2982.796
    101.9440.924
    110.3970.297
    121.5310.852
    131.7410.971
    140.2860.160
    150.2930.177
    161.2231.020
    171.4050.607
    183.8172.169
    191.4000.622
    201.3580.868
    214.1642.047
    221.1210.654
    Total40.87023.343
    • 下圖中藍(lán)色為64CU的實例的查詢結(jié)果,綠色為128CU實例的查詢結(jié)果
    • 縱坐標(biāo)數(shù)值越低,表示 TPC-H 性能越好。
    • 可以看出隨著實例規(guī)模的成本增長,查詢時間也在成線性下降趨勢
    • 橫軸:query在文檔中的編號。縱軸:query執(zhí)行時間(s)

    原文鏈接:https://developer.aliyun.com/article/785226?

    版權(quán)聲明:本文內(nèi)容由阿里云實名注冊用戶自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,阿里云開發(fā)者社區(qū)不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。具體規(guī)則請查看《阿里云開發(fā)者社區(qū)用戶服務(wù)協(xié)議》和《阿里云開發(fā)者社區(qū)知識產(chǎn)權(quán)保護(hù)指引》。如果您發(fā)現(xiàn)本社區(qū)中有涉嫌抄襲的內(nèi)容,填寫侵權(quán)投訴表單進(jìn)行舉報,一經(jīng)查實,本社區(qū)將立刻刪除涉嫌侵權(quán)內(nèi)容。

    總結(jié)

    以上是生活随笔為你收集整理的Hologres基于TPCH的性能测试介绍的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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

    久久午夜精品影院一区 | 国产丝袜一区二区三区 | 国产一级电影网 | 久久久久久久综合色一本 | 日韩精品一区二区电影 | 天天摸天天操天天爽 | 成人中心免费视频 | 开心综合网 | 日本巨乳在线 | a在线免费 | 成人黄色中文字幕 | 欧美色图30p | 日韩三区在线观看 | 欧美精品久久久久久久久久丰满 | 91成人精品观看 | 美女黄频在线观看 | 美女很黄免费网站 | 国产精品 中文在线 | 中文字幕电影高清在线观看 | 91免费看黄色 | 久久综合色天天久久综合图片 | 麻豆视频免费在线观看 | 五月天久久久久久 | 黄色在线观看免费网站 | av免费在线看网站 | 国产一区免费在线 | 婷婷成人在线 | 中文字幕 国产精品 | 国产成人精品一区二区三区网站观看 | 久久久久久免费网 | 中文字幕日韩免费视频 | 韩日电影在线免费看 | 午夜精品久久久久久久爽 | 色人久久 | www.色综合.com| 深夜男人影院 | 成人a级黄色片 | 久久久久国产成人精品亚洲午夜 | 97网站| 天天综合天天做天天综合 | 欧美日韩大片在线观看 | 精品 激情 | 免费av网站在线看 | 日韩激情视频 | 久久亚洲欧美日韩精品专区 | 久久视频在线观看中文字幕 | 欧美色精品天天在线观看视频 | 国产精品成久久久久三级 | 久久久精品免费观看 | 热久在线 | 免费看的黄色的网站 | 九九热在线播放 | 精品高清美女精品国产区 | 国产一级免费片 | 日韩一级电影在线观看 | 在线看片91 | 69国产精品视频免费观看 | 亚洲天堂网视频在线观看 | 国产精品亚洲人在线观看 | 欧美视频网址 | 美女国内精品自产拍在线播放 | 91日韩在线专区 | 日韩久久一区 | 国产精品日韩高清 | 99热精品久久 | 精品九九九九 | 日本久久综合视频 | av中文字幕亚洲 | 欧美日韩精品影院 | 在线观看资源 | a√天堂资源 | 西西444www大胆高清视频 | 欧美a级片网站 | 啪啪资源 | 国产手机视频 | 中文字幕在线视频一区 | 免费97视频 | 欧美人人 | 黄色a级片在线观看 | 久久影院一区 | 91干干干| 国产精品亚州 | 久久精品99久久久久久2456 | 黄色av网站在线免费观看 | 亚洲第一伊人 | 成人观看| 久久精品人人做人人综合老师 | 中文字幕日本在线观看 | 四虎最新入口 | 天天色天天操综合网 | 久久99热这里只有精品 | 亚洲精品午夜一区人人爽 | 亚洲永久精品视频 | 日韩高清免费在线观看 | 中文字幕av一区二区三区四区 | 一区免费观看 | 六月丁香在线视频 | 波多野结衣电影一区二区 | 国产精品毛片久久久 | 日韩深夜在线观看 | 成人9ⅰ免费影视网站 | 国产精品久久久久久麻豆一区 | 欧美福利片在线观看 | av网在线观看 | 就要干b| 青春草免费在线视频 | 亚洲成人黄色在线 | 91最新视频在线观看 | 欧美精品免费视频 | 国产精品视频99 | 天天综合天天综合 | 久久综合久久久久88 | 久久不卡日韩美女 | 成人黄色片在线播放 | 午夜在线免费观看视频 | 久久久久久久久久亚洲精品 | 99高清视频有精品视频 | 色综合久久99 | 91久久精品一区 | 久久99精品久久久久久清纯直播 | 国产一区久久久 | 欧美xxxxx在线视频 | www日 | 欧美国产日韩一区二区三区 | 精品一区精品二区 | 国产一级二级三级在线观看 | 国语久久 | a级成人毛片 | 色综合久久天天 | 在线一二三区 | 99久高清在线观看视频99精品热在线观看视频 | 国产在线播放一区二区三区 | 亚洲涩涩网站 | 国产麻豆视频免费观看 | 色婷婷激情网 | 黄色毛片观看 | 久久超碰97| 超碰在线国产 | 一区二区三区韩国免费中文网站 | 中文字幕第一页在线播放 | 久久久久亚洲精品男人的天堂 | 久久五月情影视 | 婷婷丁香激情五月 | 国产精品免费久久久久久久久久中文 | 日韩色爱 | 久久99深爱久久99精品 | 国产在线精品二区 | 久久躁日日躁aaaaxxxx | 午夜的福利 | 成人国产精品久久久 | 免费在线一区二区三区 | 99中文视频在线 | 97超碰人人澡人人 | 免费高清在线一区 | 中字幕视频在线永久在线观看免费 | 国产黄a三级三级 | 亚洲精品影视 | 岛国av在线免费 | 在线黄色免费 | 成人久久18免费网站麻豆 | 人人爱爱 | 久久久久久伊人 | 91视频啪 | 色婷婷综合久久久久中文字幕1 | 麻豆94tv免费版| 激情欧美网 | 亚洲精品麻豆视频 | 五月天中文在线 | 亚洲成色777777在线观看影院 | 三级黄色三级 | 一区视频在线 | 国产精品一区免费在线观看 | www国产一区| 欧美激情综合色综合啪啪五月 | 91精品国产综合久久福利不卡 | 日本中出在线观看 | 2019免费中文字幕 | 精品在线一区二区三区 | 久草网在线视频 | 在线观看国产永久免费视频 | 免费色网 | 久久视频网 | 国产麻豆视频在线观看 | 美女视频黄是免费的 | 日本成人中文字幕在线观看 | 欧美巨大荫蒂茸毛毛人妖 | 国产成人免费观看久久久 | 成人免费视频免费观看 | 日韩欧美高清在线观看 | 在线播放 亚洲 | 国产91电影在线观看 | 在线免费中文字幕 | 99九九视频 | 国产高清永久免费 | 亚洲成人国产 | 蜜臀一区二区三区精品免费视频 | www亚洲精品 | 久久久国产精品亚洲一区 | 精品免费观看 | 亚洲伊人色 | 五月婷婷视频 | 日韩精品字幕 | 久在线观看视频 | 丁香婷婷综合激情五月色 | 毛片网免费 | 国产精品免费观看在线 | 综合色亚洲 | 高清av免费看 | 国产一区在线精品 | 久久精品久久99 | 久久免费视频2 | av天天草| 爱爱av在线 | 国产一级二级在线 | 成人一级| 日本丰满少妇免费一区 | 久久久午夜精品福利内容 | 免费视频一区二区 | 91丨九色丨91啦蝌蚪老版 | 日日干干 | 色a网 | 色大片免费看 | 久久久久久久久综合 | 黄色网大全| 午夜狠狠干 | 在线观看视频免费大全 | 在线观看aaa | 久久成人综合 | 久久精品国产一区 | 国产成人久久精品 | 中文字幕av免费在线观看 | 99久久99| 成人在线视频你懂的 | 天堂va在线观看 | 99精品久久久久久久久久综合 | 91在线精品一区二区 | av成人在线网站 | 久久人人爽爽人人爽人人片av | 婷婷五情天综123 | 国产色女 | 日日碰狠狠添天天爽超碰97久久 | 97超碰在线资源 | 免费av成人在线 | 国产在线观看免 | 最近日本韩国中文字幕 | 日韩三级免费观看 | 成人在线视频论坛 | 亚洲精品国偷拍自产在线观看蜜桃 | 免费看片色 | 麻豆国产精品永久免费视频 | 91资源在线观看 | 日本婷婷色 | 999久久久国产精品 高清av免费观看 | 亚洲精品国产综合久久 | 国产精品欧美一区二区 | 亚洲精品小区久久久久久 | 国产精品 亚洲精品 | 国产精品久久久久一区 | 成人黄色在线电影 | 91精品国产99久久久久久久 | 天天干亚洲| 久草在线视频资源 | 中文字幕亚洲五码 | 色在线亚洲 | 国产亚洲va综合人人澡精品 | 成人一级 | av动图| 国产精品系列在线观看 | 久久精品国产免费观看 | 天堂在线免费视频 | 一区 二区电影免费在线观看 | 九九久久免费视频 | 日韩天堂网| 国产免费资源 | 国产精品久久一区二区三区不卡 | 日韩av在线一区二区 | 视频 国产区| www.五月天婷婷 | 天天干,天天射,天天操,天天摸 | 国产伦理久久精品久久久久_ | 2019国产精品 | av电影免费观看 | 国产91在线免费视频 | 又长又大又黑又粗欧美 | 国产成视频在线观看 | 欧美激情综合五月色丁香 | 婷婷午夜天 | 欧美日比视频 | 免费观看一级一片 | 亚洲视频电影在线 | 日本女人的性生活视频 | 日韩高清无线码2023 | 色噜噜噜噜 | 成人av免费播放 | 99热在线免费观看 | 欧美黑人xxxx猛性大交 | 亚洲精品综合在线 | 精品亚洲免费 | 中文字幕中文字幕中文字幕 | 成人av电影免费在线播放 | 免费看v片 | 波多野结衣精品 | 99爱这里只有精品 | 最近字幕在线观看第一季 | av天天在线观看 | 狠狠色香婷婷久久亚洲精品 | 最新av免费在线 | 四虎伊人 | 91av在线视频免费观看 | 成人小视频在线播放 | 日韩在线视频在线观看 | 国产黄色电影 | 亚洲午夜久久久久久久久电影网 | 夜色.com | 夜夜操天天 | 日本中文字幕久久 | 2019久久精品 | 嫩草av影院 | 麻豆视频入口 | 久久久午夜精品理论片中文字幕 | 精品99久久久久久 | 99r在线观看 | 欧美性视频网站 | 日韩在线视频线视频免费网站 | 日韩电影一区二区在线观看 | 国产剧情一区 | 91丨九色丨国产在线 | 美女视频黄,久久 | 精品一区二区在线免费观看 | 欧美精品久久久久久久久免 | 日韩一区二区三区高清在线观看 | 色综久久| 成年人免费在线看 | 国产最新网站 | 香蕉视频在线网站 | 日韩精品免费一区二区三区 | 92中文资源在线 | 精品1区2区 | 亚洲日本在线视频观看 | 一级a性色生活片久久毛片波多野 | 精品成人a区在线观看 | 国产99一区视频免费 | 国产精品久久久久久一区二区 | 天天爽天天爽 | 四虎最新入口 | 国产一级91 | 日韩在线国产精品 | 亚洲成人精品在线观看 | 69国产盗摄一区二区三区五区 | 色婷婷综合久久久久中文字幕1 | 91视频免费国产 | 97视频免费看 | 最近日本韩国中文字幕 | 亚洲国产精品小视频 | 国产精品精品 | 91精品夜夜 | 欧美性猛片 | 草樱av| 8x成人免费视频 | 麻豆影视在线免费观看 | 亚洲国产精品激情在线观看 | 日韩极品视频在线观看 | 日韩av一区二区在线播放 | 欧美久久综合 | 成人三级av | 日本中文字幕在线观看 | 91九色在线播放 | 成人在线视频你懂的 | 黄色av观看| 涩涩网站在线播放 | 免费国产在线视频 | 99精品视频播放 | 国产一区二区精品91 | 中文字幕欲求不满 | 婷婷去俺也去六月色 | 午夜视频免费播放 | 欧美一区二区三区在线看 | 中文字幕一区二区三区四区视频 | 国产一级视频在线免费观看 | 国产黄色观看 | 丝袜美腿在线视频 | 久久久久国产一区二区三区 | 就要干b| 一二三区在线 | 免费看的黄网站 | 国产综合婷婷 | 久久久久国产一区二区三区 | 国产精品乱码久久久久久1区2区 | 91人人网| 91在线小视频 | 久久精彩视频 | 六月丁香在线观看 | 干亚洲少妇 | 国产午夜麻豆影院在线观看 | 蜜桃传媒一区二区 | 手机av观看| 国产成人久久av977小说 | 日韩精品久久久久久久电影竹菊 | 九色在线视频 | 日韩女同一区二区三区在线观看 | 国产成人精品国内自产拍免费看 | 2019中文字幕网站 | 久久综合色一综合色88 | 天堂在线视频中文网 | 91亚洲成人 | 国产精品99久久久久久武松影视 | 精品特级毛片 | 日本精品视频在线观看 | 国产精品一区二区在线播放 | 99久久综合精品五月天 | 免费a v视频 | 国产高清免费 | 欧美少妇xxxxxx | 国产高清视频色在线www | 涩av在线 | 亚洲精品午夜久久久久久久 | 国产又粗又猛又黄又爽视频 | av福利在线 | 日韩大片免费在线观看 | 欧美日本国产在线观看 | 69av国产| 亚洲涩涩网| 午夜精品久久久久久 | 亚洲激情网站免费观看 | 国产又粗又猛又爽又黄的视频免费 | 97免费视频在线播放 | 国产人在线成免费视频 | www.一区二区三区 | 欧美精品网站 | 国内精品久久久久久久影视简单 | 中文字幕亚洲国产 | 视频一区在线播放 | 伊人狠狠色 | 国产偷国产偷亚洲清高 | 久久成人国产精品免费软件 | 一色屋精品视频在线观看 | 国产麻豆精品免费视频 | 日韩狠狠操 | 国产成人精品一区二区三区在线 | 福利网址在线观看 | 国产成人精品综合久久久 | 国产第一页福利影院 | 久久与婷婷 | 久久精品99北条麻妃 | 在线视频免费观看 | 国产成人精品综合 | 亚洲精品在线播放视频 | 中字幕视频在线永久在线观看免费 | 蜜臀av夜夜澡人人爽人人 | 色99中文字幕 | 日本性生活免费看 | 日韩在线观看影院 | 波多野结衣在线视频免费观看 | 91免费高清观看 | 国产精品中文久久久久久久 | 成人福利在线 | 天天干夜夜夜 | 99久久日韩精品视频免费在线观看 | 麻豆91精品91久久久 | 亚洲最新av | 国产精品大全 | 福利网在线 | 国产人成精品一区二区三 | 国产99久久99热这里精品5 | 色偷偷中文字幕 | 日韩xxxxxxxxx | 特级大胆西西4444www | 日日麻批40分钟视频免费观看 | 婷婷六月天天 | 日韩电影中文,亚洲精品乱码 | 国产一区二区在线免费播放 | 香蕉视频日本 | 国产亲近乱来精品 | 黄色大全在线观看 | 国产精品区一区 | 99视频在线免费播放 | 免费日韩av电影 | 久久成年视频 | 国产精品1000 | 日韩理论电影网 | 免费中文字幕在线观看 | 九九免费观看视频 | 国产精品一区二区久久久 | 日韩在线观看小视频 | 狠狠躁夜夜a产精品视频 | 国产精品久久一区二区三区, | 精品国产一区在线观看 | 亚洲久草在线视频 | 日韩一二区在线 | 国产精品97 | 国产精品成久久久久 | 天天草天天爽 | 午夜精品99久久免费 | 国产一区二区在线免费视频 | 亚洲免费在线视频 | 国产91精品久久久久久 | 中文字幕中文字幕在线中文字幕三区 | 欧美日韩在线观看一区二区三区 | 俺要去色综合狠狠 | 亚洲综合欧美激情 | 99999精品 | 久久午夜国产精品 | 黄色一级在线观看 | 在线免费观看亚洲视频 | 狠狠色丁香婷婷综合欧美 | 久久久资源网 | 国产男女无遮挡猛进猛出在线观看 | 久久精品三 | 国产精彩视频一区 | 91成品视频 | 欧美一区二区三区在线播放 | 亚洲精品资源 | 麻豆你懂的 | 精品在线二区 | 午夜男人影院 | 黄色毛片视频免费 | 国产资源精品在线观看 | 色资源在线| 久草在线在线精品观看 | 日韩欧美在线视频一区二区 | 99爱这里只有精品 | 四虎5151久久欧美毛片 | 国产日韩一区在线 | 久久久99国产精品免费 | 色妞久久福利网 | av解说在线 | 免费在线观看不卡av | 国产一区二区观看 | 成人av免费在线观看 | 999热线在线观看 | 免费三级a| 中文乱码视频在线观看 | 中日韩欧美精彩视频 | av在线播放不卡 | 欧美精品久久久久久久亚洲调教 | 永久免费看av | 在线观看国产高清视频 | 久久成人国产精品免费软件 | 免费看成人 | 香蕉影视app | 国产成人香蕉 | 天堂va在线高清一区 | 国产97色在线 | 色综合国产 | 日日干夜夜操视频 | 国产 日韩 在线 亚洲 字幕 中文 | 狠狠色狠狠色 | 色香蕉网| 91日韩精品 | 麻豆视频91 | 97av在线视频免费播放 | 在线看片一区 | 国产精品 日韩 欧美 | 五月婷婷毛片 | 香蕉视频在线免费看 | 久久精品国产99 | 日韩精品一区二区三区在线视频 | 天天草天天爽 | 国产麻豆精品免费视频 | 日日爽天天爽 | 久久久精品综合 | 亚洲国产成人在线 | 中文亚洲欧美日韩 | 久久免费视频在线观看30 | 人人草人人草 | 成人久久精品视频 | 久久精品—区二区三区 | 人人草在线观看 | 在线免费观看欧美日韩 | 久草精品视频在线看网站免费 | 91免费观看视频网站 | 91亚洲精品国偷拍自产在线观看 | 国产伦精品一区二区三区… | 国产玖玖精品视频 | 92国产精品久久久久首页 | 国产福利91精品 | 欧美乱熟臀69xxxxxx | 久久亚洲国产精品 | 欧美精品亚洲精品 | 国产一级片观看 | 91天堂影院 | 国产福利不卡视频 | 国产精品1000 | 伊人成人久久 | 亚洲电影成人 | 日韩专区一区二区 | 女人18毛片a级毛片一区二区 | 国产高清久久 | 婷婷综合久久 | 亚州欧美视频 | 国产69久久| av一级片在线观看 | 免费看污污视频的网站 | 在线91色| 久久伦理影院 | 亚洲国产中文字幕在线观看 | 久久久人人人 | 国产一级视频 | 91高清免费在线观看 | 伊人狠狠操 | 99精品视频在线看 | 国产激情电影综合在线看 | 精品国产乱码久久久久久久 | 天堂av免费在线 | 91看片在线免费观看 | 菠萝菠萝在线精品视频 | 国产成人免费精品 | 国内综合精品午夜久久资源 | 国产视频在线免费 | 久久久久久蜜桃一区二区 | 日韩精品视频免费看 | 人人爽人人爱 | 特黄色大片| 操高跟美女 | 97视频网址 | 狠狠干激情 | 一区中文字幕电影 | 日韩二区在线播放 | 国产剧情在线一区 | 免费看十八岁美女 | 1024手机在线看 | 色综合天天综合 | 天天综合久久 | 97视频久久久 | a电影在线观看 | 91免费视频国产 | 久久视频在线观看 | 香蕉影视 | 国产色视频123区 | 久久撸在线视频 | 手机av在线不卡 | 国产在线观看你懂得 | 色播五月激情五月 | 欧美精品中文字幕亚洲专区 | 国产色久 | 久久午夜影视 | 日韩在线观看a | 黄色一级大片在线免费看产 | 日韩成人免费在线 | 毛片永久新网址首页 | 夜夜高潮夜夜爽国产伦精品 | 97成人在线免费视频 | 四虎永久国产精品 | 亚洲另类视频在线 | 96av在线视频 | 天天夜夜亚洲 | 一级一片免费视频 | 成人av一区二区在线观看 | 久久天天拍 | 99精品欧美一区二区三区黑人哦 | 日韩欧美一区二区三区免费观看 | av在线一| 免费看日韩 | 在线国产日本 | 日韩精品久久中文字幕 | 亚洲精品乱码白浆高清久久久久久 | 亚洲1区在线 | 国产亚洲精品久久久久久久久久久久 | 在线视频 91| 伊人中文字幕在线 | 99精品色| 日韩.com| 91精品在线免费观看 | 欧美一级专区免费大片 | 国产精品涩涩屋www在线观看 | 91精选在线观看 | 91成人蝌蚪| 2023亚洲精品国偷拍自产在线 | 91av在线免费看 | 99久久99久久精品免费 | 亚洲精品乱码久久久久久写真 | 久久综合九色综合欧美狠狠 | 欧美精品乱码久久久久久按摩 | 精品久久一区二区三区 | 18网站在线观看 | 久久亚洲电影 | 亚洲成年人在线播放 | 99久久婷婷国产 | 亚洲精品国产拍在线 | 日韩r级电影在线观看 | 久久久久欧美精品999 | 日韩精品五月天 | 天天色天天操综合 | 欧美精品久久久久久久久久白贞 | 成人高清av在线 | 国产精品久久久久9999吃药 | 久久66热这里只有精品 | 国产亚洲亚洲 | 国产 视频 久久 | 国产视频精品在线 | 精品国产精品国产偷麻豆 | 国产一区黄色 | 伊人国产在线观看 | 波多野结衣电影一区二区 | 夜夜视频欧洲 | 就色干综合 | 欧产日产国产69 | 久草免费新视频 | 亚洲成人免费在线 | 99精彩视频| 久久女教师 | 欧美亚洲另类在线视频 | 日韩激情av在线 | 天天爱天天操天天射 | 97av视频| 中文字幕在线免费 | 亚洲成人午夜av | 日本精品午夜 | 国产精品一区二区三区观看 | 欧美经典久久 | 草免费视频 | 成年人免费看的视频 | 91精品在线观看视频 | 久久久久久国产精品久久 | 国产精品久久久久三级 | 欧美午夜性 | 夜夜躁狠狠躁日日躁 | 亚洲视频综合在线 | 久久人人插| www夜夜操com | 午夜视频日本 | 色婷婷六月天 | 欧美激情第一区 | 日韩高清在线一区二区三区 | 日韩精品视频久久 | 中文字幕丝袜 | 亚洲九九精品 | 91高清视频免费 | 91av视频在线播放 | 久久a v电影 | 国产一区二区三区午夜 | 一区av在线播放 | 欧美日韩性视频在线 | 99免费视频 | 99精品小视频 | 久久国产免 | 国产精品国内免费一区二区三区 | 九七人人干 | 日韩视频免费看 | 啪啪激情网 | 欧美精品v国产精品v日韩精品 | 欧美人人爱 | 九九热视频在线免费观看 | 国产成人精品国内自产拍免费看 | 激情综合五月 | 久草视频播放 | 日本三级不卡 | 青青河边草免费 | 综合影视 | 黄色网免费| 婷婷色在线资源 | 国产精品久久免费看 | 免费看精品久久片 | 亚洲激情综合 | 久久天堂网站 | 色五月成人 | av黄色在线观看 | 在线看污网站 | 五月天色丁香 | 欧美综合国产 | 国产美女精品 | 亚洲自拍偷拍色图 | 免费在线观看不卡av | 深夜免费福利视频 | 国产一区二区三区在线免费观看 | 制服丝袜欧美 | 国产91成人在在线播放 | av怡红院 | 欧美精品首页 | 久爱综合 | 99久久99 | 中文字幕无吗 | 91av视频导航| 人人躁 | 国产精品一区二区免费 | 国产精品高清免费在线观看 | 在线观看免费av网 | 久久精品国产亚洲 | 日本女人在线观看 | 天天射夜夜爽 | 黄a网| 九九久 | 成人av免费 | 国精产品满18岁在线 | 国产中文字幕在线免费观看 | 国产亚洲精品久久久久久久久久 | 伊人超碰在线 | 国产高清不卡av | 久久久久国产免费免费 | 亚洲成人高清在线 | 日日夜夜天天人人 | 91.精品高清在线观看 | 人人干干人人 | 日韩在线电影一区二区 | 国产探花视频在线播放 | 美女国产在线 | 黄色三级久久 | 狠狠色丁香婷婷综合基地 | 亚洲精欧美一区二区精品 | 午夜黄色大片 | 中文字幕一区av | 97国产在线观看 | 免费男女羞羞的视频网站中文字幕 | 久久精品国产精品亚洲 | 日本三级不卡视频 | 在线高清av | japanesexxxhd奶水 国产一区二区在线免费观看 | 久久99这里只有精品 | 亚洲国产精品成人av | 成人毛片a | 欧美美女视频在线观看 | 丁香婷婷久久久综合精品国产 | 国产精品国产毛片 | 激情一区二区三区欧美 | 国产黄色片网站 | 欧美日韩国产一区二 | 精品美女久久久久 | 人人网av | 亚洲综合视频在线观看 | 99久久精品国产毛片 | 欧美在线91 | 国产麻豆精品久久 | av电影在线播放 | 午夜久久久影院 | 国产一级电影免费观看 | 狠狠色综合欧美激情 | 麻豆成人小视频 | 天天综合视频在线观看 | 最新影院 | 久久久黄色av | 国产黄色网 | 免费成人黄色 | 天天搞夜夜骑 | 国产精品1024 | 国产拍揄自揄精品视频麻豆 | 999热线在线观看 | 亚洲欧美成人网 | 久久婷婷亚洲 | 99久免费精品视频在线观看 | av三级av| 日韩有码在线播放 | 欧美一区二区在线刺激视频 | 中文字幕在线色 | 国产精品久免费的黄网站 | 国产传媒一区在线 | 日韩精品专区 | 五月天天色 | 日本中文在线观看 | 国产黄视频在线观看 | 99在线精品观看 | 又色又爽的网站 | 国产91精品在线观看 | 波多野结衣视频一区 | 国产精品久久久久久久久久妇女 | 黄污在线看 | 色一级片 | 香蕉久久久久久av成人 | 亚洲欧美在线视频免费 | 毛片永久新网址首页 | 欧美国产日韩久久 | 色搞搞 | 99久久久国产精品免费观看 | 亚洲精品视频在线看 | 日韩理论片在线观看 | 草草草影院 | 99r在线精品 | 国产精品va视频 | 久久久99精品免费观看乱色 | 久久在线视频精品 | 日韩二区三区在线观看 | 97高清视频 | 久久看免费视频 | 人人精品 | 一区二区三区免费看 | 97福利视频 | 九九电影在线 | 视频国产精品 | 亚洲观看黄色网 | 视频三区在线 | 99性视频 | 国产手机在线播放 | 毛片激情永久免费 | 国产手机在线精品 | 极品国产91在线网站 | 国产69精品久久久久久久久久 | 国产精品久久久久久久av大片 | 国产96精品 | 婷婷免费视频 | 精品不卡av| 欧美日韩视频在线观看一区二区 | 日本免费久久高清视频 | 免费色av | 国产在线黄色 | 国产一区二区精 | 成人a在线观看 | 国产精品麻豆视频 | 综合色站导航 | 欧美男同视频网站 | 日韩色视频在线观看 | 日韩欧美国产免费播放 | 久久人人爽人人爽人人片av软件 | 精品久久久网 | 日韩在线短视频 | 精品国偷自产国产一区 | 亚洲人成免费 | 亚洲精品午夜久久久久久久久久久 | 国产精品一区二区免费在线观看 | 国产在线免费 | 蜜臀aⅴ精品一区二区三区 久久视屏网 | 国产精品18久久久 | 亚洲成人精品在线观看 | 成人综合婷婷国产精品久久免费 | 久久精品这里都是精品 | 久久久久免费精品视频 | 国产不卡一二三区 | 久久综合欧美精品亚洲一区 | 久久久久国产成人免费精品免费 | 韩国av一区二区 | 久久久久久麻豆 | 天天操夜夜操 | 伊人射| 伊人影院av| 9草在线| 国产精品久久久久久久99 | 久草在线中文视频 | 国产福利免费看 | 人人射av| 日韩天天综合 | 日韩中文在线视频 | 午夜免费在线观看 | www免费在线观看 | 99热精品久久 | 性日韩欧美在线视频 | 欧美最猛性xxx | 国产精品99久久99久久久二8 | 97超碰网 | 久草视频中文 | 丁香九月激情 | 婷婷丁香七月 | 视频在线在亚洲 | 国产一级大片在线观看 | 狠狠操91 | 日韩精品一区在线播放 | av最新资源 | 天天操天天玩 | 国产91精品一区二区麻豆网站 | 99久久国产免费看 | 久久深夜 | 狠狠ri | 二区三区在线视频 | 91精品国自产在线观看欧美 | 蜜臀精品久久久久久蜜臀 | 欧美俄罗斯性视频 | 五月天六月色 | 日韩av在线小说 | 天堂av观看| 激情丁香久久 | 一区二区三区四区在线 | 在线观看免费国产小视频 | 中文字幕第一页在线 | av电影中文字幕在线观看 | 久草国产视频 | 少妇精品久久久一区二区免费 | 日韩乱色精品一区二区 | 亚洲国产精品小视频 | 久久综合色天天久久综合图片 | 精品国产自| 91精品系列| 国产成人在线观看免费 | 日本爱爱免费视频 | 久久精品99国产国产精 | 国产精品电影一区 | 日韩精品欧美视频 | 日韩欧美在线综合网 | 精品免费观看 | 亚洲免费在线观看视频 | 国产97av | 久久久网址 | 不卡的av在线 | 中文字幕视频网 | 91伊人久久大香线蕉蜜芽人口 | 国产日韩欧美精品在线观看 | 天天干天天草 | 国产涩涩网站 | 亚洲视频在线免费看 | 成人高清在线观看 | 国产精品永久免费视频 | 91久久国产自产拍夜夜嗨 | 亚洲综合网 | 国产资源网 | 免费在线观看一区 | 精品1区2区 | 三级av在线免费观看 | 中文字幕资源网在线观看 | 国产精品美女久久久久久久 | 精品久久久久国产免费第一页 | 午夜国产在线 | 日韩欧美视频一区二区三区 |