From cecf4577a8b491883d970f0a54543353cb5ef0a3 Mon Sep 17 00:00:00 2001 From: kovalad Date: Mon, 8 May 2023 18:36:50 +0200 Subject: [PATCH] added scripts from dev meet-up --- 2023/ru/webinar_cli_web/cmd.sh | 32 +++++++++++++++++++++++++++++++ 2023/ru/webinar_cli_web/cmd.sql | 34 +++++++++++++++++++++++++++++++++ 2 files changed, 66 insertions(+) create mode 100644 2023/ru/webinar_cli_web/cmd.sh create mode 100644 2023/ru/webinar_cli_web/cmd.sql diff --git a/2023/ru/webinar_cli_web/cmd.sh b/2023/ru/webinar_cli_web/cmd.sh new file mode 100644 index 0000000..8f62316 --- /dev/null +++ b/2023/ru/webinar_cli_web/cmd.sh @@ -0,0 +1,32 @@ +# Initialize workload. Force every table to have 1 partition. +# Disable automatical partitioning by load +ydb --user ydbworkload -v -e \ +grpc://ydb-node-zone-a.ydb.internal:2136 -d /Root/ydb-workload workload stock \ +init -o 10000 -p 10000 --min-partitions 1 --auto-partition 0 + +# Following commands run three workloads in parallel + +# In order to overload a partition let's run 64 threas of workload +# in mode that adds random orders. +# duration: 72 000 seconds (~20 hours) +ydb --user ydbworkload -v -e grpc://ydb-node-zone-a.ydb.internal:2136 \ +-d /Root/ydb-workload workload stock run add-rand-order -s 72000 -t 64 + +# Additionaly let's run workload that puts orders to processing. Processing +# requires a distributed transaction. In 32 threads for 20 hours. + +ydb --user ydbworkload -v -e grpc://ydb-node-zone-a.ydb.internal:2136 \ +-d /Root/ydb-workload workload stock run put-rand-order -s 72000 -t 32 + +# Read-only workload that select last orders created by a random users. +# Let's run this workload for 20 hours in 32 threads. + +ydb --user ydbworkload -v -e grpc://ydb-node-zone-a.ydb.internal:2136 \ +-d /Root/ydb-workload workload stock run rand-user-hist -s 72000 -t 32 + +# Command launches a dynamic node for /Root/ydb-workload database +LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/ydb/lib /opt/ydb/bin/ydbd server \ +--grpc-port 2136 --ic-port 19002 --mon-port 8765 --yaml-config /opt/ydb/cfg/config.yaml \ +--tenant /Root/ydb-workload --node-broker ydb-node-zone-a.ydb.internal:2135 \ +--node-broker ydb-node-zone-b.ydb.internal:2135 \ +--node-broker ydb-node-zone-c.ydb.internal:2135 >> /opt/ydb/log/dynamic-node.out 2>> /opt/ydb/log/dynamic-node.err & diff --git a/2023/ru/webinar_cli_web/cmd.sql b/2023/ru/webinar_cli_web/cmd.sql new file mode 100644 index 0000000..78341f5 --- /dev/null +++ b/2023/ru/webinar_cli_web/cmd.sql @@ -0,0 +1,34 @@ +-- Enable partitioning by load for every table of workload stock involved in +-- this webinar +alter table orders set +( + AUTO_PARTITIONING_BY_LOAD = ENABLED, + AUTO_PARTITIONING_MIN_PARTITIONS_COUNT = 10, + AUTO_PARTITIONING_MAX_PARTITIONS_COUNT = 20 +); + +alter table ordersLines set +( + AUTO_PARTITIONING_BY_LOAD = ENABLED, + AUTO_PARTITIONING_MIN_PARTITIONS_COUNT = 10, + AUTO_PARTITIONING_MAX_PARTITIONS_COUNT = 20 +); + + +alter table stock set +( + AUTO_PARTITIONING_BY_LOAD = ENABLED, + AUTO_PARTITIONING_MIN_PARTITIONS_COUNT = 10, + AUTO_PARTITIONING_MAX_PARTITIONS_COUNT = 20 +); + +-- SQL query to demonstrate query plan example +-- WARNING: customer ids are generated randomly +select + o.customer, ol.product, sum(ol.quantity) as orders_quantity +from + orders view ix_cust as o inner join orderLines as ol on ol.id_order = o.id +where + customer in ('Name1033', 'Name4313') +group by + o.customer, ol.product