34.8. Результаты тестов производительности #
В этом разделе приведены результаты стандартных аналитических тестов производительности TCP-H и TCP-DS. Вы можете использовать результаты этих тестов для планирования ресурсов, а также выделения вычислительных ресурсов.
Описание теста:
Размер данных: 100 ГБ. Соответствует коэффициенту масштабирования 100 в параметрах теста производительности.
Сервер: 64 виртуальных ядра и 128 ГБ оперативной памяти.
Ограничения:
Параметры конфигурации Postgres Pro не оказали влияния на результаты тестов производительности.
Для параметра конфигурации
duckdb.max_memory
было указано значение32Gb
. За более подробной информацией обратитесь к официальной документации Postgres Pro по параметрам конфигурации duckdb.max_memory / duckdb.memory_limit.Для параметра конфигурации
duckdb.threads
было указано значение8
. За более подробной информацией обратитесь к официальной документации Postgres Pro по параметрам конфигурации duckdb.threads / duckdb.worker_threads.
В дополнение ко времени выполнения запросов были измерены системные метрики, описанные в таблице ниже.
Таблица 34.5. Системные метрики
Метрика | Единицы измерения | Описание |
---|---|---|
| Секунды | Количество секунд, в течение которых ЦП использовался процессом в режиме пользователя |
| Секунды | Количество секунд, в течение которых ЦП использовался процессом в режиме ядра |
| МБ | Максимальный объём памяти, занимаемый процессом |
| МБ | Среднее количество памяти, занимаемое процессом |
| МБ | Объём данных, прочитанных процессом из хранилища |
| МБ | Объём данных, записанных процессом в хранилище |
34.8.1. Подготовка тестовых данных и таблиц #
Были сгенерированы тестовые данные в формате CSV. За более подробной информацией об используемых инструментах и процедуре в целом обратитесь к: https://tpc.org.
CSV-файлы были загружены в таблицы куч Postgres Pro.
Тестовые данные были экспортированы в Parquet-файлы, после чего для них были созданы представления.
Обратите внимание, что при создании представлений вам нужно указать типы столбцов, соответствующие типам столбцов таблиц Postgres Pro. Это необходимо для нормального функционирования аналитических запросов.
34.8.2. Результаты теста производительности TCP-H #
Создание тестовых таблиц:
COPY nation
TO '/home/test/tpch_tables100/nation.parquet'
(FORMAT 'parquet', COMPRESSION 'zstd');
COPY region
TO '/home/test/tpch_tables100/region.parquet'
(FORMAT 'parquet', COMPRESSION 'zstd');
COPY part
TO '/home/test/tpch_tables100/part.parquet'
(FORMAT 'parquet', COMPRESSION 'zstd');
COPY supplierF
TO '/home/test/tpch_tables100/supplier.parquet'
(FORMAT 'parquet', COMPRESSION 'zstd');
COPY partsupp
TO '/home/test/tpch_tables100/partsupp.parquet'
(FORMAT 'parquet', COMPRESSION 'zstd');
COPY customer
TO '/home/test/tpch_tables100/customer.parquet'
(FORMAT 'parquet', COMPRESSION 'zstd');
COPY orders
TO '/home/test/tpch_tables100/orders.parquet'
(FORMAT 'parquet', COMPRESSION 'zstd');
COPY lineitem
TO '/home/test/tpch_tables100/lineitem.parquet'
(FORMAT 'parquet', COMPRESSION 'zstd');
CREATE VIEW nation_parquet AS SELECT
r['n_nationkey']::integer AS n_nationkey,
r['n_name']::text AS n_name,
r['n_regionkey']::integer AS n_regionkey,
r['n_comment']::text AS n_comment from
read_parquet('/home/test/tpch_tables100/nation.parquet', binary_as_string => true) r;
CREATE VIEW region_parquet AS SELECT
r['r_regionkey']::integer AS r_regionkey,
r['r_name']::text AS r_name,
r['r_comment']::text AS r_comment from
read_parquet('/home/test/tpch_tables100/region.parquet', binary_as_string => true) r;
CREATE VIEW part_parquet AS SELECT
r['p_partkey']::integer AS p_partkey,
r['p_name']::text AS p_name,
r['p_mfgr']::text AS p_mfgr,
r['p_brand']::text AS p_brand,
r['p_type']::text AS p_type,
r['p_size']::integer AS p_size,
r['p_container']::text AS p_container,
r['p_retailprice']::decimal(15,2) AS p_retailprice,
r['p_comment']::text AS p_comment from
read_parquet('/home/test/tpch_tables100/part.parquet', binary_as_string => true) r;
CREATE VIEW supplier_parquet AS SELECT
r['s_suppkey']::integer AS s_suppkey,
r['s_name']::text AS s_name,
r['s_address']::text AS s_address,
r['s_nationkey']::integer AS s_nationkey,
r['s_phone']::text AS s_phone,
r['s_acctbal']::decimal(15,2) AS s_acctbal,
r['s_comment']::text AS s_comment from
read_parquet('/home/test/tpch_tables100/supplier.parquet', binary_as_string => true) r;
CREATE VIEW nation_parquet AS SELECT
r['n_nationkey']::integer AS n_nationkey,
r['n_name']::text AS n_name,
r['n_regionkey']::integer AS n_regionkey,
r['n_comment']::text AS n_comment from
read_parquet('/home/test/tpch_tables100/nation.parquet', binary_as_string => true) r;
CREATE VIEW region_parquet AS SELECT
r['r_regionkey']::integer AS r_regionkey,
r['r_name']::text AS r_name,
r['r_comment']::text AS r_comment from
read_parquet('/home/test/tpch_tables100/region.parquet', binary_as_string => true) r;
CREATE VIEW part_parquet AS SELECT
r['p_partkey']::integer AS p_partkey,
r['p_name']::text AS p_name,
r['p_mfgr']::text AS p_mfgr,
r['p_brand']::text AS p_brand,
r['p_type']::text AS p_type,
r['p_size']::integer AS p_size,
r['p_container']::text AS p_container,
r['p_retailprice']::decimal(15,2) AS p_retailprice,
r['p_comment']::text AS p_comment from
read_parquet('/home/test/tpch_tables100/part.parquet', binary_as_string => true) r;
CREATE VIEW supplier_parquet AS SELECT
r['s_suppkey']::integer AS s_suppkey,
r['s_name']::text AS s_name,
r['s_address']::text AS s_address,
r['s_nationkey']::integer AS s_nationkey,
r['s_phone']::text AS s_phone,
r['s_acctbal']::decimal(15,2) AS s_acctbal,
r['s_comment']::text AS s_comment from
read_parquet('/home/test/tpch_tables100/supplier.parquet', binary_as_string => true) r;
CREATE VIEW lineitem_parquet AS SELECT
r['l_orderkey']::integer AS l_orderkey,
r['l_partkey']::integer AS l_partkey,
r['l_suppkey']::integer AS l_suppkey,
r['l_linenumber']::integer AS l_linenumber,
r['l_quantity']::decimal(15,2) AS l_quantity,
r['l_extendedprice']::decimal(15,2) AS l_extendedprice,
r['l_discount']::decimal(15,2) AS l_discount,
r['l_tax']::decimal(15,2) AS l_tax,
r['l_returnflag']::text AS l_returnflag,
r['l_linestatus']::text AS l_linestatus,
r['l_shipdate']::date AS l_shipdate,
r['l_commitdate']::date AS l_commitdate,
r['l_receiptdate']::date AS l_receiptdate,
r['l_shipinstruct']::text AS l_shipinstruct,
r['l_shipmode']::text AS l_shipmode,
r['l_comment']::text AS l_comment from
read_parquet('/home/test/tpch_tables100/lineitem.parquet', binary_as_string => true) r;
Таблица 34.6. Данные теста производительности TCP-H
Таблица | Количество строк |
---|---|
| 1 500 000 |
| 59 985 781 |
| 25 |
| 15 000 000 |
| 2 000 000 |
| 8 000 000 |
| 5 |
| 100 000 |
| 105 |
Таблица 34.7. Тест производительности TCP-H: результаты первого запуска теста
SF100 Parquet | Продолжительность (с) |
|
|
|
|
|
|
---|---|---|---|---|---|---|---|
Q1 | 0.51 | 1.96 | 0.16 | 92 | 61 | 150 | 0 |
Q2 | 0.25 | 0.03 | 0.05 | 59 | 20 | 31 | 0 |
Q3 | 0.39 | 1.18 | 0.18 | 110 | 76 | 205 | 0 |
Q4 | 0.34 | 0.41 | 0.11 | 101 | 46 | 97 | 0 |
Q5 | 0.42 | 0.83 | 0.18 | 120 | 63 | 181 | 0 |
Q6 | 0.3 | 0.67 | 0.12 | 80 | 40 | 144 | 0 |
Q7 | 0.46 | 1.18 | 0.25 | 125 | 74 | 244 | 0 |
Q8 | 0.5 | 1.06 | 0.25 | 132 | 77 | 227 | 0 |
Q9 | 0.54 | 1.66 | 0.23 | 309 | 180 | 287 | 0 |
Q10 | 0.5 | 1.09 | 0.21 | 129 | 68 | 197 | 0 |
Q11 | 0.31 | 0.34 | 0.08 | 100 | 46 | 55 | 0 |
Q12 | 0.37 | 1.25 | 0.17 | 91 | 64 | 156 | 0 |
Q13 | 0.27 | 0.43 | 0.2 | 247 | 84 | 95 | 0 |
Q14 | 0.51 | 0.62 | 0.18 | 563 | 141 | 153 | 0 |
Q15 | 0.44 | 1.4 | 0.27 | 128 | 76 | 217 | 0.008 |
Q16 | 0.25 | 0.07 | 0.06 | 93 | 31 | 38 | 0 |
Q17 | 0.41 | 1.33 | 0.34 | 214 | 113 | 247 | 0 |
Q18 | 0.45 | 1.56 | 0.31 | 326 | 159 | 101 | 0 |
Q19 | 0.47 | 1.38 | 0.27 | 129 | 80 | 277 | 0 |
Q20 | 0.38 | 0.64 | 0.16 | 119 | 57 | 186 | 0 |
Q21 | 0.71 | 2.56 | 0.61 | 687 | 314 | 196 | 0 |
Q22 | 0.22 | 0.06 | 0.04 | 69 | 23 | 36 | 0 |
Таблица 34.8. Тест производительности TCP-H: результаты второго запуска теста
SF100 Parquet | Продолжительность (с) |
|
|
|
|
|
|
---|---|---|---|---|---|---|---|
Q1 | 0.33 | 1.74 | 0.07 | 92 | 46 | 0 | 0 |
Q2 | 0.11 | 0.03 | 0.03 | 47 | 13 | 0 | 0 |
Q3 | 0.21 | 0.85 | 0.07 | 108 | 36 | 0 | 0 |
Q4 | 0.14 | 0.35 | 0.06 | 80 | 30 | 0 | 0 |
Q5 | 0.22 | 0.83 | 0.1 | 121 | 40 | 0 | 0 |
Q6 | 0.14 | 0.58 | 0.06 | 63 | 26 | 0 | 0 |
Q7 | 0.23 | 0.88 | 0.09 | 114 | 38 | 0 | 0 |
Q8 | 0.23 | 0.66 | 0.1 | 132 | 44 | 0.13 | 0 |
Q9 | 0.33 | 1.66 | 0.23 | 311 | 199 | 0 | 0 |
Q10 | 0.25 | 1.19 | 0.13 | 118 | 73 | 0 | 0 |
Q11 | 0.18 | 0.33 | 0.05 | 79 | 30 | 0 | 0 |
Q12 | 0.22 | 0.97 | 0.06 | 92 | 31 | 0 | 0 |
Q13 | 0.14 | 0.37 | 0.11 | 196 | 56 | 0 | 0 |
Q14 | 0.22 | 0.38 | 0.08 | 114 | 38 | 0 | 0 |
Q15 | 0.23 | 0.93 | 0.09 | 128 | 43 | 0 | 0 |
Q16 | 0.13 | 0.06 | 0.03 | 74 | 21 | 0 | 0 |
Q17 | 0.25 | 1.36 | 0.24 | 271 | 148 | 0 | 0 |
Q18 | 0.31 | 1.72 | 0.24 | 320 | 173 | 0 | 0 |
Q19 | 0.25 | 1.37 | 0.12 | 126 | 72 | 0.13 | 0 |
Q20 | 0.16 | 0.77 | 0.11 | 122 | 61 | 0 | 0 |
Q21 | 0.49 | 2.51 | 0.57 | 690 | 406 | 0.13 | 0 |
Q22 | 0.09 | 0.05 | 0.02 | 55 | 15 | 0 | 0 |
34.8.3. Результаты теста производительности TCP-DS #
Создание тестовых таблиц:
COPY dbgen_version
TO '/home/test/tpcds_tables100/dbgen_version.parquet'
(FORMAT 'parquet', COMPRESSION 'zstd');
COPY customer_address
TO '/home/test/tpcds_tables100/customer_address.parquet'
(FORMAT 'parquet', COMPRESSION 'zstd');
COPY customer_demographics
TO '/home/test/tpcds_tables100/customer_demographics.parquet'
(FORMAT 'parquet', COMPRESSION 'zstd');
COPY date_dim
TO '/home/test/tpcds_tables100/date_dim.parquet'
(FORMAT 'parquet', COMPRESSION 'zstd');
COPY warehouse
TO '/home/test/tpcds_tables100/warehouse.parquet'
(FORMAT 'parquet', COMPRESSION 'zstd');
COPY ship_mode
TO '/home/test/tpcds_tables100/ship_mode.parquet'
(FORMAT 'parquet', COMPRESSION 'zstd');
COPY time_dim
TO '/home/test/tpcds_tables100/time_dim.parquet'
(FORMAT 'parquet', COMPRESSION 'zstd');
COPY reason
TO '/home/test/tpcds_tables100/reason.parquet'
(FORMAT 'parquet', COMPRESSION 'zstd');
COPY income_band
TO '/home/test/tpcds_tables100/income_band.parquet'
(FORMAT 'parquet', COMPRESSION 'zstd');
COPY item
TO '/home/test/tpcds_tables100/item.parquet'
(FORMAT 'parquet', COMPRESSION 'zstd');
COPY store
TO '/home/test/tpcds_tables100/store.parquet'
(FORMAT 'parquet', COMPRESSION 'zstd');
COPY call_center
TO '/home/test/tpcds_tables100/call_center.parquet'
(FORMAT 'parquet', COMPRESSION 'zstd');
COPY customer
TO '/home/test/tpcds_tables100/customer.parquet'
(FORMAT 'parquet', COMPRESSION 'zstd');
COPY web_site
TO '/home/test/tpcds_tables100/web_site.parquet'
(FORMAT 'parquet', COMPRESSION 'zstd');
COPY store_returns
TO '/home/test/tpcds_tables100/store_returns.parquet'
(FORMAT 'parquet', COMPRESSION 'zstd');
COPY household_demographics
TO '/home/test/tpcds_tables100/household_demographics.parquet'
(FORMAT 'parquet', COMPRESSION 'zstd');
COPY web_page
TO '/home/test/tpcds_tables100/web_page.parquet'
(FORMAT 'parquet', COMPRESSION 'zstd');
COPY promotion
TO '/home/test/tpcds_tables100/promotion.parquet'
(FORMAT 'parquet', COMPRESSION 'zstd');
COPY catalog_page
TO '/home/test/tpcds_tables100/catalog_page.parquet'
(FORMAT 'parquet', COMPRESSION 'zstd');
COPY inventory
TO '/home/test/tpcds_tables100/inventory.parquet'
(FORMAT 'parquet', COMPRESSION 'zstd');
COPY catalog_returns
TO '/home/test/tpcds_tables100/catalog_returns.parquet'
(FORMAT 'parquet', COMPRESSION 'zstd');
COPY web_returns
TO '/home/test/tpcds_tables100/web_returns.parquet'
(FORMAT 'parquet', COMPRESSION 'zstd');
COPY web_sales
TO '/home/test/tpcds_tables100/web_sales.parquet'
(FORMAT 'parquet', COMPRESSION 'zstd');
COPY catalog_sales
TO '/home/test/tpcds_tables100/catalog_sales.parquet'
(FORMAT 'parquet', COMPRESSION 'zstd');
COPY store_sales
TO '/home/test/tpcds_tables100/store_sales.parquet'
(FORMAT 'parquet', COMPRESSION 'zstd');
CREATE VIEW dbgen_version_parquet AS SELECT
r['dv_version']::text AS dv_version,
r['dv_create_date']::date AS dv_create_date,
r['dv_create_time']::time AS dv_create_time,
r['dv_cmdline_args']::text AS dv_cmdline_args from
read_parquet('/home/test/tpcds_tables100/dbgen_version.parquet', binary_as_string => true) r;
CREATE VIEW customer_address_parquet AS SELECT
r['ca_address_sk']::integer AS ca_address_sk,
r['ca_address_id']::text AS ca_address_id,
r['ca_street_number']::text AS ca_street_number,
r['ca_street_name']::text AS ca_street_name,
r['ca_street_type']::text AS ca_street_type,
r['ca_suite_number']::text AS ca_suite_number,
r['ca_city']::text AS ca_city,
r['ca_county']::text AS ca_county,
r['ca_state']::text AS ca_state,
r['ca_zip']::text AS ca_zip,
r['ca_country']::text AS ca_country,
r['ca_gmt_offset']::decimal(5,2) AS ca_gmt_offset,
r['ca_location_type']::text AS ca_location_type from
read_parquet('/home/test/tpcds_tables100/customer_address.parquet', binary_as_string => true) r;
CREATE VIEW customer_demographics_parquet AS SELECT
r['cd_demo_sk']::integer AS cd_demo_sk,
r['cd_gender']::text AS cd_gender,
r['cd_marital_status']::text AS cd_marital_status,
r['cd_education_status']::text AS cd_education_status,
r['cd_purchase_estimate']::integer AS cd_purchase_estimate,
r['cd_credit_rating']::text AS cd_credit_rating,
r['cd_dep_count']::integer AS cd_dep_count,
r['cd_dep_employed_count']::integer AS cd_dep_employed_count,
r['cd_dep_college_count']::integer AS cd_dep_college_count from
read_parquet('/home/test/tpcds_tables100/customer_demographics.parquet', binary_as_string => true) r;
CREATE VIEW date_dim_parquet AS SELECT
r['d_date_sk']::integer AS d_date_sk,
r['d_date_id']::text AS d_date_id,
r['d_date']::date AS d_date,
r['d_month_seq']::integer AS d_month_seq,
r['d_week_seq']::integer AS d_week_seq,
r['d_quarter_seq']::integer AS d_quarter_seq,
r['d_year']::integer AS d_year,
r['d_dow']::integer AS d_dow,
r['d_moy']::integer AS d_moy,
r['d_dom']::integer AS d_dom,
r['d_qoy']::integer AS d_qoy,
r['d_fy_year']::integer AS d_fy_year,
r['d_fy_quarter_seq']::integer AS d_fy_quarter_seq,
r['d_fy_week_seq']::integer AS d_fy_week_seq,
r['d_day_name']::text AS d_day_name,
r['d_quarter_name']::text AS d_quarter_name,
r['d_holiday']::text AS d_holiday,
r['d_weekend']::text AS d_weekend,
r['d_following_holiday']::text AS d_following_holiday,
r['d_first_dom']::integer AS d_first_dom,
r['d_last_dom']::integer AS d_last_dom,
r['d_same_day_ly']::integer AS d_same_day_ly,
r['d_same_day_lq']::integer AS d_same_day_lq,
r['d_current_day']::text AS d_current_day,
r['d_current_week']::text AS d_current_week,
r['d_current_month']::text AS d_current_month,
r['d_current_quarter']::text AS d_current_quarter,
r['d_current_year']::text AS d_current_year from
read_parquet('/home/test/tpcds_tables100/date_dim.parquet', binary_as_string => true) r;
CREATE VIEW warehouse_parquet AS SELECT
r['w_warehouse_sk']::integer AS w_warehouse_sk,
r['w_warehouse_id']::text AS w_warehouse_id,
r['w_warehouse_name']::text AS w_warehouse_name,
r['w_warehouse_sq_ft']::integer AS w_warehouse_sq_ft,
r['w_street_number']::text AS w_street_number,
r['w_street_name']::text AS w_street_name,
r['w_street_type']::text AS w_street_type,
r['w_suite_number']::text AS w_suite_number,
r['w_city']::text AS w_city,
r['w_county']::text AS w_county,
r['w_state']::text AS w_state,
r['w_zip']::text AS w_zip,
r['w_country']::text AS w_country,
r['w_gmt_offset']::decimal(5,2) AS w_gmt_offset from
read_parquet('/home/test/tpcds_tables100/warehouse.parquet', binary_as_string => true) r;
CREATE VIEW ship_mode_parquet AS SELECT
r['sm_ship_mode_sk']::integer AS sm_ship_mode_sk,
r['sm_ship_mode_id']::text AS sm_ship_mode_id,
r['sm_type']::text AS sm_type,
r['sm_code']::text AS sm_code,
r['sm_carrier']::text AS sm_carrier,
r['sm_contract']::text AS sm_contract from
read_parquet('/home/test/tpcds_tables100/ship_mode.parquet', binary_as_string => true) r;
CREATE VIEW time_dim_parquet AS SELECT
r['t_time_sk']::integer AS t_time_sk,
r['t_time_id']::text AS t_time_id,
r['t_time']::integer AS t_time,
r['t_hour']::integer AS t_hour,
r['t_minute']::integer AS t_minute,
r['t_second']::integer AS t_second,
r['t_am_pm']::text AS t_am_pm,
r['t_shift']::text AS t_shift,
r['t_sub_shift']::text AS t_sub_shift,
r['t_meal_time']::text AS t_meal_time from
read_parquet('/home/test/tpcds_tables100/time_dim.parquet', binary_as_string => true) r;
CREATE VIEW reason_parquet AS SELECT
r['r_reason_sk']::integer AS r_reason_sk,
r['r_reason_id']::text AS r_reason_id,
r['r_reason_desc']::text AS r_reason_desc from
read_parquet('/home/test/tpcds_tables100/reason.parquet', binary_as_string => true) r;
CREATE VIEW income_band_parquet AS SELECT
r['ib_income_band_sk']::integer AS ib_income_band_sk,
r['ib_lower_bound']::integer AS ib_lower_bound,
r['ib_upper_bound']::integer AS ib_upper_bound from
read_parquet('/home/test/tpcds_tables100/income_band.parquet', binary_as_string => true) r;
CREATE VIEW item_parquet AS SELECT
r['i_item_sk']::integer AS i_item_sk,
r['i_item_id']::text AS i_item_id,
r['i_rec_start_date']::date AS i_rec_start_date,
r['i_rec_end_date']::date AS i_rec_end_date,
r['i_item_desc']::text AS i_item_desc,
r['i_current_price']::decimal(7,2) AS i_current_price,
r['i_wholesale_cost']::decimal(7,2) AS i_wholesale_cost,
r['i_brand_id']::integer AS i_brand_id,
r['i_brand']::text AS i_brand,
r['i_class_id']::integer AS i_class_id,
r['i_class']::text AS i_class,
r['i_category_id']::integer AS i_category_id,
r['i_category']::text AS i_category,
r['i_manufact_id']::integer AS i_manufact_id,
r['i_manufact']::text AS i_manufact,
r['i_size']::text AS i_size,
r['i_formulation']::text AS i_formulation,
r['i_color']::text AS i_color,
r['i_units']::text AS i_units,
r['i_container']::text AS i_container,
r['i_manager_id']::integer AS i_manager_id,
r['i_product_name']::text AS i_product_name from
read_parquet('/home/test/tpcds_tables100/item.parquet', binary_as_string => true) r;
CREATE VIEW store_parquet AS SELECT
r['s_store_sk']::integer AS s_store_sk,
r['s_store_id']::text AS s_store_id,
r['s_rec_start_date']::date AS s_rec_start_date,
r['s_rec_end_date']::date AS s_rec_end_date,
r['s_closed_date_sk']::integer AS s_closed_date_sk,
r['s_store_name']::text AS s_store_name,
r['s_number_employees']::integer AS s_number_employees,
r['s_floor_space']::integer AS s_floor_space,
r['s_hours']::text AS s_hours,
r['s_manager']::text AS s_manager,
r['s_market_id']::integer AS s_market_id,
r['s_geography_class']::text AS s_geography_class,
r['s_market_desc']::text AS s_market_desc,
r['s_market_manager']::text AS s_market_manager,
r['s_division_id']::integer AS s_division_id,
r['s_division_name']::text AS s_division_name,
r['s_company_id']::integer AS s_company_id,
r['s_company_name']::text AS s_company_name,
r['s_street_number']::text AS s_street_number,
r['s_street_name']::text AS s_street_name,
r['s_street_type']::text AS s_street_type,
r['s_suite_number']::text AS s_suite_number,
r['s_city']::text AS s_city,
r['s_county']::text AS s_county,
r['s_state']::text AS s_state,
r['s_zip']::text AS s_zip,
r['s_country']::text AS s_country,
r['s_gmt_offset']::decimal(5,2) AS s_gmt_offset,
r['s_tax_precentage']::decimal(5,2) AS s_tax_precentage from
read_parquet('/home/test/tpcds_tables100/store.parquet', binary_as_string => true) r;
CREATE VIEW call_center_parquet AS SELECT
r['cc_call_center_sk']::integer AS cc_call_center_sk,
r['cc_call_center_id']::text AS cc_call_center_id,
r['cc_rec_start_date']::date AS cc_rec_start_date,
r['cc_rec_end_date']::date AS cc_rec_end_date,
r['cc_closed_date_sk']::integer AS cc_closed_date_sk,
r['cc_open_date_sk']::integer AS cc_open_date_sk,
r['cc_name']::text AS cc_name,
r['cc_class']::text AS cc_class,
r['cc_employees']::integer AS cc_employees,
r['cc_sq_ft']::integer AS cc_sq_ft,
r['cc_hours']::text AS cc_hours,
r['cc_manager']::text AS cc_manager,
r['cc_mkt_id']::integer AS cc_mkt_id,
r['cc_mkt_class']::text AS cc_mkt_class,
r['cc_mkt_desc']::text AS cc_mkt_desc,
r['cc_market_manager']::text AS cc_market_manager,
r['cc_division']::integer AS cc_division,
r['cc_division_name']::text AS cc_division_name,
r['cc_company']::integer AS cc_company,
r['cc_company_name']::text AS cc_company_name,
r['cc_street_number']::text AS cc_street_number,
r['cc_street_name']::text AS cc_street_name,
r['cc_street_type']::text AS cc_street_type,
r['cc_suite_number']::text AS cc_suite_number,
r['cc_city']::text AS cc_city,
r['cc_county']::text AS cc_county,
r['cc_state']::text AS cc_state,
r['cc_zip']::text AS cc_zip,
r['cc_country']::text AS cc_country,
r['cc_gmt_offset']::decimal(5,2) AS cc_gmt_offset,
r['cc_tax_percentage']::decimal(5,2) AS cc_tax_percentage from
read_parquet('/home/test/tpcds_tables100/call_center.parquet', binary_as_string => true) r;
CREATE VIEW customer_parquet AS SELECT
r['c_customer_sk']::integer AS c_customer_sk,
r['c_customer_id']::text AS c_customer_id,
r['c_current_cdemo_sk']::integer AS c_current_cdemo_sk,
r['c_current_hdemo_sk']::integer AS c_current_hdemo_sk,
r['c_current_addr_sk']::integer AS c_current_addr_sk,
r['c_first_shipto_date_sk']::integer AS c_first_shipto_date_sk,
r['c_first_sales_date_sk']::integer AS c_first_sales_date_sk,
r['c_salutation']::text AS c_salutation,
r['c_first_name']::text AS c_first_name,
r['c_last_name']::text AS c_last_name,
r['c_preferred_cust_flag']::text AS c_preferred_cust_flag,
r['c_birth_day']::integer AS c_birth_day,
r['c_birth_month']::integer AS c_birth_month,
r['c_birth_year']::integer AS c_birth_year,
r['c_birth_country']::text AS c_birth_country,
r['c_login']::text AS c_login,
r['c_email_address']::text AS c_email_address,
r['c_last_review_date_sk']::integer AS c_last_review_date_sk from
read_parquet('/home/test/tpcds_tables100/customer.parquet', binary_as_string => true) r;
CREATE VIEW web_site_parquet AS SELECT
r['web_site_sk']::integer AS web_site_sk,
r['web_site_id']::text AS web_site_id,
r['web_rec_start_date']::date AS web_rec_start_date,
r['web_rec_end_date']::date AS web_rec_end_date,
r['web_name']::text AS web_name,
r['web_open_date_sk']::integer AS web_open_date_sk,
r['web_close_date_sk']::integer AS web_close_date_sk,
r['web_class']::text AS web_class,
r['web_manager']::text AS web_manager,
r['web_mkt_id']::integer AS web_mkt_id,
r['web_mkt_class']::text AS web_mkt_class,
r['web_mkt_desc']::text AS web_mkt_desc,
r['web_market_manager']::text AS web_market_manager,
r['web_company_id']::integer AS web_company_id,
r['web_company_name']::text AS web_company_name,
r['web_street_number']::text AS web_street_number,
r['web_street_name']::text AS web_street_name,
r['web_street_type']::text AS web_street_type,
r['web_suite_number']::text AS web_suite_number,
r['web_city']::text AS web_city,
r['web_county']::text AS web_county,
r['web_state']::text AS web_state,
r['web_zip']::text AS web_zip,
r['web_country']::text AS web_country,
r['web_gmt_offset']::decimal(5,2) AS web_gmt_offset,
r['web_tax_percentage']::decimal(5,2) AS web_tax_percentage from
read_parquet('/home/test/tpcds_tables100/web_site.parquet', binary_as_string => true) r;
CREATE VIEW store_returns_parquet AS SELECT
r['sr_returned_date_sk']::integer AS sr_returned_date_sk,
r['sr_return_time_sk']::integer AS sr_return_time_sk,
r['sr_item_sk']::integer AS sr_item_sk,
r['sr_customer_sk']::integer AS sr_customer_sk,
r['sr_cdemo_sk']::integer AS sr_cdemo_sk,
r['sr_hdemo_sk']::integer AS sr_hdemo_sk,
r['sr_addr_sk']::integer AS sr_addr_sk,
r['sr_store_sk']::integer AS sr_store_sk,
r['sr_reason_sk']::integer AS sr_reason_sk,
r['sr_ticket_number']::integer AS sr_ticket_number,
r['sr_return_quantity']::integer AS sr_return_quantity,
r['sr_return_amt']::decimal(7,2) AS sr_return_amt,
r['sr_return_tax']::decimal(7,2) AS sr_return_tax,
r['sr_return_amt_inc_tax']::decimal(7,2) AS sr_return_amt_inc_tax,
r['sr_fee']::decimal(7,2) AS sr_fee,
r['sr_return_ship_cost']::decimal(7,2) AS sr_return_ship_cost,
r['sr_refunded_cash']::decimal(7,2) AS sr_refunded_cash,
r['sr_reversed_charge']::decimal(7,2) AS sr_reversed_charge,
r['sr_store_credit']::decimal(7,2) AS sr_store_credit,
r['sr_net_loss']::decimal(7,2) AS sr_net_loss from
read_parquet('/home/test/tpcds_tables100/store_returns.parquet', binary_as_string => true) r;
CREATE VIEW household_demographics_parquet AS SELECT
r['hd_demo_sk']::integer AS hd_demo_sk,
r['hd_income_band_sk']::integer AS hd_income_band_sk,
r['hd_buy_potential']::text AS hd_buy_potential,
r['hd_dep_count']::integer AS hd_dep_count,
r['hd_vehicle_count']::integer AS hd_vehicle_count from
read_parquet('/home/test/tpcds_tables100/household_demographics.parquet', binary_as_string => true) r;
CREATE VIEW web_page_parquet AS SELECT
r['wp_web_page_sk']::integer AS wp_web_page_sk,
r['wp_web_page_id']::text AS wp_web_page_id,
r['wp_rec_start_date']::date AS wp_rec_start_date,
r['wp_rec_end_date']::date AS wp_rec_end_date,
r['wp_creation_date_sk']::integer AS wp_creation_date_sk,
r['wp_access_date_sk']::integer AS wp_access_date_sk,
r['wp_autogen_flag']::text AS wp_autogen_flag,
r['wp_customer_sk']::integer AS wp_customer_sk,
r['wp_url']::text AS wp_url,
r['wp_type']::text AS wp_type,
r['wp_char_count']::integer AS wp_char_count,
r['wp_link_count']::integer AS wp_link_count,
r['wp_image_count']::integer AS wp_image_count,
r['wp_max_ad_count']::integer AS wp_max_ad_count from
read_parquet('/home/test/tpcds_tables100/web_page.parquet', binary_as_string => true) r;
CREATE VIEW promotion_parquet AS SELECT
r['p_promo_sk']::integer AS p_promo_sk,
r['p_promo_id']::text AS p_promo_id,
r['p_start_date_sk']::integer AS p_start_date_sk,
r['p_end_date_sk']::integer AS p_end_date_sk,
r['p_item_sk']::integer AS p_item_sk,
r['p_cost']::decimal(15,2) AS p_cost,
r['p_response_target']::integer AS p_response_target,
r['p_promo_name']::text AS p_promo_name,
r['p_channel_dmail']::text AS p_channel_dmail,
r['p_channel_email']::text AS p_channel_email,
r['p_channel_catalog']::text AS p_channel_catalog,
r['p_channel_tv']::text AS p_channel_tv,
r['p_channel_radio']::text AS p_channel_radio,
r['p_channel_press']::text AS p_channel_press,
r['p_channel_event']::text AS p_channel_event,
r['p_channel_demo']::text AS p_channel_demo,
r['p_channel_details']::text AS p_channel_details,
r['p_purpose']::text AS p_purpose,
r['p_discount_active']::text AS p_discount_active from
read_parquet('/home/test/tpcds_tables100/promotion.parquet', binary_as_string => true) r;
CREATE VIEW catalog_page_parquet AS SELECT
r['cp_catalog_page_sk']::integer AS cp_catalog_page_sk,
r['cp_catalog_page_id']::text AS cp_catalog_page_id,
r['cp_start_date_sk']::integer AS cp_start_date_sk,
r['cp_end_date_sk']::integer AS cp_end_date_sk,
r['cp_department']::text AS cp_department,
r['cp_catalog_number']::integer AS cp_catalog_number,
r['cp_catalog_page_number']::integer AS cp_catalog_page_number,
r['cp_description']::text AS cp_description,
r['cp_type']::text AS cp_type from
read_parquet('/home/test/tpcds_tables100/catalog_page.parquet', binary_as_string => true) r;
CREATE VIEW inventory_parquet AS SELECT
r['inv_date_sk']::integer AS inv_date_sk,
r['inv_item_sk']::integer AS inv_item_sk,
r['inv_warehouse_sk']::integer AS inv_warehouse_sk,
r['inv_quantity_on_hand']::integer AS inv_quantity_on_hand from
read_parquet('/home/test/tpcds_tables100/inventory.parquet', binary_as_string => true) r;
CREATE VIEW catalog_returns_parquet AS SELECT
r['cr_returned_date_sk']::integer AS cr_returned_date_sk,
r['cr_returned_time_sk']::integer AS cr_returned_time_sk,
r['cr_item_sk']::integer AS cr_item_sk,
r['cr_refunded_customer_sk']::integer AS cr_refunded_customer_sk,
r['cr_refunded_cdemo_sk']::integer AS cr_refunded_cdemo_sk,
r['cr_refunded_hdemo_sk']::integer AS cr_refunded_hdemo_sk,
r['cr_refunded_addr_sk']::integer AS cr_refunded_addr_sk,
r['cr_returning_customer_sk']::integer AS cr_returning_customer_sk,
r['cr_returning_cdemo_sk']::integer AS cr_returning_cdemo_sk,
r['cr_returning_hdemo_sk']::integer AS cr_returning_hdemo_sk,
r['cr_returning_addr_sk']::integer AS cr_returning_addr_sk,
r['cr_call_center_sk']::integer AS cr_call_center_sk,
r['cr_catalog_page_sk']::integer AS cr_catalog_page_sk,
r['cr_ship_mode_sk']::integer AS cr_ship_mode_sk,
r['cr_warehouse_sk']::integer AS cr_warehouse_sk,
r['cr_reason_sk']::integer AS cr_reason_sk,
r['cr_order_number']::integer AS cr_order_number,
r['cr_return_quantity']::integer AS cr_return_quantity,
r['cr_return_amount']::decimal(7,2) AS cr_return_amount,
r['cr_return_tax']::decimal(7,2) AS cr_return_tax,
r['cr_return_amt_inc_tax']::decimal(7,2) AS cr_return_amt_inc_tax,
r['cr_fee']::decimal(7,2) AS cr_fee,
r['cr_return_ship_cost']::decimal(7,2) AS cr_return_ship_cost,
r['cr_refunded_cash']::decimal(7,2) AS cr_refunded_cash,
r['cr_reversed_charge']::decimal(7,2) AS cr_reversed_charge,
r['cr_store_credit']::decimal(7,2) AS cr_store_credit,
r['cr_net_loss']::decimal(7,2) AS cr_net_loss from
read_parquet('/home/test/tpcds_tables100/catalog_returns.parquet', binary_as_string => true) r;
CREATE VIEW web_returns_parquet AS SELECT
r['wr_returned_date_sk']::integer AS wr_returned_date_sk,
r['wr_returned_time_sk']::integer AS wr_returned_time_sk,
r['wr_item_sk']::integer AS wr_item_sk,
r['wr_refunded_customer_sk']::integer AS wr_refunded_customer_sk,
r['wr_refunded_cdemo_sk']::integer AS wr_refunded_cdemo_sk,
r['wr_refunded_hdemo_sk']::integer AS wr_refunded_hdemo_sk,
r['wr_refunded_addr_sk']::integer AS wr_refunded_addr_sk,
r['wr_returning_customer_sk']::integer AS wr_returning_customer_sk,
r['wr_returning_cdemo_sk']::integer AS wr_returning_cdemo_sk,
r['wr_returning_hdemo_sk']::integer AS wr_returning_hdemo_sk,
r['wr_returning_addr_sk']::integer AS wr_returning_addr_sk,
r['wr_web_page_sk']::integer AS wr_web_page_sk,
r['wr_reason_sk']::integer AS wr_reason_sk,
r['wr_order_number']::integer AS wr_order_number,
r['wr_return_quantity']::integer AS wr_return_quantity,
r['wr_return_amt']::decimal(7,2) AS wr_return_amt,
r['wr_return_tax']::decimal(7,2) AS wr_return_tax,
r['wr_return_amt_inc_tax']::decimal(7,2) AS wr_return_amt_inc_tax,
r['wr_fee']::decimal(7,2) AS wr_fee,
r['wr_return_ship_cost']::decimal(7,2) AS wr_return_ship_cost,
r['wr_refunded_cash']::decimal(7,2) AS wr_refunded_cash,
r['wr_reversed_charge']::decimal(7,2) AS wr_reversed_charge,
r['wr_account_credit']::decimal(7,2) AS wr_account_credit,
r['wr_net_loss']::decimal(7,2) AS wr_net_loss from
read_parquet('/home/test/tpcds_tables100/web_returns.parquet', binary_as_string => true) r;
CREATE VIEW web_sales_parquet AS SELECT
r['ws_sold_date_sk']::integer AS ws_sold_date_sk,
r['ws_sold_time_sk']::integer AS ws_sold_time_sk,
r['ws_ship_date_sk']::integer AS ws_ship_date_sk,
r['ws_item_sk']::integer AS ws_item_sk,
r['ws_bill_customer_sk']::integer AS ws_bill_customer_sk,
r['ws_bill_cdemo_sk']::integer AS ws_bill_cdemo_sk,
r['ws_bill_hdemo_sk']::integer AS ws_bill_hdemo_sk,
r['ws_bill_addr_sk']::integer AS ws_bill_addr_sk,
r['ws_ship_customer_sk']::integer AS ws_ship_customer_sk,
r['ws_ship_cdemo_sk']::integer AS ws_ship_cdemo_sk,
r['ws_ship_hdemo_sk']::integer AS ws_ship_hdemo_sk,
r['ws_ship_addr_sk']::integer AS ws_ship_addr_sk,
r['ws_web_page_sk']::integer AS ws_web_page_sk,
r['ws_web_site_sk']::integer AS ws_web_site_sk,
r['ws_ship_mode_sk']::integer AS ws_ship_mode_sk,
r['ws_warehouse_sk']::integer AS ws_warehouse_sk,
r['ws_promo_sk']::integer AS ws_promo_sk,
r['ws_order_number']::integer AS ws_order_number,
r['ws_quantity']::integer AS ws_quantity,
r['ws_wholesale_cost']::decimal(7,2) AS ws_wholesale_cost,
r['ws_list_price']::decimal(7,2) AS ws_list_price,
r['ws_sales_price']::decimal(7,2) AS ws_sales_price,
r['ws_ext_discount_amt']::decimal(7,2) AS ws_ext_discount_amt,
r['ws_ext_sales_price']::decimal(7,2) AS ws_ext_sales_price,
r['ws_ext_wholesale_cost']::decimal(7,2) AS ws_ext_wholesale_cost,
r['ws_ext_list_price']::decimal(7,2) AS ws_ext_list_price,
r['ws_ext_tax']::decimal(7,2) AS ws_ext_tax,
r['ws_coupon_amt']::decimal(7,2) AS ws_coupon_amt,
r['ws_ext_ship_cost']::decimal(7,2) AS ws_ext_ship_cost,
r['ws_net_paid']::decimal(7,2) AS ws_net_paid,
r['ws_net_paid_inc_tax']::decimal(7,2) AS ws_net_paid_inc_tax,
r['ws_net_paid_inc_ship']::decimal(7,2) AS ws_net_paid_inc_ship,
r['ws_net_paid_inc_ship_tax']::decimal(7,2) AS ws_net_paid_inc_ship_tax,
r['ws_net_profit']::decimal(7,2) AS ws_net_profit from
read_parquet('/home/test/tpcds_tables100/web_sales.parquet', binary_as_string => true) r;
CREATE VIEW catalog_sales_parquet AS SELECT
r['cs_sold_date_sk']::integer AS cs_sold_date_sk,
r['cs_sold_time_sk']::integer AS cs_sold_time_sk,
r['cs_ship_date_sk']::integer AS cs_ship_date_sk,
r['cs_bill_customer_sk']::integer AS cs_bill_customer_sk,
r['cs_bill_cdemo_sk']::integer AS cs_bill_cdemo_sk,
r['cs_bill_hdemo_sk']::integer AS cs_bill_hdemo_sk,
r['cs_bill_addr_sk']::integer AS cs_bill_addr_sk,
r['cs_ship_customer_sk']::integer AS cs_ship_customer_sk,
r['cs_ship_cdemo_sk']::integer AS cs_ship_cdemo_sk,
r['cs_ship_hdemo_sk']::integer AS cs_ship_hdemo_sk,
r['cs_ship_addr_sk']::integer AS cs_ship_addr_sk,
r['cs_call_center_sk']::integer AS cs_call_center_sk,
r['cs_catalog_page_sk']::integer AS cs_catalog_page_sk,
r['cs_ship_mode_sk']::integer AS cs_ship_mode_sk,
r['cs_warehouse_sk']::integer AS cs_warehouse_sk,
r['cs_item_sk']::integer AS cs_item_sk,
r['cs_promo_sk']::integer AS cs_promo_sk,
r['cs_order_number']::integer AS cs_order_number,
r['cs_quantity']::integer AS cs_quantity,
r['cs_wholesale_cost']::decimal(7,2) AS cs_wholesale_cost,
r['cs_list_price']::decimal(7,2) AS cs_list_price,
r['cs_sales_price']::decimal(7,2) AS cs_sales_price,
r['cs_ext_discount_amt']::decimal(7,2) AS cs_ext_discount_amt,
r['cs_ext_sales_price']::decimal(7,2) AS cs_ext_sales_price,
r['cs_ext_wholesale_cost']::decimal(7,2) AS cs_ext_wholesale_cost,
r['cs_ext_list_price']::decimal(7,2) AS cs_ext_list_price,
r['cs_ext_tax']::decimal(7,2) AS cs_ext_tax,
r['cs_coupon_amt']::decimal(7,2) AS cs_coupon_amt,
r['cs_ext_ship_cost']::decimal(7,2) AS cs_ext_ship_cost,
r['cs_net_paid']::decimal(7,2) AS cs_net_paid,
r['cs_net_paid_inc_tax']::decimal(7,2) AS cs_net_paid_inc_tax,
r['cs_net_paid_inc_ship']::decimal(7,2) AS cs_net_paid_inc_ship,
r['cs_net_paid_inc_ship_tax']::decimal(7,2) AS cs_net_paid_inc_ship_tax,
r['cs_net_profit']::decimal(7,2) AS cs_net_profit from
read_parquet('/home/test/tpcds_tables100/catalog_sales.parquet', binary_as_string => true) r;
CREATE VIEW store_sales_parquet AS SELECT
r['ss_sold_date_sk']::integer AS ss_sold_date_sk,
r['ss_sold_time_sk']::integer AS ss_sold_time_sk,
r['ss_item_sk']::integer AS ss_item_sk,
r['ss_customer_sk']::integer AS ss_customer_sk,
r['ss_cdemo_sk']::integer AS ss_cdemo_sk,
r['ss_hdemo_sk']::integer AS ss_hdemo_sk,
r['ss_addr_sk']::integer AS ss_addr_sk,
r['ss_store_sk']::integer AS ss_store_sk,
r['ss_promo_sk']::integer AS ss_promo_sk,
r['ss_ticket_number']::integer AS ss_ticket_number,
r['ss_quantity']::integer AS ss_quantity,
r['ss_wholesale_cost']::decimal(7,2) AS ss_wholesale_cost,
r['ss_list_price']::decimal(7,2) AS ss_list_price,
r['ss_sales_price']::decimal(7,2) AS ss_sales_price,
r['ss_ext_discount_amt']::decimal(7,2) AS ss_ext_discount_amt,
r['ss_ext_sales_price']::decimal(7,2) AS ss_ext_sales_price,
r['ss_ext_wholesale_cost']::decimal(7,2) AS ss_ext_wholesale_cost,
r['ss_ext_list_price']::decimal(7,2) AS ss_ext_list_price,
r['ss_ext_tax']::decimal(7,2) AS ss_ext_tax,
r['ss_coupon_amt']::decimal(7,2) AS ss_coupon_amt,
r['ss_net_paid']::decimal(7,2) AS ss_net_paid,
r['ss_net_paid_inc_tax']::decimal(7,2) AS ss_net_paid_inc_tax,
r['ss_net_profit']::decimal(7,2) AS ss_net_profit from
read_parquet('/home/test/tpcds_tables100/store_sales.parquet', binary_as_string => true) r;
Таблица 34.9. Данные теста производительности TCP-DS
Таблица | Количество строк |
---|---|
| 30 |
| 20400 |
| 14 404 374 |
| 143 997 065 |
| 1 000 000 |
| 1 920 800 |
| 2 000 000 |
| 73049 |
| 7200 |
| 20 |
| 399 330 000 |
| 204 000 |
| 1000 |
| 55 |
| 20 |
| 402 |
| 28 795 080 |
| 287 997 024 |
| 86400 |
| 15 |
| 2040 |
| 7 197 670 |
| 72 001 237 |
| 24 |
Таблица 34.10. Тест производительности TCP-DS: результаты первого запуска теста
SF100 Parquet | Продолжительность (с) |
|
|
|
|
|
|
---|---|---|---|---|---|---|---|
Q1 | 2.29 | 4.52 | 8.87 | 1204 | 495 | 466 | 0 |
Q2 | 2.99 | 11.16 | 1.11 | 143 | 130 | 1084 | 0 |
Q3 | 3.28 | 9.34 | 2.14 | 119 | 111 | 2146 | 0 |
Q4 | 18.86 | 94.62 | 26.26 | 3787 | 2665 | 6172 | 0 |
Q5 | 7.13 | 20.25 | 4.03 | 588 | 319 | 4244 | 0 |
Q6 | 2.93 | 8.34 | 1.73 | 543 | 170 | 1565 | 0 |
Q7 | 5.54 | 24.81 | 3.75 | 287 | 216 | 4526 | 0 |
Q8 | 2.34 | 7.92 | 1.43 | 179 | 157 | 1451 | 0 |
Q9 | 19.58 | 122.32 | 5.66 | 678 | 652 | 2845 | 0 |
Q10 | 2.11 | 7.26 | 1.01 | 208 | 177 | 868 | 0 |
Q11 | 11.51 | 62.73 | 5.66 | 2705 | 2071 | 3165 | 0 |
Q12 | 0.94 | 1.8 | 0.61 | 179 | 103 | 568 | 0 |
Q13 | 7.35 | 34.44 | 5.05 | 357 | 338 | 5841 | 0 |
Q14 | 60 | 349.02 | 42.86 | 12492 | 6061 | 4065 | 0 |
Q15 | 0.62 | 1.22 | 0.33 | 329 | 174 | 78 | 0 |
Q16 | 0.94 | 2.12 | 0.7 | 639 | 238 | 165 | 0 |
Q17 | 5.23 | 19.3 | 3.38 | 1005 | 583 | 2827 | 0 |
Q18 | 2.22 | 3.55 | 0.95 | 1288 | 400 | 572 | 0 |
Q19 | 3.84 | 13.13 | 2.62 | 329 | 283 | 2804 | 0 |
Q20 | 0.46 | 0.52 | 0.16 | 214 | 101 | 54 | 0 |
Q21 | 0.39 | 0.29 | 0.11 | 125 | 42 | 48 | 0 |
Q22 | 24.12 | 97.97 | 86.39 | 32803 | 21644 | 330 | 2801 |
Q23 | 44.43 | 287.1 | 36.81 | 14943 | 6137 | 3598 | 0 |
Q24 | 9.95 | 52.08 | 7.07 | 4506 | 3048 | 2806 | 0 |
Q25 | 4.72 | 16.95 | 3.57 | 781 | 494 | 3030 | 0 |
Q26 | 1.04 | 2.73 | 0.59 | 200 | 134 | 449 | 0 |
Q27 | 5.38 | 21.96 | 3.8 | 200 | 172 | 4163 | 0 |
Q28 | 12.72 | 79.82 | 5 | 330 | 313 | 2534 | 0 |
Q29 | 5.32 | 20.89 | 3.23 | 399 | 285 | 3216 | 0 |
Q30 | 0.75 | 2.07 | 0.79 | 608 | 236 | 252 | 0 |
Q31 | 3.68 | 14.3 | 2.08 | 296 | 266 | 2336 | 0 |
Q32 | 0.6 | 0.26 | 0.1 | 126 | 61 | 34 | 0 |
Q33 | 3.92 | 12.34 | 2.7 | 248 | 221 | 3484 | 0 |
Q34 | 3.39 | 14.54 | 1.58 | 1313 | 256 | 979 | 0 |
Q35 | 3.72 | 15.07 | 1.95 | 1244 | 595 | 885 | 0 |
Q36 | 4.22 | 15.43 | 3.32 | 160 | 150 | 3510 | 0 |
Q37 | 1.21 | 3.28 | 0.52 | 160 | 124 | 522 | 0 |
Q38 | 3.69 | 19.16 | 1.91 | 1068 | 753 | 888 | 0 |
Q39 | 1.31 | 5.36 | 0.99 | 886 | 568 | 78 | 0 |
Q40 | 0.97 | 2.17 | 0.7 | 701 | 344 | 217 | 0 |
Q41 | 0.17 | 0.04 | 0.04 | 65 | 22 | 31 | 0 |
Q42 | 2.92 | 7.61 | 1.94 | 133 | 114 | 2328 | 0 |
Q43 | 2.72 | 11.65 | 1.38 | 127 | 116 | 1441 | 0 |
Q44 | 5.29 | 23.24 | 3.4 | 324 | 246 | 2158 | 0 |
Q45 | 1.12 | 2.99 | 0.76 | 350 | 224 | 585 | 0 |
Q46 | 4.72 | 20.62 | 2.75 | 265 | 170 | 2431 | 0 |
Q47 | 7.35 | 35.87 | 6.41 | 4769 | 2532 | 2374 | 0 |
Q48 | 5.46 | 24.95 | 3.23 | 342 | 321 | 3401 | 0 |
Q49 | 8.73 | 20.99 | 4.4 | 231 | 204 | 5412 | 0 |
Q50 | 4.27 | 20.9 | 1.93 | 170 | 156 | 1878 | 0 |
Q51 | 10.82 | 54.08 | 7.26 | 3865 | 2572 | 2741 | 0 |
Q52 | 2.57 | 7.95 | 2.15 | 140 | 119 | 2464 | 0 |
Q53 | 5.33 | 31.95 | 2.16 | 173 | 165 | 2343 | 0 |
Q54 | 11.12 | 50.96 | 10.19 | 342 | 263 | 10501 | 0 |
Q55 | 3.05 | 8.22 | 2.17 | 137 | 122 | 2461 | 0 |
Q56 | 4.91 | 12.41 | 2.89 | 280 | 239 | 3186 | 0 |
Q57 | 1.61 | 7.39 | 0.53 | 337 | 205 | 276 | 0 |
Q58 | 3.72 | 9.99 | 2.98 | 268 | 229 | 3107 | 0 |
Q59 | 4.65 | 25.68 | 3.69 | 3355 | 1703 | 1456 | 0 |
Q60 | 3.96 | 12.56 | 2.8 | 297 | 246 | 3382 | 0 |
Q61 | 0.68 | 0.47 | 0.14 | 189 | 116 | 47 | 0 |
Q62 | 1.31 | 5.38 | 0.55 | 104 | 77 | 479 | 0 |
Q63 | 5.35 | 31.9 | 1.93 | 163 | 155 | 2022 | 0 |
Q64 | 11.02 | 50.66 | 7.5 | 2045 | 1131 | 5786 | 0 |
Q65 | 6.18 | 32.07 | 4.82 | 2586 | 1688 | 2350 | 0 |
Q66 | 2.18 | 7.9 | 1.47 | 190 | 156 | 1673 | 0 |
Q67 | 74.37 | 374.16 | 176.26 | 34851 | 24686 | 3020 | 10145 |
Q68 | 5.92 | 22.14 | 4.05 | 175 | 155 | 4580 | 0 |
Q69 | 2.23 | 7.02 | 0.9 | 251 | 188 | 843 | 0 |
Q70 | 3.92 | 19.56 | 1.81 | 179 | 159 | 1483 | 0 |
Q71 | 4.19 | 12.42 | 3.02 | 232 | 184 | 3480 | 0 |
Q72 | 2.78 | 12.83 | 2.11 | 2032 | 1155 | 729 | 0 |
Q73 | 3.45 | 16.7 | 1.47 | 1229 | 244 | 979 | 0 |
Q74 | 9.41 | 42.75 | 3.81 | 1437 | 1079 | 2390 | 0 |
Q75 | 7.79 | 32.71 | 5.77 | 2632 | 1099 | 5250 | 0 |
Q76 | 6.01 | 18.61 | 3.72 | 219 | 202 | 4882 | 0 |
Q77 | 5.08 | 14.87 | 3.55 | 209 | 186 | 3994 | 0 |
Q78 | 12.55 | 61.71 | 11.85 | 9555 | 5413 | 5525 | 0 |
Q79 | 5.38 | 23.44 | 3.06 | 1512 | 412 | 2411 | 0 |
Q80 | 8 | 30.12 | 7.06 | 2168 | 1447 | 6405 | 0 |
Q81 | 0.83 | 2.76 | 0.82 | 758 | 405 | 220 | 0 |
Q82 | 1.6 | 4.54 | 0.96 | 174 | 141 | 1040 | 0 |
Q83 | 0.66 | 1.7 | 0.43 | 172 | 120 | 336 | 0 |
Q84 | 0.4 | 0.42 | 0.18 | 183 | 61 | 83 | 0 |
Q85 | 2.71 | 9.92 | 2.7 | 1805 | 1172 | 1501 | 0 |
Q86 | 1.08 | 3.59 | 0.58 | 123 | 84 | 603 | 0 |
Q87 | 3.8 | 20.43 | 1.74 | 1086 | 767 | 888 | 0 |
Q88 | 10.18 | 63.04 | 2.47 | 420 | 395 | 729 | 0 |
Q89 | 4.66 | 25.13 | 2.11 | 173 | 163 | 2374 | 0 |
Q90 | 1.03 | 3.71 | 0.51 | 113 | 88 | 333 | 0 |
Q91 | 0.32 | 0.27 | 0.11 | 110 | 55 | 67 | 0 |
Q92 | 1.55 | 3.39 | 0.76 | 127 | 82 | 688 | 0 |
Q93 | 1.38 | 3.5 | 1.19 | 1395 | 684 | 300 | 0 |
Q94 | 1.73 | 6.2 | 1.27 | 379 | 308 | 1080 | 0 |
Q95 | 11.17 | 55.62 | 5.67 | 3771 | 2646 | 1078 | 0 |
Q96 | 2.18 | 6.62 | 0.91 | 115 | 95 | 673 | 0 |
Q97 | 5.45 | 21.23 | 3.27 | 2680 | 1496 | 1670 | 0 |
Q98 | 3.16 | 9.22 | 2.4 | 290 | 197 | 2503 | 0 |
Q99 | 1.21 | 5.52 | 0.3 | 115 | 95 | 217 | 0 |
Таблица 34.11. Тест производительности TCP-DS : результаты второго запуска теста
SF100 Parquet | Продолжительность (с) |
|
|
|
|
|
|
---|---|---|---|---|---|---|---|
Q1 | 1.18 | 4.49 | 3.34 | 1164 | 664 | 0 | 0 |
Q2 | 1.63 | 10.03 | 0.36 | 143 | 122 | 0 | 0 |
Q3 | 1.49 | 8.26 | 0.53 | 120 | 91 | 0 | 0 |
Q4 | 14.47 | 91.58 | 9.82 | 3795 | 2595 | 0 | 0 |
Q5 | 3.28 | 20.21 | 1.27 | 596 | 318 | 0 | 0 |
Q6 | 1.6 | 7.56 | 0.71 | 603 | 191 | 0 | 0 |
Q7 | 3.32 | 23.4 | 1.16 | 290 | 217 | 0 | 0 |
Q8 | 1.27 | 7.1 | 0.46 | 177 | 144 | 0 | 0 |
Q9 | 17.95 | 119.98 | 4.19 | 680 | 657 | 0 | 0 |
Q10 | 1.37 | 7 | 0.34 | 210 | 171 | 0 | 0 |
Q11 | 8.97 | 60.38 | 3.87 | 2684 | 2040 | 0 | 0 |
Q12 | 0.46 | 2.11 | 0.24 | 184 | 116 | 0 | 0 |
Q13 | 4.3 | 30.22 | 1.4 | 362 | 324 | 0 | 0 |
Q14 | 54.7 | 349.17 | 28.4 | 12493 | 6007 | 0 | 0 |
Q15 | 0.45 | 1.15 | 0.25 | 330 | 183 | 0 | 0 |
Q16 | 0.69 | 1.64 | 0.5 | 641 | 303 | 0.04 | 0 |
Q17 | 2.96 | 17.94 | 1.5 | 1013 | 696 | 0 | 0 |
Q18 | 1.02 | 3.58 | 0.51 | 1497 | 490 | 0 | 0 |
Q19 | 1.91 | 12.29 | 0.76 | 330 | 284 | 0 | 0 |
Q20 | 0.35 | 0.26 | 0.08 | 148 | 74 | 0 | 0 |
Q21 | 0.26 | 0.91 | 0.22 | 191 | 95 | 0 | 0 |
Q22 | 18.13 | 92.43 | 44.23 | 32584 | 20969 | 0 | 2986 |
Q23 | 42.92 | 289.26 | 37.52 | 15624 | 8313 | 0 | 0 |
Q24 | 8.12 | 50.49 | 5.11 | 4384 | 3102 | 0 | 0 |
Q25 | 2.7 | 15.41 | 1.4 | 780 | 488 | 0 | 0 |
Q26 | 0.58 | 1.79 | 0.2 | 182 | 84 | 0 | 0 |
Q27 | 3.05 | 20.56 | 1.1 | 201 | 167 | 0 | 0 |
Q28 | 11.46 | 78.64 | 3.49 | 332 | 315 | 0 | 0 |
Q29 | 3.17 | 20.68 | 1.04 | 397 | 291 | 0.13 | 0 |
Q30 | 0.5 | 1.79 | 0.49 | 711 | 361 | 0 | 0 |
Q31 | 2.03 | 13.26 | 0.57 | 297 | 250 | 0 | 0 |
Q32 | 0.45 | 0.58 | 0.13 | 153 | 92 | 0.38 | 0 |
Q33 | 2.04 | 11.92 | 0.81 | 261 | 217 | 0 | 0 |
Q34 | 2.5 | 14.01 | 0.71 | 1353 | 366 | 0 | 0 |
Q35 | 2.79 | 14.17 | 1.37 | 1186 | 616 | 0.13 | 0 |
Q36 | 2.1 | 13.86 | 0.77 | 158 | 144 | 0 | 0 |
Q37 | 0.68 | 2.7 | 0.21 | 161 | 113 | 0 | 0 |
Q38 | 2.99 | 19.21 | 1.08 | 1056 | 771 | 0 | 0 |
Q39 | 1.18 | 5.25 | 0.96 | 922 | 669 | 0 | 0 |
Q40 | 0.72 | 1.47 | 0.51 | 709 | 412 | 0.44 | 0 |
Q41 | 0.07 | 0.02 | 0.02 | 71 | 24 | 0 | 0 |
Q42 | 1.22 | 7.09 | 0.48 | 134 | 113 | 0 | 0 |
Q43 | 1.74 | 11.55 | 0.38 | 127 | 113 | 0 | 0 |
Q44 | 3.88 | 22.12 | 2.02 | 315 | 241 | 0 | 0 |
Q45 | 0.65 | 3.12 | 0.34 | 351 | 260 | 0 | 0 |
Q46 | 2.93 | 20.2 | 0.96 | 304 | 178 | 0 | 0 |
Q47 | 5.1 | 34.23 | 4.47 | 4772 | 2537 | 0 | 0 |
Q48 | 3.25 | 22.24 | 0.98 | 344 | 302 | 0 | 0 |
Q49 | 3.14 | 18.99 | 1.14 | 233 | 186 | 0 | 0 |
Q50 | 2.85 | 19.75 | 0.6 | 173 | 157 | 0 | 0 |
Q51 | 8.8 | 53.3 | 5.83 | 3780 | 2779 | 0 | 0 |
Q52 | 1.19 | 7.12 | 0.52 | 139 | 115 | 0 | 0 |
Q53 | 3.98 | 28.33 | 0.66 | 169 | 153 | 0.13 | 0 |
Q54 | 6.93 | 47.86 | 3.35 | 351 | 271 | 0.38 | 0 |
Q55 | 1.2 | 7.36 | 0.52 | 139 | 115 | 0 | 0 |
Q56 | 2.01 | 10.79 | 0.81 | 286 | 207 | 0 | 0 |
Q57 | 1.2 | 7.4 | 0.37 | 344 | 220 | 0 | 0 |
Q58 | 1.64 | 7.87 | 0.71 | 278 | 197 | 0 | 0 |
Q59 | 3.75 | 25.48 | 2.69 | 3354 | 1739 | 0 | 0 |
Q60 | 2.1 | 12.03 | 0.8 | 296 | 235 | 0 | 0 |
Q61 | 0.55 | 0.33 | 0.08 | 150 | 73 | 0 | 0 |
Q62 | 0.9 | 5.33 | 0.2 | 105 | 70 | 0 | 0 |
Q63 | 3.99 | 28.84 | 0.66 | 167 | 158 | 0 | 0 |
Q64 | 7.45 | 49.47 | 3.27 | 2012 | 1102 | 0 | 0 |
Q65 | 4.71 | 31.11 | 3.38 | 2632 | 1850 | 0 | 0 |
Q66 | 1.33 | 8.02 | 0.51 | 193 | 150 | 0.39 | 0 |
Q67 | 66.32 | 359.58 | 139.16 | 35139 | 25197 | 0 | 10914 |
Q68 | 3.06 | 20.39 | 1.16 | 170 | 144 | 0 | 0 |
Q69 | 1.44 | 6.81 | 0.35 | 248 | 169 | 0 | 0 |
Q70 | 2.96 | 19.71 | 0.89 | 182 | 161 | 0 | 0 |
Q71 | 2.27 | 12.03 | 0.81 | 232 | 179 | 0 | 0 |
Q72 | 2.23 | 12.61 | 1.69 | 2023 | 1215 | 0.1 | 0 |
Q73 | 2.52 | 14.17 | 0.68 | 1285 | 329 | 0 | 0 |
Q74 | 6.76 | 41.18 | 2.64 | 1448 | 1030 | 0.13 | 0 |
Q75 | 4.97 | 31.29 | 2.83 | 2656 | 1180 | 0 | 0 |
Q76 | 2.73 | 16.88 | 0.91 | 222 | 185 | 0 | 0 |
Q77 | 2.34 | 14.11 | 0.96 | 211 | 171 | 0 | 0 |
Q78 | 9.97 | 60.36 | 9.25 | 9578 | 5418 | 0 | 0 |
Q79 | 3.81 | 23.07 | 1.42 | 1501 | 467 | 0 | 0 |
Q80 | 4.67 | 28.85 | 3.14 | 2166 | 1398 | 0 | 0 |
Q81 | 0.57 | 2.45 | 0.71 | 793 | 345 | 0.27 | 0 |
Q82 | 0.89 | 3.7 | 0.3 | 177 | 107 | 0 | 0 |
Q83 | 0.34 | 1.24 | 0.16 | 166 | 83 | 0 | 0 |
Q84 | 0.21 | 0.3 | 0.15 | 1801 | 1165 | 0 | 0 |
Q85 | 1.76 | 8.68 | 1.48 | 1804 | 1231 | 0 | 0 |
Q86 | 0.61 | 3.78 | 0.2 | 126 | 94 | 0 | 0 |
Q87 | 3.07 | 19.77 | 1.07 | 1066 | 729 | 0 | 0 |
Q88 | 9.32 | 61.28 | 1.89 | 421 | 399 | 0 | 0 |
Q89 | 3.13 | 22.42 | 0.58 | 175 | 164 | 0 | 0 |
Q90 | 0.71 | 3.38 | 0.18 | 116 | 68 | 0.13 | 0 |
Q91 | 0.14 | 0.22 | 0.09 | 112 | 58 | 0 | 0 |
Q92 | 0.63 | 3.37 | 0.33 | 126 | 90 | 0 | 0 |
Q93 | 1.14 | 3.72 | 1.09 | 1395 | 750 | 0 | 0 |
Q94 | 1.05 | 5.89 | 0.51 | 383 | 302 | 0 | 0 |
Q95 | 10.24 | 55.09 | 4.78 | 3772 | 2848 | 0 | 0 |
Q96 | 1.33 | 8.83 | 0.27 | 115 | 100 | 0 | 0 |
Q97 | 3.15 | 19.66 | 2.33 | 2692 | 1718 | 0 | 0 |
Q98 | 1.68 | 8.63 | 0.65 | 290 | 189 | 0 | 0 |
Q99 | 0.92 | 4.86 | 0.13 | 117 | 78 | 0.23 | 0 |
34.8.4. Выводы #
На основании выполненных тестов производительности можно сделать следующие выводы:
Расширение pgpro_duckdb продемонстрировало удовлетворительное время выполнения аналитических запросов в рамках обоих тестов производительности. Только нескольким ресурсоёмким аналитическим запросам TCP-DS для выполнения потребовались десятки секунд.
Для теста производительности TCP-H значения между первым и вторым запусками отличаются практически в два раза. Это значит, что половину времени потоки потратили на обработку операций ввода/вывода. Для теста производительности TCP-DS разница в значениях была ниже — 1.7. Это значит, что запускались более ресурсоёмкие аналитические запросы, и обработка операций ввода/вывода оказала меньшее влияние на время выполнения.
По сравнению с общим объёмом данных для выполнения аналитических запросов необходим значительно меньший объём данных.
Для ресурсоёмких аналитических запросов, превышающих установленное ограничение по объёму данных, был использован перенос данных на диск.
Эти выводы можно использовать для изначального планирования ресурсов. За более подробной информацией обратитесь к разделу Планирование ресурсов. Можно утверждать, что в тестах производительности результаты времени практически линейно зависят от коэффициента масштабирования.