From 71e80e8957855095e291bd92bd29d6dca1bd2d89 Mon Sep 17 00:00:00 2001 From: "jiafeng.zhang" Date: Sun, 20 Nov 2022 09:40:57 +0800 Subject: [PATCH] [typo](docs)Performance test documentation update (#14147) * Performance test documentation update --- docs/en/docs/benchmark/ssb.md | 390 +++++++++--- docs/en/docs/benchmark/tpch.md | 748 +++++++++++++++++++++-- docs/images/image-20220614114351241.png | Bin 92508 -> 0 bytes docs/images/ssb.png | Bin 0 -> 84078 bytes docs/images/ssb_flat.png | Bin 0 -> 83556 bytes docs/images/ssb_v11_v015_compare.png | Bin 86762 -> 0 bytes docs/images/tpch.png | Bin 0 -> 81771 bytes docs/sidebars.json | 8 + docs/zh-CN/docs/benchmark/ssb.md | 407 ++++++++++--- docs/zh-CN/docs/benchmark/tpch.md | 755 ++++++++++++++++++++++-- 10 files changed, 2052 insertions(+), 256 deletions(-) delete mode 100644 docs/images/image-20220614114351241.png create mode 100644 docs/images/ssb.png create mode 100644 docs/images/ssb_flat.png delete mode 100644 docs/images/ssb_v11_v015_compare.png create mode 100644 docs/images/tpch.png diff --git a/docs/en/docs/benchmark/ssb.md b/docs/en/docs/benchmark/ssb.md index 900909485e..098a3a0a27 100644 --- a/docs/en/docs/benchmark/ssb.md +++ b/docs/en/docs/benchmark/ssb.md @@ -28,15 +28,21 @@ under the License. [Star Schema Benchmark(SSB)](https://www.cs.umb.edu/~poneil/StarSchemaB.PDF) is a performance test set in a lightweight data warehouse scenario. Based on [TPC-H](http://www.tpc.org/tpch/), SSB provides a simplified version of the star schema dataset, which is mainly used to test the performance of multi-table association queries under the star schema. . In addition, the industry usually flattens SSB as a wide table model (hereinafter referred to as: SSB flat) to test the performance of the query engine, refer to [Clickhouse](https://clickhouse.com/docs/zh/getting-started /example-datasets/star-schema). -This document mainly introduces the performance of Doris on the SSB test set. +This document mainly introduces the performance of Doris on the SSB 100G test set. > Note 1: The standard test set including SSB is usually far from the actual business scenario, and some tests will perform parameter tuning for the test set. Therefore, the test results of the standard test set can only reflect the performance of the database in specific scenarios. Users are advised to conduct further testing with actual business data. > > Note 2: The operations involved in this document are all performed in the Ubuntu Server 20.04 environment, and CentOS 7 can also be tested. -On 13 queries on the SSB standard test dataset, we tested the upcoming Doris 1.1 version and Doris 0.15.0 RC04 version peer-to-peer, and the overall performance improved by 2-3 times. +We conducted pairwise testing on 13 queries on the SSB standard test dataset based on Apache Doris 1.2.0-rc01, Apache Doris 1.1.3 and Apache Doris 0.15.0 RC04 versions. -![ssb_v11_v015_compare](/images/ssb_v11_v015_compare.png) +The overall performance improvement on SSB FlAT wide tables was nearly 4x on Apache Doris 1.2.0-rc01 compared to Apache Doris 1.1.3, and nearly 10x on Apache Doris 0.15.0 RC04. + +![ssb_v11_v015_compare](/images/ssb_flat.png) + +On the standard SSB test SQL, Apache Doris 1.2.0-rc01 delivers an overall performance improvement of nearly 2X over Apache Doris 1.1.3 and nearly 31X over Apache Doris 0.15.0 RC04. + +![ssb_12_11_015](/images/ssb.png) ## 1. Hardware Environment @@ -52,7 +58,7 @@ On 13 queries on the SSB standard test dataset, we tested the upcoming Doris 1.1 - Doris deploys 3BE 1FE; - Kernel version: Linux version 5.4.0-96-generic (buildd@lgw01-amd64-051) - OS version: Ubuntu Server 20.04 LTS 64 bit -- Doris software version: Apache Doris 1.1, Apache Doris 0.15.0 RC04 +- Doris software version: Apache Doris 1.2.0-rc01, Apache Doris 1.1.3 , Apache Doris 0.15.0 RC04 - JDK: openjdk version "11.0.14" 2022-01-18 ## 3. Test data volume @@ -68,111 +74,129 @@ On 13 queries on the SSB standard test dataset, we tested the upcoming Doris 1.1 ## 4. Test Results -Here we use the upcoming Doris-1.1 version and Doris-0.15.0 RC04 version for comparative testing. The test results are as follows: +Here we use Apache Doris 1.2.0-rc01, Apache Doris 1.1.3 and Apache Doris 0.15.0 RC04 versions for comparative testing, with the following results. -| Query | Doris-1.1(ms) | Doris-0.15.0 RC04(ms) | -| ----- | ------------- | --------------------- | -| Q1.1 | 90 | 250 | -| Q1.2 | 10 | 30 | -| Q1.3 | 70 | 120 | -| Q2.1 | 360 | 900 | -| Q2.2 | 340 | 1020 | -| Q2.3 | 260 | 770 | -| Q3.1 | 550 | 1710 | -| Q3.2 | 290 | 670 | -| Q3.3 | 240 | 550 | -| Q3.4 | 20 | 30 | -| Q4.1 | 480 | 1250 | -| Q4.2 | 240 | 400 | -| Q4.3 | 200 | 330 | +| Query | Apache Doris 1.2.0-rc01(ms) | Apache Doris 1.1.3 (ms) | Doris 0.15.0 RC04 (ms) | +| ----- | ------------- | ------------- | ----------------- | +| Q1.1 | 20 | 90 | 250 | +| Q1.2 | 10 | 10 | 30 | +| Q1.3 | 30 | 70 | 120 | +| Q2.1 | 90 | 360 | 900 | +| Q2.2 | 90 | 340 | 1020 | +| Q2.3 | 60 | 260 | 770 | +| Q3.1 | 160 | 550 | 1710 | +| Q3.2 | 80 | 290 | 670 | +| Q3.3 | 90 | 240 | 550 | +| Q3.4 | 20 | 20 | 30 | +| Q4.1 | 140 | 480 | 1250 | +| Q4.2 | 50 | 240 | 400 | +| Q4.3 | 30 | 200 | 330 | +| Total | 880 | 3150 | 8030 | **Interpretation of results** - The data set corresponding to the test results is scale 100, about 600 million. - The test environment is configured to be commonly used by users, including 4 cloud servers, 16-core 64G SSD, and 1 FE and 3 BE deployment. - Use common user configuration tests to reduce user selection and evaluation costs, but will not consume so many hardware resources during the entire test process. -- The test results are averaged over 3 executions. And the data has been fully compacted (if the data is tested immediately after the data is imported, the query delay may be higher than the test result, and the speed of compaction is being continuously optimized and will be significantly reduced in the future). -## 5. Environment Preparation -Please refer to the [official document](../install/install-deploy.md) to install and deploy Doris to obtain a normal running Doris cluster (at least 1 FE 1 BE, 1 FE 3 BE is recommended). +## 5. Standard SSB test results -You can modify BE's configuration file be.conf to add the following configuration items and restart BE for better query performance. +Here we use Apache Doris 1.2.0-rc01, Apache Doris 1.1.3 and Apache Doris 0.15.0 RC04 versions for comparative testing, with the following results. -```shell -enable_storage_vectorization=true -enable_low_cardinality_optimize=true -``` +| Query | Apache Doris 1.2.0-rc01 (ms) | Apache Doris 1.1.3 (ms) | Doris 0.15.0 RC04 (ms) | +| ----- | ------- | ---------------------- | ------------------------------- | +| Q1.1 | 40 | 18 | 350 | +| Q1.2 | 30 | 100 | 80 | +| Q1.3 | 20 | 70 | 80 | +| Q2.1 | 350 | 940 | 20680 | +| Q2.2 | 320 | 750 | 18250 | +| Q2.3 | 300 | 720 | 14760 | +| Q3.1 | 650 | 2150 | 22190 | +| Q3.2 | 260 | 510 | 8360 | +| Q3.3 | 220 | 450 | 6200 | +| Q3.4 | 60 | 70 | 160 | +| Q4.1 | 840 | 1480 | 24320 | +| Q4.2 | 460 | 560 | 6310 | +| Q4.3 | 610 | 660 | 10170 | +| Total | 4160 | 8478 | 131910 | -The scripts covered in the following documents are stored in `tools/ssb-tools/` in the Doris codebase. +**Interpretation of results** -> **Notice:** -> -> The above two parameters do not have these two parameters in version 0.15.0 RC04 and do not need to be configured. +- The data set corresponding to the test results is scale 100, about 600 million. +- The test environment is configured to be commonly used by users, including 4 cloud servers, 16-core 64G SSD, and 1 FE and 3 BE deployment. +- Use common user configuration tests to reduce user selection and evaluation costs, but will not consume so many hardware resources during the entire test process. -## 6. Data Preparation +## 6. Environment Preparation -### 6.1 Download and install the SSB data generation tool. +Please first refer to the [official documentation](. /install/install-deploy.md) for Apache Doris installation and deployment to get a working Doris cluster (at least 1 FE 1 BE, 1 FE 3 BE recommended). + +The scripts covered in the following documentation are stored in the Apache Doris codebase: [ssb-tools](https://github.com/apache/doris/tree/master/tools/ssb-tools) + +## 7. Data Preparation + +### 7.1 Download and install the SSB data generation tool. Execute the following script to download and compile the [ssb-dbgen](https://github.com/electrum/ssb-dbgen.git) tool. ```shell -bash bin/build-ssb-dbgen.sh -``` +sh build-ssb-dbgen.sh +```` -After successful installation, the `dbgen` binary will be generated in the `bin/ssb-dbgen/` directory. +After successful installation, the `dbgen` binary will be generated in the `ssb-dbgen/` directory. -### 6.2 Generate SSB test set +### 7.2 Generate SSB test set Execute the following script to generate the SSB dataset: ```shell -bash bin/gen-ssb-data.sh -``` +sh gen-ssb-data.sh -s 100 -c 100 +```` -> Note 1: See script help with `bash gen-ssb-data.sh -h`.The default scale factor is 100 (referred to as sf100 for short). By default, it takes 6 minutes to generate 10 data files, namely `bash bin/gen-ssb-data.sh -s 100 -c 10`. +> Note 1: See script help with `sh gen-ssb-data.sh -h`. > -> Note 2: The data will be generated in the directory `bin/ssb-data/` with the suffix`. tbl`. The total file size is about 60GB. The generation time may vary from several minutes to one hour, and the information of the generated files will be listed after the generation is completed. +> Note 2: The data will be generated in the `ssb-data/` directory with the suffix `.tbl`. The total file size is about 60GB. The generation time may vary from a few minutes to an hour. > -> Note 3: `-s 100` indicates that the test set scale factor is 100, `-c 10` indicates that 10 concurrent threads generate data for the lineorder table. The `-c` parameter also determines the number of files in the final lineorder table. The larger the parameter, the larger the number of files and the smaller each file. Use the default parameters to test sf100, and `-s1000 -c100` to test sf1000. +> Note 3: `-s 100` indicates that the test set size factor is 100, `-c 100` indicates that 100 concurrent threads generate data for the lineorder table. The `-c` parameter also determines the number of files in the final lineorder table. The larger the parameter, the larger the number of files and the smaller each file. With the `-s 100` parameter, the resulting dataset size is: | Table | Rows | Size | File Number | | --------- | ---------------- | ---- | ----------- | -| lineorder | 6亿(600037902) | 60GB | 10 | +| lineorder | 6亿(600037902) | 60GB | 100 | | customer | 300万(3000000) | 277M | 1 | | part | 140万(1400000) | 116M | 1 | | supplier | 20万(200000) | 17M | 1 | -| dates | 2556 | 228K | 1 | +| date | 2556 | 228K | 1 | -### 6.3 Create table +### 7.3 Create table -#### 6.3.1 Prepare the `conf/doris-cluster.conf` file. +#### 7.3.1 Prepare the `doris-cluster.conf` file. -Before calling the import script, you need to write the FE's ip port and other information in the `conf/doris-cluster.conf` file. +Before calling the import script, you need to write the FE's ip port and other information in the `doris-cluster.conf` file. + +File location and `load-ssb-dimension-data.sh` level. The contents of the file include FE's ip, HTTP port, user name, password and the DB name of the data to be imported: ```shell -export FE_HOST="127.0.0.1" +export FE_HOST="xxx" export FE_HTTP_PORT="8030" export FE_QUERY_PORT="9030" export USER="root" -export PASSWORD="" +export PASSWORD='xxx' export DB="ssb" ``` -#### 6.3.2 Execute the following script to generate and create the SSB table: +#### 7.3.2 Execute the following script to generate and create the SSB table: ```shell -bash bin/create-ssb-tables.sh -``` +sh create-ssb-tables.sh +```` -Or copy the build table in [create-ssb-tables.sql](https://github.com/apache/doris/tree/master/tools/ssb-tools/ddl/create-ssb-tables.sql) Statement, executed in Doris. -copy [create-ssb-flat-table.sql](https://github.com/apache/doris/tree/master/tools/ssb-tools/ddl/create-ssb-flat-table.sql) The table building statement in , executed in Doris. +Or copy [create-ssb-tables.sql](https://github.com/apache/incubator-doris/tree/master/tools/ssb-tools/ddl/create-ssb-tables.sql) and [ create-ssb-flat-table.sql](https://github.com/apache/incubator-doris/tree/master/tools/ssb-tools/ddl/create-ssb-flat-table.sql) of the The create table statements are executed in the MySQL client. -Below is the `lineorder_flat` table building statement. The "lineorder_flat" table is created in the above `bin/create-ssb-flat-table.sh` script with the default number of buckets (48 buckets). You can delete this table and adjust the number of buckets according to your cluster size node configuration, so as to obtain a better test effect. +The following is the `lineorder_flat` table build statement. The `lineorder_flat` table is created in the `create-ssb-flat-table.sh` script above with the default number of buckets (48 buckets). You can delete this table and tune this bucketing number according to your cluster size node configuration to get better one test results. ```sql CREATE TABLE `lineorder_flat` ( @@ -234,27 +258,30 @@ PROPERTIES ( ); ``` -### 6.4 Import data +### 7.4 Import data -The following script will connects Doirs to import according to the parameters in ` conf/Doris-cluster.conf`, including imports four dimension tables (customer, part, supplier and date) which has a small amount of data in single thread, simultaneously imports one fact table (lineorder), and imports a wide table (lineorder_flat) by' INSERT INTO ... SELECT ...'. +We use the following command to complete the import of all data from SSB test set and SSB FLAT wide table data synthesis and import into the table. ```shell -bash bin/load-ssb-data.sh + sh bin/load-ssb-data.sh -c 10 ``` -> Note 1: Check the script help through `bash bin/load-ssb-data.sh-h`, and by default, it will start 5 threads to import lineorder concurrently, that is `-c 5`. If more threads are started, the import speed can be accelerated, but additional memory overhead will be added. -> -> Note 2: For faster import speed, you can restart BE after adding `flush_thread_num_per_store=5` in be.conf. This configuration indicates the number of disk write threads for each data directory, and the default is 2. Larger data can improve write data throughput, but may increase IO Util. (Reference value: 1 mechanical disk, when the default is 2, the IO Util during the import process is about 12%, and when it is set to 5, the IO Util is about 26%. If it is an SSD disk, it is almost 0) . -> -> Note 3: It cost about 389s in loading customer, part, supplier, date and lineorder, and 740s in inserting into lineorder_flat. +`-c 5` means start 10 concurrent threads for import (default is 5). In the single BE node case, the lineorder data generated by `sh gen-ssb-data.sh -s 100 -c 100` will also generate the data of the ssb-flat table at the end, if more threads are started, it can speed up the import, but it will add extra memory overhead. + +> Notes. +> +> 1. This configuration indicates the number of write threads per data directory, and the default is 2. Larger data can improve write data throughput, but may increase IO Util. (Reference value: 1 mechanical disk, at default is 2, the IO Util during import is about 12%, and when set to 5, the IO Util is about 26%. (In case of SSD disks, it is almost 0). +> +> 2. flat table data using 'INSERT INTO ... SELECT ... ' method to import. + +### 7.5 Check imported data -### 6.5 Check imported data ```sql select count(*) from part; select count(*) from customer; select count(*) from supplier; -select count(*) from dates; +select count(*) from date; select count(*) from lineorder; select count(*) from lineorder_flat; ``` @@ -268,19 +295,11 @@ The amount of data should be the same as the number of rows that generate the da | customer | 300万(3000000) | 277 MB | 138.247 MB | | part | 140万(1400000) | 116 MB | 12.759 MB | | supplier | 20万(200000) | 17 MB | 9.143 MB | -| dates | 2556 | 228 KB | 34.276 KB | +| date | 2556 | 228 KB | 34.276 KB | -### 6.6 Query test +### 7.6 Query test -#### 6.6.1 Test script - -The following script connects Doris according to the parameters in ` conf/Doris-cluster.conf`, and prints out the rows of each table before executing the query. - -```shell -bash bin/run-ssb-flat-queries.sh -``` - -#### 6.6.2 Test SQL +#### 7.6.1 SSB FLAT Test SQL ```sql --Q1.1 @@ -366,3 +385,220 @@ WHERE S_NATION = 'UNITED STATES' AND LO_ORDERDATE >= 19970101 AND LO_ORDERDATE < GROUP BY YEAR, S_CITY, P_BRAND ORDER BY YEAR ASC, S_CITY ASC, P_BRAND ASC; ``` + +#### 7.6.2 SSB Standard Test SQL + +```SQL +--Q1.1 +SELECT SUM(lo_extendedprice * lo_discount) AS REVENUE +FROM lineorder, dates +WHERE + lo_orderdate = d_datekey + AND d_year = 1993 + AND lo_discount BETWEEN 1 AND 3 + AND lo_quantity < 25; +--Q1.2 +SELECT SUM(lo_extendedprice * lo_discount) AS REVENUE +FROM lineorder, dates +WHERE + lo_orderdate = d_datekey + AND d_yearmonth = 'Jan1994' + AND lo_discount BETWEEN 4 AND 6 + AND lo_quantity BETWEEN 26 AND 35; + +--Q1.3 +SELECT + SUM(lo_extendedprice * lo_discount) AS REVENUE +FROM lineorder, dates +WHERE + lo_orderdate = d_datekey + AND d_weeknuminyear = 6 + AND d_year = 1994 + AND lo_discount BETWEEN 5 AND 7 + AND lo_quantity BETWEEN 26 AND 35; + +--Q2.1 +SELECT SUM(lo_revenue), d_year, p_brand +FROM lineorder, dates, part, supplier +WHERE + lo_orderdate = d_datekey + AND lo_partkey = p_partkey + AND lo_suppkey = s_suppkey + AND p_category = 'MFGR#12' + AND s_region = 'AMERICA' +GROUP BY d_year, p_brand +ORDER BY p_brand; + +--Q2.2 +SELECT SUM(lo_revenue), d_year, p_brand +FROM lineorder, dates, part, supplier +WHERE + lo_orderdate = d_datekey + AND lo_partkey = p_partkey + AND lo_suppkey = s_suppkey + AND p_brand BETWEEN 'MFGR#2221' AND 'MFGR#2228' + AND s_region = 'ASIA' +GROUP BY d_year, p_brand +ORDER BY d_year, p_brand; + +--Q2.3 +SELECT SUM(lo_revenue), d_year, p_brand +FROM lineorder, dates, part, supplier +WHERE + lo_orderdate = d_datekey + AND lo_partkey = p_partkey + AND lo_suppkey = s_suppkey + AND p_brand = 'MFGR#2239' + AND s_region = 'EUROPE' +GROUP BY d_year, p_brand +ORDER BY d_year, p_brand; + +--Q3.1 +SELECT + c_nation, + s_nation, + d_year, + SUM(lo_revenue) AS REVENUE +FROM customer, lineorder, supplier, dates +WHERE + lo_custkey = c_custkey + AND lo_suppkey = s_suppkey + AND lo_orderdate = d_datekey + AND c_region = 'ASIA' + AND s_region = 'ASIA' + AND d_year >= 1992 + AND d_year <= 1997 +GROUP BY c_nation, s_nation, d_year +ORDER BY d_year ASC, REVENUE DESC; + +--Q3.2 +SELECT + c_city, + s_city, + d_year, + SUM(lo_revenue) AS REVENUE +FROM customer, lineorder, supplier, dates +WHERE + lo_custkey = c_custkey + AND lo_suppkey = s_suppkey + AND lo_orderdate = d_datekey + AND c_nation = 'UNITED STATES' + AND s_nation = 'UNITED STATES' + AND d_year >= 1992 + AND d_year <= 1997 +GROUP BY c_city, s_city, d_year +ORDER BY d_year ASC, REVENUE DESC; + +--Q3.3 +SELECT + c_city, + s_city, + d_year, + SUM(lo_revenue) AS REVENUE +FROM customer, lineorder, supplier, dates +WHERE + lo_custkey = c_custkey + AND lo_suppkey = s_suppkey + AND lo_orderdate = d_datekey + AND ( + c_city = 'UNITED KI1' + OR c_city = 'UNITED KI5' + ) + AND ( + s_city = 'UNITED KI1' + OR s_city = 'UNITED KI5' + ) + AND d_year >= 1992 + AND d_year <= 1997 +GROUP BY c_city, s_city, d_year +ORDER BY d_year ASC, REVENUE DESC; + +--Q3.4 +SELECT + c_city, + s_city, + d_year, + SUM(lo_revenue) AS REVENUE +FROM customer, lineorder, supplier, dates +WHERE + lo_custkey = c_custkey + AND lo_suppkey = s_suppkey + AND lo_orderdate = d_datekey + AND ( + c_city = 'UNITED KI1' + OR c_city = 'UNITED KI5' + ) + AND ( + s_city = 'UNITED KI1' + OR s_city = 'UNITED KI5' + ) + AND d_yearmonth = 'Dec1997' +GROUP BY c_city, s_city, d_year +ORDER BY d_year ASC, REVENUE DESC; + +--Q4.1 +SELECT /*+SET_VAR(parallel_fragment_exec_instance_num=4, enable_vectorized_engine=true, batch_size=4096, enable_cost_based_join_reorder=true, enable_projection=true) */ + d_year, + c_nation, + SUM(lo_revenue - lo_supplycost) AS PROFIT +FROM dates, customer, supplier, part, lineorder +WHERE + lo_custkey = c_custkey + AND lo_suppkey = s_suppkey + AND lo_partkey = p_partkey + AND lo_orderdate = d_datekey + AND c_region = 'AMERICA' + AND s_region = 'AMERICA' + AND ( + p_mfgr = 'MFGR#1' + OR p_mfgr = 'MFGR#2' + ) +GROUP BY d_year, c_nation +ORDER BY d_year, c_nation; + +--Q4.2 +SELECT /*+SET_VAR(parallel_fragment_exec_instance_num=2, enable_vectorized_engine=true, batch_size=4096, enable_cost_based_join_reorder=true, enable_projection=true) */ + d_year, + s_nation, + p_category, + SUM(lo_revenue - lo_supplycost) AS PROFIT +FROM dates, customer, supplier, part, lineorder +WHERE + lo_custkey = c_custkey + AND lo_suppkey = s_suppkey + AND lo_partkey = p_partkey + AND lo_orderdate = d_datekey + AND c_region = 'AMERICA' + AND s_region = 'AMERICA' + AND ( + d_year = 1997 + OR d_year = 1998 + ) + AND ( + p_mfgr = 'MFGR#1' + OR p_mfgr = 'MFGR#2' + ) +GROUP BY d_year, s_nation, p_category +ORDER BY d_year, s_nation, p_category; + +--Q4.3 +SELECT /*+SET_VAR(parallel_fragment_exec_instance_num=2, enable_vectorized_engine=true, batch_size=4096, enable_cost_based_join_reorder=true, enable_projection=true) */ + d_year, + s_city, + p_brand, + SUM(lo_revenue - lo_supplycost) AS PROFIT +FROM dates, customer, supplier, part, lineorder +WHERE + lo_custkey = c_custkey + AND lo_suppkey = s_suppkey + AND lo_partkey = p_partkey + AND lo_orderdate = d_datekey + AND s_nation = 'UNITED STATES' + AND ( + d_year = 1997 + OR d_year = 1998 + ) + AND p_category = 'MFGR#14' +GROUP BY d_year, s_city, p_brand +ORDER BY d_year, s_city, p_brand; +``` diff --git a/docs/en/docs/benchmark/tpch.md b/docs/en/docs/benchmark/tpch.md index d354730aac..b4d4112c59 100644 --- a/docs/en/docs/benchmark/tpch.md +++ b/docs/en/docs/benchmark/tpch.md @@ -24,7 +24,7 @@ specific language governing permissions and limitations under the License. --> -# TPC-H benchmark +# TPC-H Benchmark TPC-H is a Decision Support Benchmark consisting of a set of business-oriented ad hoc queries and concurrent data modifications. The data that queries and populates the database has broad industry relevance. This benchmark demonstrates a decision support system that examines large amounts of data, executes highly complex queries, and answers critical business questions. The performance metric reported by TPC-H is called the TPC-H Hourly Compound Query Performance Metric (QphH@Size) and reflects multiple aspects of the system's ability to process queries. These aspects include the database size chosen when executing the query, the query processing power when the query is submitted by a single stream, and the query throughput when the query is submitted by multiple concurrent users. @@ -34,9 +34,9 @@ This document mainly introduces the performance of Doris on the TPC-H test set. > > Note 2: The operations covered in this document are tested on CentOS 7.x. -On 22 queries on the TPC-H standard test dataset, we tested the upcoming Doris 1.1 version and Doris 0.15.0 RC04 version side by side, and the overall performance improved by 3-4 times. In individual scenarios, it can achieve a ten-fold improvement. +On 22 queries on the TPC-H standard test dataset, we conducted pairwise tests based on Apache Doris 1.2.0-rc01, Apache Doris 1.1.3 and Apache Doris 0.15.0 RC04 versions. The overall performance of Apache Doris 1.2.0-rc01 is nearly 3 times better than that of Apache Doris 1.1.3 and nearly 11 times better than that of Apache Doris 0.15.0 RC04. -![image-20220614114351241](/images/image-20220614114351241.png) +![image-20220614114351241](/images/tpch.png) ## 1. Hardware Environment @@ -53,12 +53,12 @@ On 22 queries on the TPC-H standard test dataset, we tested the upcoming Doris 1 - Doris deploys 3BE 1FE; - Kernel version: Linux version 5.4.0-96-generic (buildd@lgw01-amd64-051) - OS version: CentOS 7.8 -- Doris software version: Apache Doris 1.1, Apache Doris 0.15.0 RC04 +- Doris software version: Apache Doris 1.2.0-rc01、 Apache Doris 1.1.3 、 Apache Doris 0.15.0 RC04 - JDK: openjdk version "11.0.14" 2022-01-18 ## 3. Test Data Volume -The entire test simulation generates 100G of data and is imported into Doris 0.15.0 RC04 and Doris 1.1 versions for testing. The following is the relevant description of the table and the amount of data. +The entire test simulation generates 100G of data and is imported into Apache Doris 1.2.0-rc01, Apache Doris 1.1.3 and Apache Doris 0.15.0 RC04 versions for testing. The following is the relevant description of the table and the amount of data. | TPC-H Table Name | Rows | data size | remark | | :--------------- | :---------- | ---------- | :----- | @@ -73,11 +73,11 @@ The entire test simulation generates 100G of data and is imported into Doris 0.1 ## 4. Test SQL -TPCH 22 test query statements : [TPCH-Query-SQL](https://github.com/apache/doris/tree/master/tools/tpch-tools/queries) +TPCH 22 test query statements : [TPCH-Query-SQL](https://github.com/apache/incubator-doris/tree/master/tools/tpch-tools/queries) -Notice: +**Notice:** -The following four parameters in the above SQL do not exist in 0.15.0 RC04. When executed in 0.15.0 RC04, remove them: +The following four parameters in the above SQL are not present in Apache Doris 0.15.0 RC04 and are removed during execution. ``` 1. enable_vectorized_engine=true, @@ -88,40 +88,39 @@ The following four parameters in the above SQL do not exist in 0.15.0 RC04. When ## 5. Test Result -Here we use the upcoming Doris-1.1 version and Doris-0.15.0 RC04 version for comparative testing. The test results are as follows: +Here we use Apache Doris 1.2.0-rc01, Apache Doris 1.1.3 and Apache Doris 0.15.0 RC04 versions for comparison tests with the following results. -| Query | Doris-1.1(s) | 0.15.0 RC04(s) | -| --------- | ------------ | -------------- | -| Q1 | 3.75 | 28.63 | -| Q2 | 4.22 | 7.88 | -| Q3 | 2.64 | 9.39 | -| Q4 | 1.5 | 9.3 | -| Q5 | 2.15 | 4.11 | -| Q6 | 0.19 | 0.43 | -| Q7 | 1.04 | 1.61 | -| Q8 | 1.75 | 50.35 | -| Q9 | 7.94 | 16.34 | -| Q10 | 1.41 | 5.21 | -| Q11 | 0.35 | 1.72 | -| Q12 | 0.57 | 5.39 | -| Q13 | 8.15 | 20.88 | -| Q14 | 0.3 | | -| Q15 | 0.66 | 1.86 | -| Q16 | 0.79 | 1.32 | -| Q17 | 1.51 | 26.67 | -| Q18 | 3.364 | 11.77 | -| Q19 | 0.829 | 1.71 | -| Q20 | 2.77 | 5.2 | -| Q21 | 4.47 | 10.34 | -| Q22 | 0.9 | 3.22 | -| **total** | **51.253** | **223.33** | +| Query | Apache Doris 1.2.0-rc01 (s) | Apache Doris 1.1.3 (s) | Apache Doris 0.15.0 RC04 (s) | +| -------- | --------------------------- | ---------------------- | ---------------------------- | +| Q1 | 2.12 | 3.75 | 28.63 | +| Q2 | 0.20 | 4.22 | 7.88 | +| Q3 | 0.62 | 2.64 | 9.39 | +| Q4 | 0.61 | 1.5 | 9.3 | +| Q5 | 1.05 | 2.15 | 4.11 | +| Q6 | 0.08 | 0.19 | 0.43 | +| Q7 | 0.58 | 1.04 | 1.61 | +| Q8 | 0.72 | 1.75 | 50.35 | +| Q9 | 3.61 | 7.94 | 16.34 | +| Q10 | 1.26 | 1.41 | 5.21 | +| Q11 | 0.15 | 0.35 | 1.72 | +| Q12 | 0.21 | 0.57 | 5.39 | +| Q13 | 2.62 | 8.15 | 20.88 | +| Q14 | 0.16 | 0.3 | | +| Q15 | 0.30 | 0.66 | 1.86 | +| Q16 | 0.38 | 0.79 | 1.32 | +| Q17 | 0.65 | 1.51 | 26.67 | +| Q18 | 2.28 | 3.364 | 11.77 | +| Q19 | 0.20 | 0.829 | 1.71 | +| Q20 | 0.21 | 2.77 | 5.2 | +| Q21 | 1.17 | 4.47 | 10.34 | +| Q22 | 0.46 | 0.9 | 3.22 | +| **Total** | **19.64** | **51.253** | **223.33** | - **Result description** - The data set corresponding to the test results is scale 100, about 600 million. - The test environment is configured to be commonly used by users, including 4 cloud servers, 16-core 64G SSD, and 1 FE and 3 BE deployment. - Use common user configuration tests to reduce user selection and evaluation costs, but will not consume so many hardware resources during the entire test process. - - The test results are averaged over 3 executions. And the data has been fully compacted (if the data is tested immediately after the data is imported, the query delay may be higher than the test result, and the speed of compaction is being continuously optimized, and will be significantly reduced in the future). - - 0.15 RC04 Q14 execution failed in TPC-H test, unable to complete query. + - Apache Doris 0.15 RC04 Q14 execution failed in TPC-H test, unable to complete query. ## 6. Environmental Preparation @@ -131,10 +130,10 @@ Please refer to the [official document](../install/install-deploy.md) to install ### 7.1 Download and install the TPC-H data generation tool -Execute the following script to download and compile the [tpch-tools](https://github.com/apache/doris/tree/master/tools/tpch-tools) tool. +Execute the following script to download and compile the [tpch-tools](https://github.com/apache/incubator-doris/tree/master/tools/tpch-tools) tool. ```shell -sh bin/build-tpch-dbgen.sh +sh build-tpch-dbgen.sh ``` After successful installation, the `dbgen` binary will be generated in the `TPC-H_Tools_v3.0.0/` directory. @@ -144,12 +143,12 @@ After successful installation, the `dbgen` binary will be generated in the `TPC- Execute the following script to generate the TPC-H dataset: ```shell -sh bin/gen-tpch-data.sh +sh gen-tpch-data.sh ``` -> Note 1: View script help via `sh bin/gen-tpch-data.sh -h`. +> Note 1: View script help via `sh gen-tpch-data.sh -h`. > -> Note 2: The data will be generated in the `bin/tpch-data/` directory with the suffix `.tbl`. The total file size is about 100GB. The generation time may vary from a few minutes to an hour. +> Note 2: The data will be generated in the `tpch-data/` directory with the suffix `.tbl`. The total file size is about 100GB. The generation time may vary from a few minutes to an hour. > > Note 3: The standard test data set of 100G is generated by default @@ -157,7 +156,7 @@ sh bin/gen-tpch-data.sh #### 7.3.1 Prepare the `doris-cluster.conf` file -Before calling the import script, you need to write the FE's ip port and other information in the `conf/doris-cluster.conf` file. +Before calling the import script, you need to write the FE's ip port and other information in the `doris-cluster.conf` file. File location and `load-tpch-data.sh` level. @@ -175,7 +174,7 @@ export USER='root' # Doris password export PASSWORD='' # The database where TPC-H tables located -export DB='tpch' +export DB='tpch1' ``` #### 7.3.2 Execute the following script to generate and create the TPC-H table @@ -183,7 +182,7 @@ export DB='tpch' ```shell sh create-tpch-tables.sh ``` -Or copy the table creation statement in [create-tpch-tables.sql](https://github.com/apache/doris/blob/master/tools/tpch-tools/ddl/create-tpch-tables.sql), Execute in Doris. +Or copy the table creation statement in [create-tpch-tables.sql](https://github.com/apache/incubator-doris/blob/master/tools/tpch-tools/create-tpch-tables.sql), Execute in Doris. ### 7.4 导入数据 @@ -191,12 +190,12 @@ Or copy the table creation statement in [create-tpch-tables.sql](https://github. 通过下面的命令执行数据导入: ```shell -sh bin/load-tpch-data.sh +sh ./load-tpch-data.sh ``` ### 7.5 Check Imported Data -Execute the following SQL statement to check the imported data volume is consistent with the above data volume. +Execute the following SQL statement to check that the imported data is consistent with the above data. ```sql select count(*) from lineitem; @@ -212,10 +211,12 @@ select count(*) from revenue0; ### 7.6 Query Test +#### 7.6.1 Executing Query Scripts + Execute the above test SQL or execute the following command ``` -sh bin/run-tpch-queries.sh +./run-tpch-queries.sh ``` >Notice: @@ -223,3 +224,656 @@ sh bin/run-tpch-queries.sh >1. At present, the query optimizer and statistics functions of Doris are not perfect, so we rewrite some queries in TPC-H to adapt to the execution framework of Doris, but it does not affect the correctness of the results > >2. Doris' new query optimizer will be released in subsequent versions +>3. Set `set mem_exec_limit=8G` before executing the query + +#### 7.6.2 Single SQL Execution + +```SQL +--Q1 +select /*+SET_VAR(exec_mem_limit=8589934592, parallel_fragment_exec_instance_num=8, enable_vectorized_engine=true, batch_size=4096, disable_join_reorder=false, enable_cost_based_join_reorder=false, enable_projection=false) */ + l_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 +from + lineitem +where + l_shipdate <= date '1998-12-01' - interval '90' day +group by + l_returnflag, + l_linestatus +order by + l_returnflag, + l_linestatus; + +--Q2 +select /*+SET_VAR(exec_mem_limit=8589934592, parallel_fragment_exec_instance_num=1, enable_vectorized_engine=true, batch_size=4096, disable_join_reorder=true, enable_cost_based_join_reorder=false, enable_projection=true) */ + s_acctbal, + s_name, + n_name, + p_partkey, + p_mfgr, + s_address, + s_phone, + s_comment +from + partsupp join + ( + select + ps_partkey as a_partkey, + min(ps_supplycost) as a_min + from + partsupp, + part, + supplier, + nation, + region + where + p_partkey = ps_partkey + and s_suppkey = ps_suppkey + and s_nationkey = n_nationkey + and n_regionkey = r_regionkey + and r_name = 'EUROPE' + and p_size = 15 + and p_type like '%BRASS' + group by a_partkey + ) A on ps_partkey = a_partkey and ps_supplycost=a_min , + part, + supplier, + nation, + region +where + p_partkey = ps_partkey + and s_suppkey = ps_suppkey + and p_size = 15 + and p_type like '%BRASS' + and s_nationkey = n_nationkey + and n_regionkey = r_regionkey + and r_name = 'EUROPE' + +order by + s_acctbal desc, + n_name, + s_name, + p_partkey +limit 100; + +--Q3 +select /*+SET_VAR(exec_mem_limit=8589934592, parallel_fragment_exec_instance_num=8, enable_vectorized_engine=true, batch_size=4096, disable_join_reorder=true, enable_cost_based_join_reorder=false, enable_projection=true, runtime_filter_wait_time_ms=10000) */ + l_orderkey, + sum(l_extendedprice * (1 - l_discount)) as revenue, + o_orderdate, + o_shippriority +from + ( + select l_orderkey, l_extendedprice, l_discount, o_orderdate, o_shippriority, o_custkey from + lineitem join orders + where l_orderkey = o_orderkey + and o_orderdate < date '1995-03-15' + and l_shipdate > date '1995-03-15' + ) t1 join customer c + on c.c_custkey = t1.o_custkey + where c_mktsegment = 'BUILDING' +group by + l_orderkey, + o_orderdate, + o_shippriority +order by + revenue desc, + o_orderdate +limit 10; + +--Q4 +select /*+SET_VAR(exec_mem_limit=8589934592, parallel_fragment_exec_instance_num=4, enable_vectorized_engine=true, batch_size=4096, disable_join_reorder=true, enable_cost_based_join_reorder=false, enable_projection=true) */ + o_orderpriority, + count(*) as order_count +from + ( + select + * + from + lineitem + where l_commitdate < l_receiptdate + ) t1 + right semi join orders + on t1.l_orderkey = o_orderkey +where + o_orderdate >= date '1993-07-01' + and o_orderdate < date '1993-07-01' + interval '3' month +group by + o_orderpriority +order by + o_orderpriority; + +--Q5 +select /*+SET_VAR(exec_mem_limit=8589934592, parallel_fragment_exec_instance_num=8, enable_vectorized_engine=true, batch_size=4096, disable_join_reorder=false, enable_cost_based_join_reorder=false, enable_projection=true) */ + n_name, + sum(l_extendedprice * (1 - l_discount)) as revenue +from + customer, + orders, + lineitem, + supplier, + nation, + region +where + c_custkey = o_custkey + and l_orderkey = o_orderkey + and l_suppkey = s_suppkey + and c_nationkey = s_nationkey + and s_nationkey = n_nationkey + and n_regionkey = r_regionkey + and r_name = 'ASIA' + and o_orderdate >= date '1994-01-01' + and o_orderdate < date '1994-01-01' + interval '1' year +group by + n_name +order by + revenue desc; + +--Q6 +select /*+SET_VAR(exec_mem_limit=8589934592, parallel_fragment_exec_instance_num=1, enable_vectorized_engine=true, batch_size=4096, disable_join_reorder=false, enable_cost_based_join_reorder=false, enable_projection=true) */ + sum(l_extendedprice * l_discount) as revenue +from + lineitem +where + l_shipdate >= date '1994-01-01' + and l_shipdate < date '1994-01-01' + interval '1' year + and l_discount between .06 - 0.01 and .06 + 0.01 + and l_quantity < 24; + +--Q7 +select /*+SET_VAR(exec_mem_limit=458589934592, parallel_fragment_exec_instance_num=2, enable_vectorized_engine=true, batch_size=4096, disable_join_reorder=false, enable_cost_based_join_reorder=false, enable_projection=true) */ + supp_nation, + cust_nation, + l_year, + sum(volume) as revenue +from + ( + select + n1.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 volume + from + supplier, + lineitem, + orders, + customer, + nation n1, + nation n2 + where + s_suppkey = l_suppkey + and o_orderkey = l_orderkey + and c_custkey = o_custkey + and s_nationkey = n1.n_nationkey + and c_nationkey = n2.n_nationkey + and ( + (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 by + supp_nation, + cust_nation, + l_year +order by + supp_nation, + cust_nation, + l_year; + +--Q8 + +select /*+SET_VAR(exec_mem_limit=8589934592, parallel_fragment_exec_instance_num=8, enable_vectorized_engine=true, batch_size=4096, disable_join_reorder=true, enable_cost_based_join_reorder=false, enable_projection=true) */ + o_year, + sum(case + when nation = 'BRAZIL' then volume + else 0 + end) / sum(volume) as mkt_share +from + ( + select + extract(year from o_orderdate) as o_year, + l_extendedprice * (1 - l_discount) as volume, + n2.n_name as nation + from + lineitem, + orders, + customer, + supplier, + part, + nation n1, + nation n2, + region + where + p_partkey = l_partkey + and s_suppkey = l_suppkey + and l_orderkey = o_orderkey + and o_custkey = c_custkey + and c_nationkey = n1.n_nationkey + and n1.n_regionkey = r_regionkey + and r_name = 'AMERICA' + and s_nationkey = n2.n_nationkey + and o_orderdate between date '1995-01-01' and date '1996-12-31' + and p_type = 'ECONOMY ANODIZED STEEL' + ) as all_nations +group by + o_year +order by + o_year; + +--Q9 +select/*+SET_VAR(exec_mem_limit=37179869184, parallel_fragment_exec_instance_num=2, enable_vectorized_engine=true, batch_size=4096, disable_join_reorder=false, enable_cost_based_join_reorder=false, enable_projection=true, enable_remove_no_conjuncts_runtime_filter_policy=true, runtime_filter_wait_time_ms=100000) */ + nation, + o_year, + sum(amount) as sum_profit +from + ( + select + n_name as nation, + extract(year from o_orderdate) as o_year, + l_extendedprice * (1 - l_discount) - ps_supplycost * l_quantity as amount + from + lineitem join orders on o_orderkey = l_orderkey + join[shuffle] part on p_partkey = l_partkey + join[shuffle] partsupp on ps_partkey = l_partkey + join[shuffle] supplier on s_suppkey = l_suppkey + join[broadcast] nation on s_nationkey = n_nationkey + where + ps_suppkey = l_suppkey and + p_name like '%green%' + ) as profit +group by + nation, + o_year +order by + nation, + o_year desc; + +--Q10 + +select /*+SET_VAR(exec_mem_limit=8589934592, parallel_fragment_exec_instance_num=4, enable_vectorized_engine=true, batch_size=4096, disable_join_reorder=true, enable_cost_based_join_reorder=false, enable_projection=true) */ + c_custkey, + c_name, + sum(t1.l_extendedprice * (1 - t1.l_discount)) as revenue, + c_acctbal, + n_name, + c_address, + c_phone, + c_comment +from + customer, + ( + select o_custkey,l_extendedprice,l_discount from lineitem, orders + where l_orderkey = o_orderkey + and o_orderdate >= date '1993-10-01' + and o_orderdate < date '1993-10-01' + interval '3' month + and l_returnflag = 'R' + ) t1, + nation +where + c_custkey = t1.o_custkey + and c_nationkey = n_nationkey +group by + c_custkey, + c_name, + c_acctbal, + c_phone, + n_name, + c_address, + c_comment +order by + revenue desc +limit 20; + +--Q11 +select /*+SET_VAR(exec_mem_limit=8589934592, parallel_fragment_exec_instance_num=2, enable_vectorized_engine=true, batch_size=4096, disable_join_reorder=false, enable_cost_based_join_reorder=true, enable_projection=true) */ + ps_partkey, + sum(ps_supplycost * ps_availqty) as value +from + partsupp, + ( + select s_suppkey + from supplier, nation + where s_nationkey = n_nationkey and n_name = 'GERMANY' + ) B +where + ps_suppkey = B.s_suppkey +group by + ps_partkey having + sum(ps_supplycost * ps_availqty) > ( + select + sum(ps_supplycost * ps_availqty) * 0.000002 + from + partsupp, + (select s_suppkey + from supplier, nation + where s_nationkey = n_nationkey and n_name = 'GERMANY' + ) A + where + ps_suppkey = A.s_suppkey + ) +order by + value desc; + +--Q12 + +select /*+SET_VAR(exec_mem_limit=8589934592, parallel_fragment_exec_instance_num=2, enable_vectorized_engine=true, batch_size=4096, disable_join_reorder=false, enable_cost_based_join_reorder=true, enable_projection=true) */ + l_shipmode, + sum(case + when o_orderpriority = '1-URGENT' + or o_orderpriority = '2-HIGH' + then 1 + else 0 + end) as high_line_count, + sum(case + when o_orderpriority <> '1-URGENT' + and o_orderpriority <> '2-HIGH' + then 1 + else 0 + end) as low_line_count +from + orders, + lineitem +where + o_orderkey = l_orderkey + and l_shipmode in ('MAIL', 'SHIP') + and l_commitdate < l_receiptdate + and l_shipdate < l_commitdate + and l_receiptdate >= date '1994-01-01' + and l_receiptdate < date '1994-01-01' + interval '1' year +group by + l_shipmode +order by + l_shipmode; + +--Q13 +select /*+SET_VAR(exec_mem_limit=45899345920, parallel_fragment_exec_instance_num=16, enable_vectorized_engine=true, batch_size=4096, disable_join_reorder=true, enable_cost_based_join_reorder=true, enable_projection=true) */ + c_count, + count(*) as custdist +from + ( + select + c_custkey, + count(o_orderkey) as c_count + from + orders right outer join customer on + c_custkey = o_custkey + and o_comment not like '%special%requests%' + group by + c_custkey + ) as c_orders +group by + c_count +order by + custdist desc, + c_count desc; + +--Q14 + +select /*+SET_VAR(exec_mem_limit=8589934592, parallel_fragment_exec_instance_num=8, enable_vectorized_engine=true, batch_size=4096, disable_join_reorder=true, enable_cost_based_join_reorder=true, enable_projection=true, runtime_filter_mode=OFF) */ + 100.00 * sum(case + when p_type like 'PROMO%' + then l_extendedprice * (1 - l_discount) + else 0 + end) / sum(l_extendedprice * (1 - l_discount)) as promo_revenue +from + part, + lineitem +where + l_partkey = p_partkey + and l_shipdate >= date '1995-09-01' + and l_shipdate < date '1995-09-01' + interval '1' month; + +--Q15 +select /*+SET_VAR(exec_mem_limit=8589934592, parallel_fragment_exec_instance_num=8, enable_vectorized_engine=true, batch_size=4096, disable_join_reorder=false, enable_cost_based_join_reorder=true, enable_projection=true) */ + s_suppkey, + s_name, + s_address, + s_phone, + total_revenue +from + supplier, + revenue0 +where + s_suppkey = supplier_no + and total_revenue = ( + select + max(total_revenue) + from + revenue0 + ) +order by + s_suppkey; + +--Q16 +select /*+SET_VAR(exec_mem_limit=8589934592, parallel_fragment_exec_instance_num=8, enable_vectorized_engine=true, batch_size=4096, disable_join_reorder=false, enable_cost_based_join_reorder=true, enable_projection=true) */ + p_brand, + p_type, + p_size, + count(distinct ps_suppkey) as supplier_cnt +from + partsupp, + part +where + p_partkey = ps_partkey + and 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 ( + select + s_suppkey + from + supplier + where + s_comment like '%Customer%Complaints%' + ) +group by + p_brand, + p_type, + p_size +order by + supplier_cnt desc, + p_brand, + p_type, + p_size; + +--Q17 +select /*+SET_VAR(exec_mem_limit=8589934592, parallel_fragment_exec_instance_num=1, enable_vectorized_engine=true, batch_size=4096, disable_join_reorder=false, enable_cost_based_join_reorder=true, enable_projection=true) */ + sum(l_extendedprice) / 7.0 as avg_yearly +from + lineitem join [broadcast] + part p1 on p1.p_partkey = l_partkey +where + p1.p_brand = 'Brand#23' + and p1.p_container = 'MED BOX' + and l_quantity < ( + select + 0.2 * avg(l_quantity) + from + lineitem join [broadcast] + part p2 on p2.p_partkey = l_partkey + where + l_partkey = p1.p_partkey + and p2.p_brand = 'Brand#23' + and p2.p_container = 'MED BOX' + ); + +--Q18 + +select /*+SET_VAR(exec_mem_limit=45899345920, parallel_fragment_exec_instance_num=4, enable_vectorized_engine=true, batch_size=4096, disable_join_reorder=true, enable_cost_based_join_reorder=true, enable_projection=true) */ + c_name, + c_custkey, + t3.o_orderkey, + t3.o_orderdate, + t3.o_totalprice, + sum(t3.l_quantity) +from +customer join +( + select * from + lineitem join + ( + select * from + orders left semi join + ( + select + l_orderkey + from + lineitem + group by + l_orderkey having sum(l_quantity) > 300 + ) t1 + on o_orderkey = t1.l_orderkey + ) t2 + on t2.o_orderkey = l_orderkey +) t3 +on c_custkey = t3.o_custkey +group by + c_name, + c_custkey, + t3.o_orderkey, + t3.o_orderdate, + t3.o_totalprice +order by + t3.o_totalprice desc, + t3.o_orderdate +limit 100; + +--Q19 + +select /*+SET_VAR(exec_mem_limit=8589934592, parallel_fragment_exec_instance_num=2, enable_vectorized_engine=true, batch_size=4096, disable_join_reorder=false, enable_cost_based_join_reorder=false, enable_projection=true) */ + sum(l_extendedprice* (1 - l_discount)) as revenue +from + lineitem, + part +where + ( + p_partkey = l_partkey + and p_brand = 'Brand#12' + and p_container in ('SM CASE', 'SM BOX', 'SM PACK', 'SM PKG') + and l_quantity >= 1 and l_quantity <= 1 + 10 + and p_size between 1 and 5 + and l_shipmode in ('AIR', 'AIR REG') + and l_shipinstruct = 'DELIVER IN PERSON' + ) + or + ( + p_partkey = l_partkey + and p_brand = 'Brand#23' + and p_container in ('MED BAG', 'MED BOX', 'MED PKG', 'MED PACK') + and l_quantity >= 10 and l_quantity <= 10 + 10 + and p_size between 1 and 10 + and l_shipmode in ('AIR', 'AIR REG') + and l_shipinstruct = 'DELIVER IN PERSON' + ) + or + ( + p_partkey = l_partkey + and p_brand = 'Brand#34' + and p_container in ('LG CASE', 'LG BOX', 'LG PACK', 'LG PKG') + and l_quantity >= 20 and l_quantity <= 20 + 10 + and p_size between 1 and 15 + and l_shipmode in ('AIR', 'AIR REG') + and l_shipinstruct = 'DELIVER IN PERSON' + ); + +--Q20 +select /*+SET_VAR(exec_mem_limit=8589934592, parallel_fragment_exec_instance_num=2, enable_vectorized_engine=true, batch_size=4096, disable_join_reorder=true, enable_cost_based_join_reorder=true, enable_projection=true, runtime_bloom_filter_size=551943) */ +s_name, s_address from +supplier left semi join +( + select * from + ( + select l_partkey,l_suppkey, 0.5 * sum(l_quantity) as l_q + from lineitem + where l_shipdate >= date '1994-01-01' + and l_shipdate < date '1994-01-01' + interval '1' year + group by l_partkey,l_suppkey + ) t2 join + ( + select ps_partkey, ps_suppkey, ps_availqty + from partsupp left semi join part + on ps_partkey = p_partkey and p_name like 'forest%' + ) t1 + on t2.l_partkey = t1.ps_partkey and t2.l_suppkey = t1.ps_suppkey + and t1.ps_availqty > t2.l_q +) t3 +on s_suppkey = t3.ps_suppkey +join nation +where s_nationkey = n_nationkey + and n_name = 'CANADA' +order by s_name; + +--Q21 +select /*+SET_VAR(exec_mem_limit=8589934592, parallel_fragment_exec_instance_num=4, enable_vectorized_engine=true, batch_size=4096, disable_join_reorder=true, enable_cost_based_join_reorder=true, enable_projection=true) */ +s_name, count(*) as numwait +from + lineitem l2 right semi join + ( + select * from + lineitem l3 right anti join + ( + select * from + orders join lineitem l1 on l1.l_orderkey = o_orderkey and o_orderstatus = 'F' + join + ( + select * from + supplier join nation + where s_nationkey = n_nationkey + and n_name = 'SAUDI ARABIA' + ) t1 + where t1.s_suppkey = l1.l_suppkey and l1.l_receiptdate > l1.l_commitdate + ) t2 + on l3.l_orderkey = t2.l_orderkey and l3.l_suppkey <> t2.l_suppkey and l3.l_receiptdate > l3.l_commitdate + ) t3 + on l2.l_orderkey = t3.l_orderkey and l2.l_suppkey <> t3.l_suppkey + +group by + t3.s_name +order by + numwait desc, + t3.s_name +limit 100; + +--Q21 + +with tmp as (select + avg(c_acctbal) as av + from + customer + where + c_acctbal > 0.00 + and substring(c_phone, 1, 2) in + ('13', '31', '23', '29', '30', '18', '17')) + +select /*+SET_VAR(exec_mem_limit=8589934592, parallel_fragment_exec_instance_num=4,runtime_bloom_filter_size=4194304) */ + cntrycode, + count(*) as numcust, + sum(c_acctbal) as totacctbal +from + ( + select + substring(c_phone, 1, 2) as cntrycode, + c_acctbal + from + orders right anti join customer c on o_custkey = c.c_custkey join tmp on c.c_acctbal > tmp.av + where + substring(c_phone, 1, 2) in + ('13', '31', '23', '29', '30', '18', '17') + ) as custsale +group by + cntrycode +order by + cntrycode; +``` + + + diff --git a/docs/images/image-20220614114351241.png b/docs/images/image-20220614114351241.png deleted file mode 100644 index fe64d53ef3e303d92df18e389d2fc9551eec25ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 92508 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 z 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 L4~lfb{Qo8ZAe%x- literal 0 HcmV?d00001 diff --git a/docs/images/ssb_flat.png b/docs/images/ssb_flat.png new file mode 100644 index 0000000000000000000000000000000000000000..8a6dbc145c55354c7330ab98ed5a7845e955250e GIT binary patch literal 83556 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%0DJ^uGw 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 z z=lUM!$GP8ksr6Q?_RU@XJ~99IJh}7$w`a+(C)iJX#Ls=BM&zSj^P_y0ybTw>cE8y2 z*V&)%*xgx=JC?dyavbOpvg%^^RoC@VUZ8^iNSw{bwGTd;zCAm?RcB#u&f7QdqL>Sf zc}}V{hwI-;eyvq^-f#9T+?+3Ug5HHFdxO6p+Iudr?+c8} z{;2Q$ao+CaN%;!mZ3Y%C_a^K7Fp0UN4#-u0LAO^}g(=!ou=jwU;CO*k7^Iw@&-23_d zS(CP>%WS6e&!6&qVxR2_=KC7!=ltPZ^W)Zer;qiGxzGMxyKZBs?U-nKxc9TW(lcSj z9G(@n{xQWd;k|zZSJc>j(5iSBFZ9a)u|}NOz3X`wWBrvIa*wFIxlvTW@YX>-;bN$c z>a1$+%yr^9o7{RHFOyiIQdjzUf7c(~{FSe79ozY__(=YujFak+oDYShvFa31ZMb9iO%;x5*~YK;2{qlav^lAsy<+XVh))y!ywjB@85PF+`lShY}cUu7^ao%ikB)rorPePR%{dgVm zBStS}-=#}e^S7M0J-x@nPm1^Wq*YZ#8O$%Dv>*42R1_WezGx~hR1@^E_t?xwFMTfG zJj%8x`O{R-PeIb92@-OQKmBS~zxdD4wySOTsvq3WS89BET6J1qUSzgI^S0 z+9UlaVE@Pc{U-IT6Jt-OFFBpB`fkYuOHZ|4KQWm;r;V>eYob4xABvJ|HQW2))14pH zv6qxG-@em*QhN7k?@?7r>#Ge1&)a=r{E{mA`Rv#Go&Pi|v=7aiI`!klExB%ng{$v4 zn@`l}WY_3F7!XlZ&GoEK{?5x;?nk$Lcz$?pQEmC*$&sGApSGTkJD6)V|L&V9(+<`> zHevjlD%$vH^16P$SMncvwCq+TCg!MEho4bqR=>5+>0{Z{l?-vYjFvZ}i9RN9E$0@XP0q?C#nh=+tOQO~vJ~-J?aRCPW#WhaM|CqF)^cUCx7qlM z?ABG8I9E4sk@RM3O@aNf-Y{Hflz zE%l_XSw7CZkaA2yocT`aYSRbP>o?Co9D2#_?Ba-h^H&})cU<9W()2P-rrjug@;ncl z>agR7&dc1%isx6m`X{iNxa67!z9O$%>wI&);R z@N@g14Cb3F*6aT0U-;wrQQ=HE`3reZE|+w7c4w6bcs{+u5t8CA`HFiUr>yq5ExIN@ zm>-+XeDIzpt9<&bxRr^8wqKW?J$$D-ty?Z+Rf^8(XJ+nk8O$%MG!`L(WbL=x_FMk; zpYK1fY!~-%zufMs>yvA;K8kH!Qc-r;?Zch_45?RbJZsrzvOHenR{YuGI~SiVzv+bi zo7)e4z2rMN!c+C9bl-x@p5G3e$D5xySDrrKKa1h}EbU`;JU`ka_g(lJ&;MiAle@3v zB=$`^`Yz_rXO|fnOX|OM&5>VPG4*?&>3!*%ybs%!FF$p$BIw$`Z0Q&w)+-l}`CNKX z5F(>BZ?4Cy4Cc318tbR+@qU;sJ^O6-k$6d)V72aN{#uy=t}A9oJlfX5yGcn~@2AA4 z18v9Uu7H}EPvV(N>jkpwdB5EL&meeG_sG+w5zFU#ownVzQ_$nV_tf|I*VkNMcYzVh z{u!7UJB~|(kXo6L470{x=*7uL`g~dY+1$ALp>{iS z;L!yyHe`9PaZKhZKh1yh$Z4rg7KL}8zBA6FTH9XqB%P&P?hE7b8t?xMlL{ZL|IKp0{zdz$`&{-a%To5|7&5^x{Yi`3 zQ^}Ywrn-I7V^=YwmsYc#dX;axT&lcyCbYp9_)AHBa#xnNRVx#c~t>9*~; zt6qNAF&De8b)NNds>3|vril-lcUzuw(|(;6TB>zGpsG2d{zLbV{M0ka-rKkuQg!6N*}+=r@LKbl@C=U4bJ?PJ{{Ggc{6ozUWjBafM7!q423`qBU4^|4u7 zxA)s=RV=&Wo%b(q?qa5A_m0$apJ00A`SE1(p?S@X{af~(%iI2d9Li+CD)3JWnNs|ezA?W=H!R#$8V({_T}?$i?iF&?{W2uu~F2?5+Aec8}gDx zCZ2MP5p1aL_q+O4HemmyEoZ|F#g=D^-r_4e)%Ez3QiGk#2md1}KW=`EKD>F4VdnBf zV&98B<`tdL(^LO@&_JNB;?TPCsevFk4}5Ex9)MwRoeUJ!HlpxLy-kd z3uF1i{xe8@y_winaVA*lMEj43l)6ySyS-EY?v9E(FkQf$RVCn5-GYw}@_Ij<;@S2e z`*Hk`YD1>>vi;w7ZeYymnSFfnp+ug!m9m@P$A^XT+Iw9#nNfFs=`GhxvEofC96NvM zvBoc8g0->sSUZ+@Q+`A zAMM+HEl*`vNasQ4!m_86%o6;}`1hYrj`!7TT)6gj{JQyhdJzJtf_k6$<7Z1QI__}M z*{~0dk#=Q>k&CV^l zxb=v)V&`_n1iouuC0}G!!BZ!wH}|vu&_A`y`}lusJ|ZXlanJmlyYg07tA3kZtDtoA zT3(b|ozpJ4okt6z_8-m8@1AFR(N4x~+O?C(Yq*c^?t7TJeV%swEJ5LqJ8#>pvp80} z`pxg%($+tG_kQ6l6fTVvF`9qiT69J9;k<2KCA)JXPCh$ev-C(%vh?IWep^?Dnui~Q zAMKl4_*l|T(!68xp6O`kPI9pPEYu7TGG%U+ZLO78?VYl5Nzm^o zStWWZUDs4fUxYF!e`IRVhjj`;%g~?Pm#Q&c^<(-$9TST`f8D)yHU~86|9tiB?Cyl` z$`+8xT3dbsb*tftjVJ{bH=>p5jO$y(p^i}=mArgoE0Ul3TwMM51?!Lf}_3kBU6m>KvJ{SigMzT7KcEA|Qh3A^&g@sVmqjrpS)3;#3tgrxP| zd!@K#&60G+P*nlJ8<&ZJTr@949{(~Z`lMtt`$DGYu&^L>!qR&?31{%X3zd@cX+Qoi}+x( zl9AOR!N~Y%Rn9)a4_mJJFZWz>Yj&h$?BY+siK&(>J;@5+*JkgvI`r@MoAPZJ?>M;G z>=ZG2P%Wpy{EVMDro#Q7xb5LTni1iLFTPw;>YQSBbN1Z(yKaedMCTQ6+t>PGdG{B6 zsh7QLDyoVLvo@XNOzLT`anI&4U~i5VlS-Sr^x(HxvuoNB^*e=F;!iMWoe4P1^rn?1 zd(J~QHvdZvHui`2e=3mE|Ie@?Z2q5Hd#^2sj!xN8y`?j(k|C^s?HTg|^_5J^5dpd5 zen*}3aZO{^=Skn!89%CjtGXa_g6GnT+_$BxW24S_Jle5+XV8T+{~7e(FIEuok=yx4 z`*m1osm24Nc?-U*aei3OJL8?wzth_|%a*2r+GAC1kLMq2u+h4FWSTtZAI%5*d0u~X zE`GTBc5r^_iu4-86Nii14rm2#a`P8GpRwtOn18R7!4Io#hZu9sziqrcMR#HUzsUAa zA6h?O-dpQ3%Wb;coLNq{Tyz#YN*&%%ndt7geVNAPExp&s(?tEk77AH|e!QdS7(Wy4EHA?=?<5@A>j*5BDSgZabbI+YcT;A}9Y_ zWS;51PqWUyS;4kw`%DR*5Ke~RgLjWcv5~}ORNcQ9tKDyncjN{o%S+{loDx{&M}RGSWh}WN%8^zPq_Fuf7%W zFQd{{N^}Qp>3Yfj0p2nTKa%?6>PK(a*(bXF>?E2Vh4-A<#NB!ONiZ{yn1iLdtoHgH zKRQ3mKYDG})b?ZCwpNEjFD{$Mwr!tlrc1(~^_+z}-plmvxqiX(;ae{2+qqu0b}YL# zyY)%BWXYN2ty(V0@QbVTeft+(uaaF?Onz6-T>N{zir1U{PL4_qHrx-xd)Dj`|FG>T+x+P9THlm! z&4E*V6y5pq3XDQFDyUh@WxuLg&$@K&%Hmuhm(<+zTOID)TQ2JxfhbG%m_Ig~zdG{t z!~60X*ZOPzN$&oK0mCTE`RwOe|WRw z+S@T3Js?yqD z?EVwFlIK|%4);CUw@HevWxH?9uG$?t3LGb&ihUxtU{2byOJ92RUABlxxvnWIJ9Xxe z#T2Esg_-7t8_kKzDMMO%UqA{NrowAtYHjg-6VhE%eVC_zTB70 zklNm{RiEp|x%i+2Q ztYfEs^yBPD;cYbrNliy8$^&NoiwrBBCOtWiqa}K~^e1T@!(+y8?2hfdyydT#GTY)@ z*)!=sQXF3Yl)1|P!)=f4^T-%pvpb&4g|3}Z3P{v3@GAWDq$+^@yw&l;=ext|3_ptZ zZMp02G3Wk)3r>2EX5PDZ)zL1dI?_RXrOjvW58SbPKP*3R+F!8Z*dvZF-WGDv#VmQL z9$}v5KNrtEUhcbiX|01pLTH=ggRZrry>rACostmLy^`Rziix2*_oaiJ@WjG{t#jr`Xq;j=_qwFDqeM))+NwXw*Y*iT-rqNW!H=0X&X0PN^-Igu z9v2pzFqcVn2nnzVJRti1(~X;cD>mOguF#X{tYIN{^QCXM-{l7ryjiyt?s##kLGVWx z!)~Mz3HF|v+zVUhIv@U(xBubq;>r~j$pOv5eRqp@1#((nExfbRLiSg<=A-&s(FbS6 zx4$+0%N9|pZmbl0!)BlB7mbSC4LeR-ZD%R4ef?7FWG=f)^}!W;TX;+Msv52={LjF2 zEQ9&!d*+OJ${*h!S}&4qCvj!%8&iL&__GE@NB^B?dniBcDW{UZj{Gv$!dds*?6fL^ zkJ$6sSgBtOh>WobW8z5TSfgy+v$JN~!^y`iE!S@|IVBm<7<_#hv=|r|I2ah)GZ|PI7#J8C z7#O4&K!AAxBLg!?bsvva?0#{^vZuT>5VtLuXIpfU_r@H@-1UNjMo#O+7{M|f#T)__H|B+Zw zki#Uvz>u3)QWWIwq!1AqrNI7-frWvUL5M+-K|3+IxWF+Wzz1X|j0Uk0_}ewGKNv3S zg3LmQ6U7orNi9xhU|@`4U|>i}DNfF1U|>AJz`!ymxuB?ofq@Mqu3TPH0Ae>VFffP| zMMOq1FtAMlvC|>!6(DvJguMsEE(!^9W?*2uz`(%4lbBeP&cMKThk=1Xp)5JQgn@zY z4+8^(L0(E`9s>iv4g&*&U2;ZZ3IhXw4g&*&PHt{Kh&_XWfkC4zIlX{^f&Ty~V3Ux{ zOh;lTCMLnnPfSdQvmyQhhXIF6W^qAIVkMYEO(Hj^G#P518Uq6ZPezeP5Xk=w42(Cj z^SwcA9tH-+H+e~Z{tOHZLJSOyKQdFmI)oS)n7A@ZJwhSsnPifSoue2S7{nMDm<&=9 zUA!3>7-Se2nB4Mm{6KLJ5>HCYbn|3jU=UznV5-P0@eE;LV31&7VCqOMb`6H=T~L%C z1htE4TUwE`BUJoEViDM05e5dPd!^Z-AaRiSpE6QCq2@F5Rb_;PGcYi4F)%Qzlx2qb zF)%RjF)%Re6=w&7+#|-oz-&{M;S3T7t0^iC0=Zv>fq^+FHP77%;uq$!v?4c<-$ClT za*M(C3NbJ+FUZLB1nC8_HkX;fC3@ls)IpBOE#K6F!l$zrX5?5kiU@<8! z3x?`t2`ecI0f~z+FtDT*lmvjnP>g|rr7A1YD*)mimI(|#49*NL38A=(77*ZMX;I@S^JYgte$b|DDCMYl@ zGAJ-4GvqVmFyw>fv5Uh*5h@)SoEdzedP`w8D)2-7roiUP=ECN|=EkPUBE@3IV$I^i zV#ngZV#i{{V!>hw^9Mpb>oeAitdCf)vOZwF8K2oy1T_a{uP?&`hEfJd7^X5LA%_Kv z8jBH&DT@<}EsGtI%Q2X7$v6~LJEePzMY=#_$Obq*AF%C)} z#RjVlUK;#?m{O8jQ3A?&&iMtEMVaXtB?^uO1v#k-o_Wc7ItoSxMn((_pt=U6hJoR8 zAh-@;6gz_uYrfCGV7veS|NpxYVqW_h7&e+SFmUZeh-p|bFbHxpFr3(#Tv}8HF%MiF zvNCWn@H2=oNHWMVC^Kj<=rR~Fm@!y0I54;}cro}hgfK)h#4#i@WH9716fu-D)G#zM zv@vuuOkkMGFpFV6!(xUN3~L!SF>Ghp!*Gz{7{h6X3k+8oZZkY!c*^ja;RC}rhTn{g zjO>iOjKYkPjPi`CjM|Jwj24V`jINA6j6sZ%j0ueCjCqWuj5UnSjNOcr7-umqWL(L( zk#Q&ELB^Ae7a4CdK4g5!_=)is6EhPJlL(V6lNysglLeC_lQ&ZcQ!G)L#Y0O2;b{kPY}IT% zY;)PxvmIc&$o81+D?2;8B)c}dExSK^B6|sY8~aT5HSGJ@FR?#m|G~k{Afg zk;l=*F^yvt$3Bir9M3s^a|&>(a$0fvbEa@sa`tmB;oQY}p7SZ^Z!SSDbuL@35Uwn) zMy?rL>$r|`-QoJo&CRXEZOI+Toypz6J%f7#_X+NY+&_7Qc(iz&d181iK5#ZR5Md_l}>FUzOjHKaRhO ze;WU0{`35A1ULoM1e^sD1?mK53+xoQF7Q=QSkO?=Uocm&M{t$kNx>IF>_Tcnu0kn7 zEkcWh4huaNW)@Z!b{0++ZWdl5d{p?U2%Ctyh^I)FNVmvZk#iy+M1@36M8iZYL}!cc z6@4JaET$&rDV8JFFSbeSn%FOKS#d}4RPj#nb>f%Aze`9qbe zsX>mx5`)`@LWW+3O@_M+KN)EmB^%8)x?;?0>}FhVyuo2&bD4< z{lZ4wCe>z%&0||7+eF)iwh!zS>=Nu2*gddUv`@5OWdF!P*&)SYnZt8OO~)+9HIDC` z44jIbwmN-xwsNj@KH$Ra;_lMra?VxAHPm&M>peFmw{*AFZXeuD-K*UXc(8hSdrb7W z?kVe;?77nOgO|Bit=AE69`9i9S>BI)w0w$ucKI^-dihTFz2m3qm*=vfZc&?fdPTD1D^#M2Gs-|4;BuN4_+1gEyO9LKje0(Mrdj1p)mfin6Q;$-@{$P zCxt(V(2uB%I2|b!nHjkwiajbUYFX6RXxHee(NAMcW7=Y_#j3|v#GZ_kipz=H8_yq~ z7{57zH6c73;E=O)c?#?`+yzIOq`EvOc`4lo{j>JHT_*SFL^ZE$Z`(a6=9-FUXiplMRm zm*(*1T`jUL4K0sb-CI|;@wFATU2nH;pWngKk=b#s)3|eH=fAF$u2bCx-P5}N^d$G3 z>NV`0(fhwIt?yjFS^vBVY!mV(T$^Y=am6ITNmY{`PxhU>ZHmH_t|?!p#!o#t&1BmA z>0HxGr$3nCGh@e0m6;P}{+X3A>*{Q$+3V-X%;}u-eQwI!OYw%ELGi|Up+TZOlFZDZV4 zx$VRDjO`D0MDDn_(`)CUUDms{?$+DAe2?Ou*?UFz_V44`*Rt>b{;K_74-_1Db1?nj z<3sU>ZXb>~eC0^sk#k4AkDfT@cI@zR$K(4?*q+#P((2^SQx>PTpEf(a?TqP}t!GWo zZarsqZrgeD^E)nBUf6Zf=Hk9f_LmM`cDa1)iszNnSN*PDycT-x#`T!%4{oH~cyTl5 z=EqxQw|?JlxWjs<>#o4vY4>FAExNCHfBgfq2YVm7JUsI#_|fgh$&X(@DSq4Sn)vk5RTEb#lAl$!+Nq2n@e z|CE6NJaPc?Bh0TbngQer6OcA0V`BvU{{Vv^2U8X64rWFr1|~s9Wd!pzDF8gO8&Wn^MzU=d^$QZ#gA6Anyd zS1J@SYMi)`L)mHLLD8U#A5@H!ikdjN#Ka{erBv0_H8izMOwG(KEUlbfT;1F~JiUTL zLc_u%BBPR1Qq$5iGP89XZ3R<7E# zdCS&q+js2Tb?ESsqsNY)IC<*Q0Qri60nJ~63`~qnEG*0{>>z(JGL?fA2(qv$8nOvF2C^p>3M&~ka)>xh zT)6Qdr?PR-2hpUWi(FzVCJ$9Vg1iRy8F3zKBFkrRk0JbZo57iZ2@IH-n3!3anVDJH zSXo(F**MrhfP;$z47i|x2MqW?fFBP2-)3-TWMXD!VPRosVPO~G=HwP28T`M?z`_vo z{}uxeGb00&AhRHYJ;UEWi@G!zMloH&fO+Oe{aF2f`yc$Nx&0oV@ub=RZTa|9^%HtPIuqhxXsne^`I?_U~Tl!{wW9y*7KW`Q`VIwXJGgbdzqS9^`Em0j_rv?SD(>zveR!Vl{%X%M1<&OT2BmHHL|OT6 za&0!eWA|M5j}GHE-|I(SyxpgJ^N;4gL;EMbdn5Jxw`cNy1}6t@-k$#q_pA%QDwMAe zUEi;36Z!bB__qZg`VZapj-MQOIs6c(?Tb$rgDGjQ+~4|spSJzswcbuwo^HDMrF44>=c3-3L2jSDW}bc^v|v*4#7|R27=Jm(g?@B@ zEPwbvL-Q>2Z`b=wRks;2KZ!ctskcs|tV^eLu}X(-N9~Hf>n2?> z=~;=R)LEkiLLLGI3umh^Uba|o@nhx#efF$rR@?hZWtHx|kGuS(dUtj9&hYBP^3#?7 zy)g@o)~QQiF7A2U#c=gU@JC~}AG;sa+8^I1zkSD+jaQ^nJ>E6xtV)==DEFY`^+`*5 z%)P$M`f2`6@jt`lybtI9mhS)0aOvdg*IEoeXCIxvwfvAj_mBS!UO#eKuiUz~d1ah) z(tn1VuO=PN*15!S#aG#CowNCwl{=@iE66Z^Ia^o$@8UkD5BZ1xWZ<}PAobq_U7w(VjQ1! zPbn?=XlJOR8areCnRcDkhxPZ_w(aBoacBRBmGznL+viIv{yjJSQ9+4pXglZ5eG&JZ zzoh0bF=715e)N8~o#YSw2S05xAI*3^?~1?Zo`PGeOfH?)v-2JY_3ur*wg2k9_M8(P z7x~JdQe40*yntunjD)^9&#!QOJ@xT^^M0us&X1d&X2*YsS-0u-rln8Uyine`y-Z$X z0+S;P^VTU-EtD-;_>&g!^Zz*h@%Ewr46ODWE+4VVTe|8_MO&uAmS&$e%ctr6X>Qji z*-VOcYCWmGwenf}@034kS4?-;^Z%H1JN!fH)yug(ueT*#GOE2B=NkC#2J=qQQ*~G6 zKZWmOtiN%r{!8i7YX7&256&_lyU+S3I&iD_HTZ_?8ZIpeU%G6 zBZSOz`xL}&^0cCrE%$$vcK*9;AIA^FeY*9B&e&0{?|spZ9mk+4;BCaqas!`=xo+h0Ph$-)!^Tmu_@oV-x#=yOV0QpVaru zi~rNO`%0cI?T3Dy$;*9;(RVyH_z6Bzd!(H#?7c(&D^pmW#fhiU3$Oi{oBgr^0A{)22rRy``EiG4VY+_=cY$fc;jK-2&5GwbP-WRJQ)k z5%hm@W_N1;nSk4})ke=*%1l?rbJo=T*!Vb}FVmjuOLe}Wc}vNC39bJOS+5_l&Rn1^ zq9c-$>-+S^AJPy1)3|7I`{mdA4*3rowsb!hnU#ClU7%tLn-H^!&!K?h znd~+R7uYKw_sdjdKfKY{{%*39&63(T zGj-jIsPAnie~TPt+m^423*-|3ITcKir_u=>ngpuhE9_`g}n{AK2o0@F1=FY}S1-GQylQ!3lKN=s1V9jkjryb7wC4_crX710Yj;TVp|I1@ zXx`_|J9I?F8%*lwJ~@LT=i_9NW>o%1C9g>PnBP3smut>Sb)WV_gP z$({$>4xBTacii;q>#A#0AKq1aA9wBD;!T&|C}%F87ra%umo2jMSNM!SVn5D5T;F?7 zq+aMpmE@XbTV~vji@d|2x_z#Ls-K0H$ED|UE058f7EYzwB2#}%X`vu z92$66<-F}abfA9IiM3xv{lEF|-*x3bLwY?+Y@D%8XWECRJ9DRf_7vh@;KEQHz%pNS zf5v;R8r6?+vmea$cDYu1Hac{xdBNc&w~iOxi%1WinwgyBc1)e&0naQu@qd^8Gw{`E z{^+V_&%Aj5#XQCBVa3a{uKj07+mRYLO-ppHC-bD;+mq)c2-%hV`2JY_hr@q{9C?O{ zB`?K)z1VUg&;6#!iMosB>NCG>Ipsd}MC|R^^F)Lr=kxAy)PJk|JLqOj(4{Z;f4G~x zZ~x|>Z6h9}^vYbwYxAP^R=?1YQ;z2xxZH|vFv!Q$ME>~x;rD|Jo40?AJ#yV@-Xiy# zTV6{X`97JctWEH#L(pM{%{=qiJWP+**!^9(NBHr2@u(j{zg@4@=&s9Bymg5;?)(XH zMv!T$`yV}{9%an2v&&fPw4zxDXhe#z|9-)8UU+G15UZ_|UH9NtHwOl|oT zEtG%1{rfn+I6gA-vqb)TUF99K{dG-vPOSTAcWKEnk5e0i!j;)s`lc{`Uf*ko!@ z{$TgCSvNc`oE2I9^gPSzrsSzc1qF^0Dgs5E>u1#`?5=pXPdMwJ&dwvdmhE4A_k6kK z)4NT}nB{h`Y-W6QKKf$tZ|NdJn?5DWFV@btA-YqusQYJRYG>J=|yL@^7 z#aGS@hxgW5{)zk0wte* z@f!pG9{t6|FsVyp0n;GBeCbE_mhAuapP~8Jb>EotomDUEzy4=n|GI8ggZ=-DgQ#0@ zF1lW@;{HSaw~8O_k34^PzT=N);v?m>X_GUj8F_P82Ch^;dwa8_#e+Elj_WV3(qMkD zJD;;A>hGdDt%~Gh^960p{&9WqZ+iYacG>)5z1OFAZ`FErZUK)*YRo$ZR@U&sBxf7< z{Kw}T;w`oVt&>1gL~6PFx)e&<$nTb=ACvWwr-#b;|?|WB< z8vO^o`p4^~?K5hPAIEpt7*;>z=c({I6dh~E>u0a^>0Ra3t8*9GtZLM>d|DUEFezHr z|A0R4k8bxL4?i9bz4~SMYHi){z{~f}RX(hEv@_(l-?P>mtOe$JUXy!zzOG;YVgdhz z()oN9UGcYr9Y4B6rCxq<;Ya9$>Wj>?Q)i!_^D`|chrf+IulU5HJ=TxU?Oa|Ha_Q@Q zp6vO|e;oGN^)A_VxseE zTS>fxU!Li1UAueQ+tWWwpABJbtSc9N5v{J0uD0j<Ob#pZQ1oQK9Up z+CyuPO-#BT;B-mbO)M;U!rhO3Q@_}XFn%b1Q~v0_@Q?h1zxWT{7ph=BQssMg{rMawbcYNa5+i_wlYZ=092=+e=hzKDJA~AAY~SZYOiqM(?%t;cvc4cW%c_X!M^UF!_`0 z4fZQiU$itB*3Yfa%5VGp$Nz`+x)-}jcgMWirnRfJNom@|b-G2j1Ngi>B})RVx7Lcf zGSpc9R{RlteAc{`kKXtEXAs@;danJEI)&<7JB@b_sw-W$&hd~up6gkQd<;>YKQ zr`NarWBgILvcm0rY;b<{s_dIv1f#YKX&nnMKWDVI_jsm)o}c^u5|HUq{~6Nn=G}h~ z-(q9a+-=73#Sb_L%h#quNPrE7xzF5RP^`Jw*se7>*yx%aIu&i}i$ zcJ=KoVr3f-914rL+hA1lYK@U-2Lr3>CVSTx3;5YT&hP%?|KWV_kLm~OSu31gAF=XV zZc|ly^-A=qm)9=*G+Z-D#7(|%=BB6N9F@>Xcb&rYsZeidF- zG9g0mXUbe>Pqj;&EE-H$E>#%(fkSb}48{YhuwV zyWlHRdmFy5-?(A{fB%1mH2wB@7C(v~+!wF7d~8-h_mMi?eLJqs_UUYUaZK`Yx55U# zH)oGqI|fvq5V46~`s4Mt`G04bM%$(zHu~Xzp7zzT%CTHx9ajStGSah&9_evJEm)?JkiDI{PS(>?}f|R z8H+s9ZlAyPpMh(Sp!nhbc01V*RvxOka_1~kCKhjfcI;(j@j1!Uf^V`fyjZ~BSCjp4 zzTn+|H}~`J3Cvy^>$~{oi}FJMstMN7uF9%6I6gIQjCdczAv^UC{BLa^ zobUd}d2!wPFYkr*zq#$(7GSfGS=4pM>;&r&rrsSNf6uG>{Ozj<;|Kjd8{LoY57Lj< z20sozyr1vR_Nhfs(Zd)TbclV8b7bisbJarHJ>MO$d^YDkm5g-3EyjfZP zsJ?C1@`lp=A{pXVJ==HbzU$A+n|dulG}2ZB&gwt1pR3|| z?2ntg*P2(w}m{~3@$5IYXJt%pfdX(k5xI_oH{cAC({3H`>@1^0%fs=B_$kxTYd6 z`*+EtU&nM`Kb7uSVql=2GcVfinvA)!=p%s|=^t~mAI-E={h@!bup;fa=hZKN-HspT zuVyfAY0J=`r>}YI*3GAp!CVr|o985?FkesnvHh`r+xK{ZKeivG-ti0E`Qhx|9kX#y z+nva*cZAk-B~4RJ3r(HL)E2kkNuQzH#K-%5F5($5Nzi(fM+(_w%i-DSnvvaIO7;NwwQPJ$HI7|K|T^s1N>=@$c5f`scsy|NFQ6$Hl+hi~cj5@7@3Rm;Z;w zzr|huGt8H+|NUkDLkIRzn?^%#G)0W&r_nNEw1ge4HAd^)(RRdW+i0|9Ioett?Q4wo zpGJG1qdn@;Q38s`Sfok|RzMyN8#^o?RX&Fn@mkZQXx{NuA5z|A5|1(USnjidYar=LUC(+Iqw7&>{3;fS8 zseHwMh8tn|e+60VYOlXgf3x^MgUb8B{|p<}-2bJ-_4SAQKR4}*^YkU_Pi%^RFpD1On#df`P#fw?lYCWIh&!Xwqm{IxJ zx7<*PepIdnTRw^F*e(=K}jJJH8*i5BlX_ZkO8M{B?$@cC@>uwW3yH zf_ai_!J0Y6pBaxP{|JAqf9Sr<>!6D2LvgB`uY8r5I{#$nxmbaRvy2>sSZ%$;nDzzz zIB-2|p5c#|`fZzL{}D{P{!FL;OH+D4y!_E`IS=NQ{SME6^gCAW-sf+X{~20hl|2{l z@6`D-!T9gITg9_`cl_gRH z{?}w_@`X|=FBeb!7y5Z>y-E6ihEGOoU)6^c z{Ac*nol(VF*Hm}P{*&KV`QKb;|1&I7Sbu)k@Aco3_Fm2X!(6vbs{Gbtt2s;d&)N9k zr@_azf2FTK^#ADzUu+X+^q*m3%Kjt$YctlR{|-J<|Apm0!^s){84mTo^%wlla6$M# zgIe-`2Cjb%_H+DZbv>)!YUBQ&!NLE}%>F+b|E_$L|I29qDb4=F0=`kn(LfkY38UG8 zE@gto0zU7fnK~0*UOcEiRXOgE=m+U+fg2V!GIE7}|4x2%|I1$gDavX((xPw&`Ty7d z{#md8qwz!Y0eO)pPU+->lEob}rc>64q;vG!fOl}sYuS5daXU5j3 zeqjC2(DVazM3?0YYy_Z;LsdiBVs)$czuuRSu!VNP5yZNsDJxEu3aC^8-fnqI_~GObocIEcXgheE|k$05lBw+`+Mfy4d#ZOPZ(-- zT?^#}Y;u>?SbeBl`siPMz`

*)XzLf-nOw=cV{`Tn)ku+}I$md1oi<|S+3R>xCaG8X*nEi^#YgfCF*VLt z*Od0^AHO6WxpwWFeP?dv-r4r-k!Y8{Vb95_8b?3WcT_R(ugzH0#h@{S@Sop*SMPta zDD(a|uJ->7?&sqTuV0>z-pK!#asEHUlho)d|5iNw&+t?1!WXW;EPtoeKbiZ={+sCR z{|qjU@$*Z6asJl$&v4TEO8pyc^M4&pd+P-MGfeFIlHPqR{*%u19}~Yk6$y;L!2Y=- z&{c$CkYmO(Kc=sn{+}WKLw(fC)ksG<1hD_V1X>PjpLtgQ_&>cL)hlZ3KbW_sUst)7 z+_Lpj?5*gdc^6{b^{z*ECYR}~C$@VY{b=*DAWiwdH9R3gC$DGbd^p@c=gmIWn)DCv*4IDoSeN>dZ|UM62VRS93)fH2 zE46mt7NI^jrGvFAGvqDD(*TaoTZGTQ@D*YF`1kms{n9ld^__AmAM0lA6WjSQu2Zaa zY2;a(a-qXAN}e^Z+ZuN9ezs5y?d0OCJnFrqqW;nO{?hyHVf!pUZ1`|({sT|D+m%J% zr+v52+tYUE_95L#Vre0&XL?e&8$W%O`CIPFAR3pUyra##vhBswpfy%01_xzAyEK?* z{%2@0KRo~Q%l`}$RsJ(PT7kx2y=+l~<@_JcHJ1Mw?B@Rz^8csRkHXuPHEPIcm^>Oy zC!=|1v?v(h;?dr^KJ%{GY449;Tle5uvmwBOM_RsN@X zRsY}CwEqkj1;W=Kvj1cl*YmOB^gq{0{~3gAZ~qgx&sTqb`9GJ*{~5X#qwvH?4O zrK5;qs9|_k|B&~?^FP1ppLp8;SY?mQdAVW%->7z+!8;msqseA8%OJ{*0WU5<168QU zMojOz6sdT5ag)E6+uj!K2WHn4HxyJ@*gTs1ck-kDUwr==o@^;${C|0LdB})c9s*vQ zb?%C(uD!>$?7LyFw5?MVOg38`YuI?;v>`*v94>~7i&n(H5|avDGOKN6vFO|_%KAFz zHXd7ib!G?iN7Jy|@fX&cY+ifwmD%N&2gH8+6e~NnzN$Ik^`QJ&gIUI!z4{TCN>4l1 zFS>VdMbt(G?|h}xlFBQ1TKcao*!YpJan;?J%wKWKvnxw8k6d&%@>FqOer}a#{E+~* zyMufr6Mdvrettdr7zlAqAGG1!&+iB}ckJdY>eBwj@UM_dV^IU`@cJ|Lx5WQ>v+e!Q zkhlMrw`k3~;#vP0(gS+);<9%~eS2{~U-{)Ho5jDq1+`@EZ1cT${nga%pY8oL)*t<) z{m}k;{jb9R43p~**gO1Z2-yGfKf^!o{|qdD7cANn|E>Bz!zB9!^|!D8o9Z2RF@9yD z_U|l#wb{igZ*RSN{$$4)`>U_dwZ1>Cw*KC^>s%U(cAZloV?Y*kYAMQEI3jkFGt~dT z`uETJ3HCYjSzbgPKV+MHOls0u+kc(1n{KY0<;bG1`$X$ghckE1%9baqpy(cpHW-j;6mkEA5F(qvBxu!7HNH>E6g_jzv=F7gQW4*RT zx$vXZxl8ZeF3G=r|LwurTxq8so8#d>JwnqSHp+gS6aIWz_rvbk;D8G^GV5>3^Vg~V zxU2WpWSYO0fbz*5zz-E=={|t+N`b$k?(Vt=&sxqh8?ftj9%cZ%JU-AWh>^~B9ugS>skm-UD43)f_A_)*D~DOOxzcRk49=885A z{m5n8KPS5!I`+(d##Ck%rlRa6SN`xmlyA4%e_(C=fvVDdb8BtCRFz!1t#n-V?$WE> zTaJ|l@a#8gKmDZ5QfAio{|wxJBtIN$PJU#a8}{t;k?D1MJSRn@Wy~59*fX#Avi!k%hCS8~dGkH4Ex&HsTl1qxQuj-Tsr8g;vUZjMZuf$Y%cN{O zKf!pKVujom#`mUi<&!K@DuT~W44LZl_Kw4YlrQJkMt}yDQ0M;bk>>oh!Glht^2lo= zM#BfOCS){yjOHK9`J?3nzVgA|+CKAk_w9c92;0BwZ>mV8IH-M8bDwK&8UHliGMuPs zqTlOrukHG<6k{=1d`tb4q`i`lK2HDBt@=-;di%HK9se0#aQ|U& zTvF$m{|tyVwt;_FKC=JCRR82m{li#O5ynx;(Lfj^DIxs1{PE7bv>$8Nd6%=_e44*G zufL#n$F^>Hg9lHF<5z_K?EmfbpW$S}_5E+J|7Y+_T7PcG`M<~PAH`3$_j}O)Qz8V^ z#Jc$COQ36=K;56Z-WvA(*B1N;UU)Qf>EC6lzx{67eDS@xbGp5zq=ZfQ2BdZ8;q(5T zum9x!h5vWee}+pdvu|ntny>kvp>W|p(Vy}sfA0U&V<`Wqel~%^aBuKo0xB9tdYyq2!d zSpTYK`QKyhKf<5Xt3UhC@X6pvedoU%jYVBw{dve;rt+-D`?~jkhV?(}*Opv8S+Q1i zlB|`5%BLmSH=On{=O#(Bvo|-N)4YGvPUAnrg7^Qt-62aFN7LS5+N(Ak(jM{>ofXWW z6^HBR{j>WM^|Aa=J@3hN73qiVZwuU3DY_dMQPcOU#acX^$@QoPzLO$kpGjZ^JelNg^|U|(Jn z{-b@x4`IKHZ*6RsFI&0($MnE%pUZ2XO*qOwTOmC&t(51G#YM^487d#xqduWVlS_3w)5NUy;k0u30LZls}x0hD@C0Ub4$G=8N##alf`=ZkG{)$ zYXU#I@!#V2_|UheB%bg7O9A&x-PK1|+>Jac`snT**Nh)i-efPiu_X0?N-|r6?QPE= z*Vk6m{wZAiC*tzkHCy9ZGC#gL^DC!cb?@6LE1sAr1*}^q%O#rsNSR&K|L}hCeQHq^ z%?B^kcz*adciBrjyL;30lZ$mW-;AlWs|mQK&-`aNWK#b^v;IFr{eOmE zSL#uCjF(5vKn|VJ@EA=WgCf5qzpmQ4uX%C&>+-Hoj?1G@7b_iOESj*ejEj@mLMEku zZQy@~mW=-l7lQsX`~zkEudDlhG(Y^$pnkwkb^33wZ~po|dve#Cg>K}YBiQHoJ|ao& zp;vISgvoK&C7T0c#!8;>5jFFGnHBcY|aUK3mRISe9rJ!`^Bz5 zeLrf&=RSVV>%4dIXH#p_JMBC>XRO0fOzD^Wx7Nvj=Rdy9 zQFqbw+*>2HyTF@Dx4lk+CsNnjSSY4dEJ$P!_VYQZQe?4{;v~OhYXl3V))D{@6{6}_UDEyiITkii1s?Bl#8Mep&RqfjEvLB^r z`}5?-$J}rBUALZYoaXthcJ}kB+bz#-ai9FFR{Qfh;fB`l{|qj+WmAv-@c&!D`Y z{ohCakNRi+OkUKb{nO;%UTgn$`A>m1y8jsxqvij~P5pHqWuf_p9|1( zunS|5a1LfEXZ6_ryTpHn&N`pJ)=l8 zLjK#={|rlmu5ZC!K8XanRxNK633O#32cwKfBab3pVFc}|qGgz&nazB9pLUJge}>lN zhp%hve_Q|dek<;o`}F5MKl8==-rknCxY?7uKk5VjkL<($8Jy<-^Z(EA-L?$0FK+T) z>wkwf{AYO4`TFy_{qm1=Udy%~+ZCdoaWgaJKZD8nTRXB94i{HpLl=pKf@m9Ki;41RbDLW`sZuE-tY3mH`~Tb|`ajyAZ50WOTltXOz2m6+x%EYtY;s=i&N45gx0)mTK<*mnga;oADvw(K zRzE8LMfN|#$&44w@Kwh9?EkLPyLLI?1NWcKO34aTws6kRrKeL8?ANXYhCZKuvdwdw$-Jm(x0-csNFItED$UW_^aM`iiH#`6CR-yi>HSnrO)i@)^z(@yZP zJ#ICyzQ0%f3-S8@40ZOuzSJK=;y{ME@#;sdC|`X?aYIb`5qW{idyF4-;%{!>_;Xh3 zqjwbrt7pWd%=y4x_4H^xQ(gZj>ksws1wiw+=TB#8EZRTW|Mlf9KMMads0tst|4nq` ze};=Mbb`}!;MC*x&{ zcFzCd>HnAM{eOn{$Nw|L^`r0_2%7SOdDIAa05d<5M{l6iO8@q|U!PI&?NI*av$@-S zI?K+?mUxue=Wz1zte>a$&ochc@KZAEtNkjA`hTulY?&}N20Xu8d;Pb;tN#o)|1s@v ziHy1P?#k2L3&;1mCAK8Y>8n_ewl=Od+qKyK!=(AYSnvO5xZnS8uRJmbbk?alc#r^> z3g{34O5(bRme?+UkE}#C7sZlMBM_lK8Ww{uEUsd-x-aUZlzRIu?QCNHZho|FXHn85 z-v10~KUHJb8RiN+soU@M=XKA2hC9jsRDT+OdB^deVPdQQhy7>e99>1iAF{tc{_^;n z@BbN8>K*V5jeF;|+U3u?bWao)Yd(1X;n(#I$TiPb z?2UKm&^=NOg`(-zJW1MDc;FcZ94`1mM1?uh^@{{Lp!TAW*W)qNLk~}9K5C~@qj&93 z_@nv!KRzFlQ`_~W-v{o2|!ezQ}b+|=#eyNB=L(|R3G&CC?7-LnfAY8E8zJx2Ruj(+xo4;v_7 zUVkG@{;!}d_?+*zv7oUGKhQbf_P>;>{`@Ag@wpsy>VU?q{=ZGj{xe+s5Z*tb{=~8V zm2V6A|8#5rl3xHiAKZKXsfVsem!-zUAL;+8UZ?q=VMFNme;rkCF@{oNcC3HkfAODt z9sl1)@{i(Y{#17r3ICM&x2kMD`Y@)-KbiWIE+4l4ZOy6wQWgF>weIFY`*&Y!!=Kd2 zACEu2^u>P$gGF81UztA{AP-ipSG=;%@{i6XQ|YzZ0oVSlUac9&Ir+_X-EAH>R`aY$ zkr8lnRKB#gYQM@q<^K#PT|WB%ZOz~RrTY4@k7Bv;`b#-4dhWE&uDjCr#tpb_AQ`M+5s{xiI2S$AoF-a>P$z}a_~oIm*bVDM_I?37!-X9T*6ZajlL zOf)(agt5?j=nMtX_dWvVXZE*t|MR>z_di2oMEw_+ui(QKx0e4w9ie4-bpNNsewTXp zg7QDz$^XoYxaKz_k$Rn(I(KLjC%Fj zC+@h6vmeR-?K0(9}g!~EY|H~urc z__F@msXvo3dxgK#S^hKZzWOzO;*WaSdb#O~{~YSlSbv58#Gx(?#1WbpIsbKPo#!8S zkOhzC|K_@1|Kj`l(>reey*K^G{3mrg59~j_`o(_Z?nPbNADzE5f8G3W|DVbGx$AFe z9skeZq6(V4!N|I6HtavJ{KbCdpX`$VKH7h@Kclgz>y?EQk}HPW0hx8l|1RwR6k+=Q zcjOVIu>e9YygHi<`R|f>xC_AK)u8~;44`2Pi=lCQ0BeUZf)TXB9FT0by>wSkF@4DH` zZcT~IQwi036X&#I;<3fWyJa-i%>K{N6@E|nNA;>7-yiw6r+@gIIjJ(~q@LowX%BX~ zwx7)KyOc8V5Nqxd0neWW8O%2|*3Zzl&(x^VxV3cok@sBjKcWLRU%no^b^GVUJ?0y> zoXk`1e3-i^-^?Xg^5t&J{gY((E8ljs|8t%C zm;Zv7#-ja8&p$0dj!cZw1C$f#J&hXvWd4!*pBnQ(EuOXC|Mge>%~^lazT-c`r$C!v z&?N2qzj9xHmP^;~zVx3#_)q_J3-KRcYsH@xmIS)iY1BQa+g5{KcZx8=x$i99{^sn?``A^zQKmWP;=i<@&PiAXB{h1KxD*E;L zQS_52NahcVqKml09j=2C~fW|INOo zB5sT-A0A#*Gn}F#_`*YSz2=_DN2;D5te42TWqWP;qkgW6@}p+vzihtu>YlxNZf2^9 zQOwVLh0m&OX7>X7>OyViB<**P6>`;hV6>e@a6*qXj zy8n}5UB|z^2k(E19slE_{o?-3u6y4eAHV)GvGkiK+e}UU4W1L9J0Fw&dHq}{Mr;1# zC;p!j7r)xBQ~b{`F}2?L?fWQ?*B8b|4;TZa6Mc+^WW)@ z@_*U>Gkl7&|G4{|v{#=TTBmdY$znzPamsh87RC%<{I zyP@@y5x?Zu_2C$e0GwTj>woM#RX%=inUI!Pvw)9)AtWoLh|GGLSZ{UcAsD2 zuX{=9<)}aWHh2BW2lBi&R{N()XHH8Ee)HnCW2=FYzs1*e$5Fh#0(0mBqyO`)9w`-N zASaJ?v$|ec_)$9?Frs4t|GD$G%I{pW*)2w#DB(jxE>Fe6nVyosZ4a{Znf+30+hm_xA7f zNA|yXL5I!NKX(5X4?3p-)cCvjpP{$pO86JXKac29F`0gDe`}q(>h=$|gX_P_Z#`CO z(crI|eDG7+bL~H?Uq_*jA=bRB{m-EE>R$Vm5AXlvVf>%o)iwK7@Oi$r@}s*k-tY@xAC4?Uqi>;>O0Kbqh&d;A#3n?r_xnhkot4%T|8NnElo|`IF$cN6%vZ9C`BO zbKF7Xq!(9>u^1HVo^iZo-dBGfyz&gAvat5Wx>;Q`3=PmyM&y;XS26cUBab@Jm_0g1 zy8v{0E7O3E(eiiM=ly5+sZ!CF<9~{;53AwJ{rBOoK=_OAe}q5(OF#d+^*_Vgt91p}Q3Xm1_5XBh{n>BKv;FTY zdHa*I!@fM&Nnz`=8=rU+k8**FQ;j{^S1qu1H|~ndM(4zqP;V{Lf&V{&z?H z+p6DA`}F@#w11ZKpJ6-y-}Uhs;a~E3>QAhje*Sa%XLr&63@2`FKmEzkRV4iSd=ca^ zMYK7APk#HO?NsVdT7UHa+q8cF7w79w=GN&S+Yg@YGyd+!@{cwCqy7o)TlVSef9go_ zgBJJdY<=|gt^DTef2Q%WgSHk;i~8ZS`tPsyAJd=JHG+nT_Y3|L|0%y*B+#`!aQ?|e z;26;rvf^=QsZ?$?wU}n{lr4yy&;Hbp`(!4m$j2c;@_{VaM`+x2|6)_^VY~%vG>b zROS8R@Mz;RXVNtipK9#3wKu7G{GWk0|F={9h3o$rCYjm)>39EQy8kWbe+K9He;zmf zGkmhGx$j!{{O|Op{|xgDfA4=F&;E7S{m&o&zWJN{w|}4RAIBd{|1)r=|52Z{{@eU- z={M}o|L#z{`Mh><{jV99EpO~C?kVicK4FhCySVi~1IwTP3^PCfdszRwG-5yUF;V|q zKL$;;3Ywzn>Z++LwCP9WU%`i4o?5*NDz91ppTP^f&FjyRde8ajJ5)c`qs>Xy2S2rc zXJUV7zw%Fe^ZyJJ+m!$Ke@=82313w~biIOB=b&5xnZxJ6>czyUQJa-NgPTv)|<}zCn-feGau_cc1>MKP|Pve ziJW)0$otH>KH)|Erspjt@hw)%58cRPF_&6;IM!@=HbYzLJnLyYw$v`2Z|8oh`Pt7Y z^1J6T*a$z4>$N}VFLdKa^uxB5wTmM8G?>ui$yx8yv?-f=6v%yX7@yVHTb zov+VU`*lC;=5MK&-(&tTpWU-mto_kh=>YSx;#l8O`CDt`)V(L9m1`?&PfginC>tAD&S)qdak&uDVwHMPr^{V%`Ec{AylwV>>ga;MVnGt+C<>KIP5o|4Pz!0@Cz zj`v68BU}4p_djf?Q~WWv#(!;e#9Xt}CpSe)S69d$KJ_nRQqZLnq2*=|7=Ah&WvK2A zpH=bp;iN~&+bpJRmfOK)UKOd`tbbE-~S9xEbV{HvPa=T?l}3=@0hgKs^O|0x#! z#qQpJhL+QZ=YRhGpJBq2{|t{Z(D?AV2Q+ak>Ohz0`RuX$&tPBwlh6O3TK^AZ9(aa= zbVGK$?}*d7kY~gED7qqVyQkjFidAM7Co^IgPhDSqUHqf+KhOJJ^>0LL|1&I-+gTWY zVE*DieShSCAF)5O-}sYXm&W=hmw$bE{ZH7 z370L|XZu;c>eb$GY_dD4WzphQHQ-d;dR!O25Z{h7C{m z|C@9-{K?h2uZQ-3(vMs7L+1A1hrbloUs!*`I^yz{`9J*p7Mf3e_Magw_h;nh?QbK0 zFZk8<=j-~5?|-O2|8su+ckcfTw^zM-6#r8!^k-d~Wd83fcJ-6>>Mrk^I&J0S*WBHb zHaD*Obb20)bGa;2bD-+_InyuCF{d%k`9N=3es>Rc%kr-O3~9R6o|pbG*Ry{47t*`( z)PdZz2ZuS%gK{bn6B+**IH$MUKY#z9LGk2&h9jU&Fv$GtzOLZiG{%J0F%;W>m|0Q$ zukJs?Cz<(weC1JiC07F2$uOkm;cvg!xBON2~(&m`GamtdPs>I6q= zueIlYhL**@o$|HM{uaAGb+&cQpT8GsU2AL6e0TlS{!QwC&d&e#@IS-W*KfK0^*-$X zDSGMWznp&=kM{qR4*OZ>K_GdpUvH;DKndt3HsnSI=}iuPjUTO#*0Mc5V5hph?RCkd zm(#lzC-+QiJs`8TE;{^mI_e7UKaud>m{W3ygB_pmQqe_89#!~YCT zjsF?WwEt%)^#8kc{o04?e@b5Z`OoLmX8Z4vfA*Wy6_@Yb=pOa3z) zDk|mNv)=r-asH{ZbN6SRzsr6ll)qnm+O77Zxkc|Tem|;ybK5qKbGnPzo13qMyW{I- znSD(DvFSg9Nd1?|zx)sTKidCc|6h%dRT_)-Pv?Ib{3ZK=eaDw<{#Gm5wRewC*Qw9E zvs>n|xzWTEEG4FIP;-9ed!p8UZYH971E0fQs}yXSF%e{#rA?RpW6%!I5)|{lYJ*UflXiezpCF?f)eHGh8^G`k$fRHGTug zuJHPAX&YIePwoBZX_R|+PI`vLIX>-Aar-VH4aNFvKI*!0C#K+2lUMk)_lt6j`$U#D z9Xv10)w|=i+w`#MuWCcl3NkFkdEK1409usPsF6-)aZejVK)1Q0bj`hwX6j6MdGVn7 zROPrsq93HQ1#Vc_$jBA?{X6;5{V#j{rzk51_~8y+G(BdBx%J27)md`#KT03Xt@fDy z=KHO@skO!VYFBe79cJETc8%3fg1L#q_Gq2ke}==+|1Qk`V)~!qNpJsu2IcFo^^e*A zREe|r&#*yk`G1Bbo5CN2)@?jg;U)UwN@>E9%h5}IRnAwReQhP@K_}nLi}O9|(M`zw zaQ)l7A5S0gcia=bP+Bka^PAPQ)ycVq@;BaGuL<_+c)c@$$7o4U6UUqE$Gg7tH_!hR zZX@`gA@Q#9e+I9`>vtS^y2I4XH?a53FTH#1&HkdX=QPj0+qL;?GEtkCJ|FI`f0Fc9 z@bAWh_dn_O|CkYec|OY8;b&IAioXSdR`ag_ov@VuSDv-vC;OkCj9>Gv3;bs|v1$Lp zU!1NY;a_(CSqGbmsC@eTXnyOh(kH*_7Cx4hy7uatTUW%=E4r6Fo;Yuvcy*3wszMXT z2^*>Yf8z3o^nb~j=>L(t^`GJ6sXswKj{j#+Ek5?2;hXH0{|sMNd3~<>Th-4IFxTSj zm8vD*+)wyh&PjQEYKwhs{lmgPO8*%aK6d)gaB%MW{|quK_mo#=uJ~j4k#FJhbJN4N zN7>%l=q=3N=W*}u%vi}H$p`^Qc9tUT4?_D3O8kGC{+9nOyy!o}<%0FSk8=9v#kUl< z+}Sxf>X*FZq{mM?jyf6juDSlKE;rCs^p9SB?%d@V=gyq8$2dJ|TY>-Yz44(x<=a1A z|M;>Byi?(?!=E0|v?vT~fAW81|7VIn=)|h9-~Soh_kxeLL0$O#XLs-ZyD#fI|GB@O z!~LgfU-xH=T^ft_i`W;~N85oGhgpBv{$DE@3zE1Q%!^Enu=?9+Of6srB zwXVPZpuPRGn*R(t;{V+Zf6j|05H18t4(m^UHaJ~>Z{g=ZGq-})v%6g0|3;MmU;n&) z$?GxCz4}*_{-5EK(b`w_Wgq@C{OQi9V#Tf26MVqO0hiQ}u!KGwM#v|7=!&yZztw^;@(b{bwM&;6^0SwYKu3Bhq*z zJ6b<>zsl>co6$}ytMk16=ubBIAO-u92mTL2|1${vY1+H^TNUU4p9TLJZeRa5>2#ca z+{NFv^(PZ9)Pqje_e@>ia%%tm6`)-`FC_Q>>HaAHuzupNLRXRSuabYJ!SW$4TJ-1P z{|v0m{~2cT|9dq5cXs^ZtLP%phvPpPFa7*y=F_zLcbk9KW&C*vx+ak4&x5~m{~4O< z>d*ZA&rq=c@2)lRw~(*(%SBEjVftuiANKBv_@}e~sQh1*f0I94{;~d#{(lB9@RpUQ zhku3qwZJ$8tedE-L%1{+?F~N6rGdD=&`$sFy8jH%g8wsY|IhGuVZ8YDTk>1)|2b9v z4Ri$77VSsB{*^qc|0xyvv(Ej?b*}mo%lglMPK-y6_3qbi`4N%+rQrCVUd@{S3~Dmr z{~45K-Pb=Wp8?vHC01{QvMWm@d_qm}m94tU57V}<$P6#K8SDBjce2A68>cVAD#M+`Cm+4?f)Tb z|DQqJ9gQD9`#;0F8}&cG>hG0bQNLpAe}?C;e$V`M)3vVb5BJCIJzwj)s?_GL&i>W< zcFq3G`#j%+PD=X?#5$F zXFPONXAo}S{IXu-KSNvV56Axuj{h0{Oxg9H;c@8kXvy{km)4q!{obTD z|IL_H|I1sojy3$v9O*w&`<5SjUVo&2LHLpyng0xvc0TC;&G&NtuTa^_y;bf9&;Qh( z$MK(G!@HUP8I}fKe^Igi!TF2-+|OP5r&1gEYa^&QC9pl{=Vs{YPN7Yw{(CgU4 zul^pqX#eE;oBB6?-TxVU5A8R4eE++|pZ^TXuYaWfeOtBob5@te`p--LeWb#vj5U)# z-v74Hp4BEc^I_n_^>62Iy>YzydF}Q$w`)$O_NU!f@_BsvT=9L0$MfE(@om#uzHzbi z>8tu@j;+lI>bG@Ism*n*E2uwwVE-$p{|u*=|7R!){LjG8^q*lR_kRYh`F~Hw{b%^K zb>@GD^Xrew)qk5O{BuA1Klc}Z>(DnoUea%wFJS*Lv&Qbyp2~0hZ_dB9xBn}D_Vc$& zpxa|*PrqyEY5%L{Lj$&4>Y+JcnFlP zYXX0l|7SR9yS+QlxVdkK>E-KlYEbiP$%Uq=5pL0D`;D?Z zSD5XV7yi$HCndzs2?>8+|LR)ge+Ik#Vs({&mv;ZFKUhEU*U1l)za9L~(7OC1x7P>t zKT7pC=ijQU|K)!B&)<1ILcagjzj-<5&GCB@=PHkB?*WAo(ur4d?{BjIGe^GF{_XGo z3?Aw0FM>|{LE38kBfKL*O2SH1GoW9qVBg!<^=9X<{LtI$b>mggig!QvJAZ!HrLq38 z^RFMjoxi#KXPCM9-yQpJdutcQi~mDz*8DPWvwsrq{ru~kQJ41X z^Ifpa527vhcglbA`x6Y>LHGWzz}KJZ@oVR!9N_rLZ@>8Cc+lafGk-5sx{+u0k zAz2dYUfb+{oIn3F7(f4e=s&}^R~ze5=EeWyK05v}^`FLnhL`GJ=C{p1TK};AS0LzC zw0b@HOUp4&W!ZyqKk=2H{=a+qKde9T&mZLR#12sV{6?Uw=&O0iXUZ~utbbenpTTJU z-~Im?-g5oex98D9cj>viO>v2Uq6AO9)BL>_$KTVyt5 z?=tcNvtNbryFbML?)lGfHM$nj=_Q)Uh@6&Q6`fmXA$mFRjV=QN6mxa>tLg zVv7{g?NzZ;*l^9pxj5^zj=s+I zkG{nXJAVpmvALD4d&HK({K8uPmj1&l6SFR5FAn%{W|!%ND@)tMH%+^gzA0UB%|&IV zl%OXH%+KyPJysXJP$B(TzRjj|T}(yVy~}|Yzjo+O`dPZ|UN@&MR;JsP^gl9Xjdev=VPk(^{Kl-<;g|t|!><;!c*i zzAwva+r&rnZ*bwW<72Q^%Qge<+{)$tsUg=&ZCCD0y3F&+udFv#Wn@T=&_dGe6z+4vYT82^Hr- zgY8)QQM=I&cs_bP{=-j|$;aje}>&x z{xfjf$7HNaN7J^Z5yniQTWh7gr^4rv8%C z{$c#3e&XjX`#a@B>ehjdANKq5{x{d*{|t-N*Pq|@d;Pb$o37^mVNSUItN+$xt2qwp zlQus1XN__r5*ezy8vp*Ka2A8U@8COjbVE-edlG zJ=$UcdzTjk()o1zspn>O;od|+AZGaw%lFiO3b)Azja&NvXYg9G-h93Dk6n}8KgJ*H z2JNlezM`!r_m1nCnHI9fFXJlXul$IAaQI@K`_t0;PW>>^-_48aPp-f5pW((_@qe>h z>*T}VighNgtv_rU;s1B_zyALW98-LsR&su~JHU7L=6OHkYna`OXSll;6Yuj+^0cXa zxU}`pO6lOupxwe=>;c`DmQ~z5G>w?~6rUe;@q$@ptXtN%l|f{n7l-kbnPItZj|!NBMtV>Rt73 zv}^w}EWWpI|KF)OrYrX`{fLY94SsXc{C3&#C(3V+zWMpH^W@2A`>cO7O>%$yUTDqv zXD4>eeUN_a?h&7#pa_aTG*7i&D*o~GSM^~PrF;G}9O?tLB%VM1ei-vWm#6alTi(|B zGyKSWc=gYU+diAM=BK;e;?ZoJRC#=D8S>t7Q_TJf_@W7<05w70ULJU;Sb=vCu4~spk!JC5f7(knX>&_OR3;!AZbSnA+1Jnfse;$HX99Ufr-1(oO z<@s;B-*2kxH=EbJOu0LMYx4V&zU-jqY>JQ!*=eJ%7bgd7PpETe7---VWp9<8PHXkBC7ztsDGJn#1Zcv|-y+1AgO<5v}wYL(h>#yuv z?fz5zPXCl|TkU85ef~udb&(Zla9SPT?(oxD{~2s5Ad463Q$DDF&;s4>;D|mjExtbP z2fyf<`=VPc)~f%uS^I77rdsGG{Ihzu3w8TZ^Erig6mWP)t#v1YaD1q|x`R|HbS!VY?G}mXu*KRKV zHt+sjo$A7GF@NvveEbQ^QiUqmQU#Q09P}ajWq+I3f;J)h)o*^k@A&rL#^vv(`QH2; zX7}Bv_~*6y;~nb~f2>{ST5f+!HGXs6%+;SBYh=ssCn|`;GrTkG6E)#d+ZQ08&}G5;CfHp%*s4|wGl@T>k^{&jA$!w>04vGI=k z=KJp3{#$%{VXn5bR^Fc0=be*Wh0N9{-E9d?#KvOTWXgsyrOX8d>ine99G&C8gdJLk;qiFZ~WW^i+7 zVUCx*eqsNnHQ~lJRUh_*P5wJ8?04Qxv-aEFnx8+-<8v4NYB^78(!pz4Tz}RtdUIZz zJ1lRD@Z`I7>39A!pw52$`uuIxmMgjYABz93{eIiLc6ZwBd>(|?-M*F%w|0mSHA-=Xh|HgK3HE1tiz0C5@ zi--L`rGkF`^RZa}&((Ba{4BdCi+0XOjZ>7fFn;O$OSQ_<#&Z@1_>6Gm-WBRm86fFT z^8cipAG`ngcxnF!$^Q&L-pYTtBQItDyl?7%hKBS18IEVav%l(dc+>Cm!oQ>W@BTgh z`e+4sFNI2dJothxt*-sn{}~?cursMYFRT5ZfpPwShQ90f;^lNqSJ;WXo^f1U;! zjr;tY0c`}VZcg~q_XjH0rTtjD@Mxy}&8PWW-cHV_-LY-Dz2<`_h4G8$Bh@FSzxT8L zXV`K6kN+q42cU+uGFSb>_}TbFY`?3$p;eZ~q6Wg(vNKQmsNYy4{Mb4FKLclb`s;y-+s%v^l9ac`QYrJsKjIJ1>OFV<@V))ZUwz+wI(fRexk*i& z-7DOT+`2?JEzmq+DO0j;TNlIQ694vptRK$yKAZaRKHtk*sq+?b>} z2A_e);q>OdsrGGqL?66oJ8HYX#Y9_{&w3ia*3D@5Je9;bVuGulOIn=wyL$Da1Nu=^ zGHA!6{+Yb~+IfsogYJ*(!87rHFE`pZhX3*Y#P!w=a!t9MF`=o`1HW(NJ=+&11}7W^Em6gK9t1>TiC$|9Inr9~bX`k{w_D$(RrB zf7?sW|JCXP&AdE#{%7iWmiimzKK~gmt$6*#Cj3MCi~kJD&ok?V>{k4ZKpRS)U;2v^ zed6fPP3WPNh15KhQogZX;y=Tabrtvj9o{wn-&D`I{J4o9`~P`8@BPp4#(L#{hL<5z zpMCx7-};ZoR{Tj_c=(S=UlZeZSgHS+^|$|T=f(P$JHj7+t$Xld{-^A3_TSW9|1&Im z7(cV{{qLT-`iWov82|gWH}L0HSCR0am+C7hUyz~wDI2^LV)v5z8(jDQGkC3A{dL-Y zwf&%_5Zb%k|2C`ztw4FT?{RDWlZ3sJkJ9eHdw*44B+ym#_raeZe@FjTsXw{*NASP< z`@ig}`q7Oxfm6F1zkEGc#neBU^?mUx|3*H%_W3^p7kGuo{Qmp=*Un>{SttJC{y)$A zt^41ICjVzxB(&S>-=;(V8JOlT`qTeJCjIvj@K7q~{N5E0K?&4Oa8P z{XfH{=v9Aat-lt3d;dRAxrzT75>MCvRo%7zc1$K}5d$KH59+(sv4UpnJ?gw_<$o*x zXE=Ef5^-%+e+AKU457)FKMx<3e|Y|n_2=eqa;*OuYL@=fzbHSyB+#{9Q2xgATkv-8i&g#Twy&bqIE5_F?uTulJz0K)Lk?eQ0%)?1YRI?q~v z`ai?;S2fcrzuDC<09`t_^AkI^Ry&p@B|p!@HhKSch825gwNJ&~YWFu^L03~cf{&0_ zowiR{>pw%?!hfni=PyY6&+tkANPX)+_m@XS0^_fwe~JJ(4<8PH&i_Y*|6hvz@2>i{ zYwP+^`L+4H^(W3vKmRFx>dgNPyUsuTx%hJ%X!gPQbMu#Kd{Zu4|Kr(;Xoi1{?Bj3M z{~0FPFQ~tL{ohpYxQlW6#2q%Gv8d~-KM!a|<`lDKZcQ^lMxU>A9`cLJDo7X>fzx*{Z9=&V3uVDS+{|qVh zKP~LJ>TiGlH{pDI^sM@wVgDJp|IB>y(7xCIYF+y6{irRq-_GB5|7V!#|L^{PhHtGk z@$t{j!zX=qRZwNp=U)Nny0s1V%3Oc1{9S1Or2qAQhHtMyOAx{z#@4;6yDFPkL^F&pOkO-xc^U&=6{CPx*Ux~U4KRX903J5%IP5|E7qz`lC`o>`LrbahSNUg z+$3ps_U7hun)h$oY5Zqc@cy5-yMz3H$U%%)u8I7^4Js5+78L&KnXU2f!b*+eqED;e z)?by2Gnf3Dv9jpizcTw;jrGs@x_EFfw=Kiz)!2d!SbJf;Mz0Us( zYWtJ_GbEM7|H>2nxi$X8oN_*&5XGCOKjvTF!>X5K>RFymM04XjthwP$a&u#y`0;wd z8rcu$J-g#R?pyeGcB;+moJo~IXJ^Jn9(vm<+ZHPEq^I!u(rm8cIa4&3-F~q(Y08vv zlerV`2F9D$AC9RzKmUtq{gdAB{~44o{%7DV{B2i%;p%^eN#^(e^vBKr7H9mg=JdOC z^J^>qGn_yAeep}FKfgi6CDMF;@DKjS(+}P6oVDkcc$4Y+x7t4xvZwdIxo+@CCDrNn zvQCkQbKMxv+ge>eEx)z=&lF$le+L8pGraiu`m>+W;-G0v0jtHuOBaXLcmA?x4e9wT zs$sn@eB)`a`UF;Ugsph4vL*W0eDgU@LCfVrYyEi^?T-Huc3;r`McCE)4{Y`S zl=@M*`{RCHm46;zWoLaevmoBiJX<)^nxo|iaV!~CCtqrdAv!wc@}{|pV6>OY$PVLo26D&*MF%iY?RwAf zBl}2Moz;h@PoGUKXA#H>EAmvC;IX1(vtnABG6RE==gat+4-2+V%`j)*_2T#ZWsf$7 z$Z{?<-TZ2|{3?^M^l#U?|1;QM`_J(GtNpS5w`;}!)vx`}@cvbOZ+(#bNw>M8GyiT~ z^q=AU*ZqJ0`hQ&fJKOa?!~ECvzkkht>>yQwPd`KE#W=;s`}?fy8%sO3On!K`_=sH& zxBV@XYLngDW6zv^y7}koPPRK!k2@{jTUh_$$}Ri9!v7g0>mMw&|M9n~;6V7CkjJv} zvn-!>EEi8Zzv9LE>Gls-ZmIvJ{?F(?!$Gh5kH5b5Gyd_r_@{h{?;2_8_xzQ{TjbNP zDS3Oh-CA`oY1y|k>1E96D-v%lTF13l8oV4gJ*Avd|49yw7h?h=_Bj&vK4)w z&U@{i$N5$Jr1B&Sm6VdqIjgl9n>Z|4O4qsn6Oeuf3pX|ylPiiJ;9x8dg^6qWd>^hw< zUfRaUA@7b7Yx}nRIPBMT1}Vc_M2@osyjGZdf!_EdM|Dl}?~JI}iscW>rZ4}IB!2bX z;%f<07i|tMR63^nPGo1qcYy^PB##+6ypMOBXi|ag|3GsCTZ->i@icul$_fTJul+d;CiOhVwtKckBN%Bxv{l)!Mo~ z5w)`sm;GC!BL7I7*pJ1lvgFh*z1z~AX_EOUGGAfRJ!8ck+Y=g>aB&MPd2D$=eQVYJ zx4O%+s=oKF(KoSlyW+{Qnqq zjnCXy_TNNj|7UP`&DZlkru+SxvPq}herHjeghRsmCO1dPZ>C?u zQKD@B;!hSko_}vad3wJGgaZ*!ve&~&#zd}}3d;DHsdf~4wC^;allb&Dti~YBE^ZE+0 zW9Oa!Gj#U6T(ED)fBxxMh3!HPQyn0LVRg44OKluM}sR{qj;1GTP4;$!MqV(dbz`|oQ-Ry8*b5vIm^iMD#hUZTSxo+Rl>VRp4AK7??qB)OAoZ``enzhqzFgg4g5Ly&KXRZLM;Y_@ zT=m_)>mKvRbBjNEAG2zk|M0Hct81?#uc&rKtW~Rc()&(!>cy!ZsR@oOGJ+@8vHug@ ze#HNm=+^i@jPw69bgX}Q#!RbeG0U@UvEj*|xwfpT_N-oCe&NyT@9ZxB879YX{Liq_ zO8>7p*Pr7546V5zh5xnYhW}?^NdM39Nc)?#$0UpW>DIb@;hZa$wlwS8*)+bDrgDzhzunb0$~4d4J*8Ihme?U4CA-)}Q(FV9_plwBTQio-wok z{Do%3-;*I3(FEhFyYLG3!*R-+KVEOw*EdMr@tk9(s^wJ()Cnb)6Qw+vt97r#t?Dxv!CI_7$>SJP3; z0Ym$o{|vl8x{un6lZj(_uuYI-FyCBs_*s5M(^AY^Q>e^DdI5w#80>qUH?d5Fi~r3^s=3M zf99?atM~s=A0%>T?~+O1!+yynx|Y~~==ibzU&HqOKX}#uGYGr?QL@wi&#*xE{Xb^U z{|ra2KlslOa-?2m-?O^+U(eWss*siSXxm}dTYq3%xcuf1@x#-~ryDxjNafBca#vop z%j!_$)G2eC_*vwp-au_D{+iCU){XO9{KP-gyEm^l+r9q`zM?gI#Unyl@yC1c1QY5h zw^9EYa=E?Ni~P~M^yNPTkJGQcSE|kkZ3)ZDQ;9gb_t120xkn;m%ofKyWM6+)N6(6P zcEs(~NDxU^nR`F@VR2OP)Ur#}%3WxO-28|}*S60-@veN>hnXLj|4|JKesMqh-`P)f zx22Xv644fFKZKRFFL#ujPp z?wQrE<=>`VHnpuj9wt6ZcFnFH&SgiXJ#(df8joBSS~@|1kHg}-=;!_D(f0HCyoaw& z8?4qiy0z}izdI)kO_HZw>{&MX>ASuvj47bQ^HCE)d|};Lh8K3M`!-*JLBzeoN& zfd*~qb9o8Sd|Jihe+Q!G|C@9&b~#FZ-Shd;*00l+e%O7?s&0Ov?A5E+dRMrL1X@(8 zOniGcR4`=HnIjDhlIo4I73oCDEavwDMYW4f#&-_g*|Ezy!oBhrGKf~na56l1VuYbw&^_Mcr{O&%1zcXy)AHC=Q zQ~crD`gJd+-^%Tg&;6{Ym%Fr0%;dyD*qX7f3%zZt$$->eP%G< z-+6U!cYmCdk}hkc{kk5xzN~jDxT4ClX-e9fuYYd-xqDQ&=d;(Q=3SRR;f=xgu$s!{ zcsr8y7NvhhP>X{P`smr{s)f~BtGe6sJacz%FMe7)<5bL?RlonWi@Flg)~#Fmb(Q_O zeP3#pgJaRY`{M? z{AXx!M{b4wXR!Tos@H4kOAFV%a;N_KztQ7Z?=_ce)sjiyr@gz&SB0^YybzBQt&=PE;O&`Rb}xSK zxh?7x!S&KNe(KlQnZNM#(XW3w`Db0`#mM=n?HrT_D5&f|K=>A*WkLS1SQ_R}M z-e{wqzve~QKKGmN{vE6=e3sv2KKc8GQyaJ4l$_pp%%GBO&*Ohmv%f9+&#;i`{(lBm ztN#BC^6OVDotUH*-0N{Na>@5tf1`?5fs?!a{nhGbT#TQ2|HGC0TgCr!i2Y~yp?RhL z$KTqOANr5)+TUF#pBbm{@kv0&t+&_bf9v*LoB#C9JeU6O!NwlD7l-EgTb_8(_4rt7 z>4q&=y(V@0-gcY+b>mi<5UtbGH2+-fk6pB1dr$4d^@8^*ULPr+Ruy{Zga67nPnn4a zm6aF!JdKRt5pX=AytW9fu8Z%!`e@aKISV$dy}5Pwe+K1mS}}@FC6CR!yI ze=&XndQMx57QVl1=9{hTd;V?89LwC@d*9cqZu~5H&(~l7$+yxeKi6;Cy7u#HyxoeG zb}snpz6@r+{TB5P7Sw-M{LgSF_&-B#_7{ERo@hMdzdKQOYabncu>Xf^&hl$@C;u*e zUfX511GE7%_x{ti+q*N5RXupTaQ&)>Cy!Z9we-B1{nPl=nMe1eJoWC+vNu_=?mAlT zTa3nEf8TDa`_Jq5`p^FbH(tK`BOe!^gu1D3<=^&_+UP^+$L4>S8tK2dcKvVjlfQFv z^Pg4LXWrd>hI@D3!#O1<&Id-?%bM6`hyPf<_LWuG{KD#N{hQl-S^QOUx7|{;NM(@` za6I_RF#d#{rh3$xy_24OpLXl-^c(*=K0GR18u{D(^t-)ZetUfI(q4$3O;JZ@_Rq3g z+40Y__RPP&U(e)0ez=H!G;T%tfs+p|*@XkD=QMn6)wq?92{ctJZDYzl&Q|Uuxs?D)Rhndw-Ihwt36aSc}y!e{JqUpBazy#;6DP)t!;!|5)Ds&+1=t)jR7GobhPMe5N-MF09i zYO=b}H>>KkfA?waFSSSAF#6*lM(n-We%$iG)qi5yRb^9^?%nnNmOJ5q%OtbgGiE#t zS9!qX$L=`mPyCUn39Fm7nwOup-TI=g{g7b6@q_1G&&vMwKg&fhOSSBSW~s~2Eam=p z-u@>WGVH&7{m-yu)Ag4}>vC(jFMM6A{Agb1idVa8k4{|^pLyTpqfOzu*O?)yGZ>6K znAKMvt?NV{Kgs^~j(@pD!m?$vYR=cY)bSphsu(OU&Z)LD?A{uD1!VRY;m^f>T^bAc zkk6owncj6NQt|TQCVwrry)D`g%&sYJD5$Woc{KO$9{qlPE@+>Fs>fPGYgHDQGU9#H5wc*K1?X9~W2sx-E?Ud*IA^ym2^+&ne zkK&J7n(R=&_~m8EU%S(umCHIzPp|ebRGGXaMT}$B3P#4NIoB_g1TY3#sjRqoV&TL_ z7QqRQuQ*m_EZ{l+CRY4kP40h&_m}Ehu zljlE?`lJ{8KR?d@&rmn{kG5YI! zw>W5oSi1iAm-!Ffzv*@VXRtH-&+z@F{h=){M(rI9=h1XEnvX`yjnQ&)v|bpke@ELJ z`v+0`3S(97nIF^FP5;jj|DitW-D#Fio`Tz3x?Z(D$)EXc62s#imh+@{ek?z%-z!yqSl9c=^nDs1 z{xfu$oL;?K{Hmnto-MmKrF<4R(=jh4uXln(is1E?w(&>ax7Qh5*^~V6KSSqz-u#@m zd)yZuE=*P3w@5{7`nGV@$i?Ly#*3Bpo+$d;R){_`o27p2w0`d|`6KH)Zt*T#pRBq# zQ|#gkb6%yFY_C%E3$0?7_-iB>yqlxc{AmtPLy0{1`hCi`Y6?E)x9+KY6#w?Tw#Vi7 zVH%0QZI^DDd|GRhqgcdSMu$6RB6m%`QOo#fx4&?FhIv_?z!il{Uo*>e!ovk-x3q}M zCI5_`Ud(cLgYfn;^OThEhKlHe^JUl68N~f@z5cewY+KdYrSs;Oif;Y-__T=Fy7&7O zzICj5UiomQyKMG#ed$M6^dE&^esnP}{LHq0hx;P+6wg$|Z~43Rs>q|XhV0ci#&b;8!zSi|~_c8rY ze$;>XHLttV$1PRH5ixh~#UIt1TU=;zuk^{YFt^ABolY7_j6D9#UBA>CKHDU*sixYP9lhgVlP-DU#QNOzT0ahcc=}Jh zLNA~1R=li!P*ZjFYwiuZ|8$@BWSM9g)6>%XTt&lkTW^B$TAFI;bQ!&nwUW$lp@6tbsOEO+Qs#SNm@?|Y|;Fc@; zC2!^4mF&98y1M;FZ>i96sV8hVqIKMu`HZhs{61VSZKv>~{op;_59eksx{+ zw(VEfty{2P-*lm;;;ugF%;esQOAm&klwz`x?1P^9kDE>4@3vJu)3%#JCy9enWM zbJtHk?s~~T_CLNpsAs?N<8kQ6jO%Mlx#yN$4>UL_Bj7CmE-%?*vH#}Peq|bx?C+kh zt82MZ|1jP5U*D~OOF?ID#?19p%e?vT_S5w@kM7oLNEFKZ%)KIa$AR;r59K-j$^0q( z;NS7y^go06(T98E13t1|m>hmJ?9<2fQLOeVW*@h%a+`Q$k4kmZclBiqc018BDYJC^ z)dwH`HLuLxt`#S1b}M^&;6ZIJafLdjeQqDFx9-#V@t@)06nSygAML9$>(s8kIkz%3 zHT#L)#Js+JIRdu3U5>eGZm~9gck=wYy2Dqt{Em(G+jZ%E_?c~cIv-9g?mekAHF17H z_LJ!RcKa>cTmH$%)M$KYTlw(yS*?4wvaNZ;-o9J3zw2rvM?aU_$I6c7SvztV7!@Wq zF$N#6v;EQkIRECP(~q{dY`yZ~aDCG06?X^d?3u>+Cw)Ej$tyd4vOgfv*yjyO~SqYW-E7woFd~m+#9@pQt2R~FFj+5N-;mWjcK`*91 zj@nc6RJlL*?2>5{&TLj$I%m>BgToBrJ0qh0q;C3A%r}=ON_2nM+PHfX`)f;W8@Ki@ z4o}P1(yTcwQNyr%OH=3Mg){<-f;l@pISrqcw*=rXP%#{-=^D_5JYKdD8y8+4@h9*K5a0pRP_i zxO3Z$i+f)8PiJ$cNRAq#B_4&x{N zwl#lJKVFXcShv6Mv2FNaDY^DFu^G2w=kt1_bvr&8`y;kmb$mQfN?b*MpU3q$TPn;$;!J~C%$efkO%%wKw ze)!Mu*#2<8z>j(Ht;QKueXWmbonph^{5pK+u$g zAAWyp-uywnt4`vjfa8*i#nD%vUp18%I9+t;binq#NvgkPCLC4S_W5D5Z@>7dg)=== z3m9MD-@I)5qgc1+$7iYj+gbc5m;Las(-AMD<~|JHF*V2_y?3c=phlN-!;k0c+Za~< z4!vLFeqo<%{Ezhq_o@6lu<4Qz`&8YBXRn^wbmyo*yk(zqZ)m4=c(EMk?FrTKZE-R` z`XBsfV88Pt?6Jp(Z@ql8Gn6hqx}2x?y#3ta;^ODd!U_8>omo0_(~-|7pX@XEA^$l4 z$o$rg6fHB@<&@*e<;}=&8)yxAn`>n*R)s|1-4DvySh$ zReyAS>-I9{$acS6wO_|WjFzswJAX!6&zcGC8BhD13d#f=4=V5o@P!|mZfE&n{ZZTO z2Xmiyt^3+->woy|>KDJ}esVSa+S9Fnb4l+Bm&ik#b-MSu`!2V+mfjY8bRYNMg(m0Q zx7it9t%+TBFXOuSts_y3k6Lb?7^AyqBry2HIY|psvpG) z`(ODQTkUFPH@SG(dF7Y4tXJEd+CK4Ar}a^lg_2JlJProz=_$F-@=vZN{YUMJGyn9O z5C3X@J)OUFZPv%QyQf#idT!mbch$Fz#{~IAm3dZm&MBVLP<_1jkLju(+dca|F8y(= ze7NDV_W8mDWpRD3wlkh8U5{+fgiPo1V`C4FGyH9pU8i~_ucmTQ{OjpE~p88C|iAapX8MwhV--fHv3IC zY>)UZucz~F#zvcz2NT?{TP@vt_1^6A+~s#?bFW-DQE5j=B#)8NgiS2@Q@i8}Dl85@ z+UMoZSa(6(Uike!ZQsm?dqZzV$qLDOz56D9X-&%Wj5h0Z*BuiJpYQu-d1~d&qqV&2 z^^bhNI{%;GPLqx;hnJoaxvTTu;A%O)%7oUC+l+Jnw4e84_*wo?y?4@ohR1X4#6IZv zZ?%_tq3kj1ahTNRm7mr%uV`J{?8^P*$@`F?E`D{3<9DWh7MuOy{iEq!|FkROAGsfC zxoEQGLyh>x+sBu9+I)^ZSt&o|Ue089u@e(&PBj|ydi2SHKd~~1G)jis)p1-L&yX0GOu0_7y zL!R8`8xMEbZDITrvQOy8uKk?Sj|G49ui_Win^C%cBP07aGnV*_-|9DO*1Wy>d++b> z>Ce6`{}c41alySB>ksdb>=&x|&k+70BkqBo-%=I(pP@Z(&Em`VeY=A*^%m`$cQN4D#u+u+I#nwUIQ>2$c|I$K!|Qx5|lq;BS6k z^858$qnEsYuAkOAbZzsw&#}6@j-DvJzfJeP9{bs@XMbuRobQYJ&u~eIzg)u3tY3$b;>=rFr*nj5Jl~W8gya)Ztra*^dy(yMh(dTy}KtVf^jUHcy9W9@8E4O%; zeOx1E_G@2^*Q}CB-Z>1(o0EMe?)+IeXT`yD7NC>ppj9lis^y>l$F=;?{m%aklBW4> zv%)*p+vq=h&z1RYy7{HdHjDRp>)xN9F~R4>znDy^l(&*9UtjjT=XzCVdeJ8O@%*M= z-@EhHE#7!(!PSzrc@>W){kwIo=;NtP4_S)#`0aGlK3{l&Z}HLp4E+0)UfK(*{aF5C z(R06P&%-u$9S^x&8aB%!UF^(Ro{PR*yLGxG)^WW(zH`0Vhi8o+KOf#NyvO^IZN10k z_gnunNJK>+T>fg>CQq~e<*JkR%um_b*;1~xsrdI*-s##0o&+%4vHrOKJN>cU&WH2a ze%ufIIKL(5OUCn^lfz0gA6~gtuu4%^#z^8!q;AU%iN-k(!gu{ineMao!%;NG`#YtMA3d$#^`AlTy2oXeOC~qB z{H~5w@?4&I<_)*)k<0Glr*`}l&^%~);{CPz+mHXQHs5i1@rS!lZ@m()Xma1(DDS6I zJN^5@n6-y`e$H2Pp2u-qL8kr9&PRLmkJ&L^HMMn*oP9(pCF<%IDci3Xoy*N;3kGt> zurPF*=ly=Qwnu0|(!S~Ixqj$=xPC;AtzI$vv+JATzBe}!kx^@n2aTeoa$UB07Y z>cM!E6^xz|lILRtzwlNZKl-1c-RgPoq6?4*K7pY9B+&g53?i%{eI z%<4f!8ns! z%G$~v$2Y3??w5RVe+%#Vo*KoE?8olOUEX?D`cSyhxsrbVSdZ^+nMsCgum6fE&NrK87dr*iAo8KWHyr z<8ytVaW?Pc>XQpMUazswUwbo?|4`L7`FK;1T;Q$(MusQ#jy)W%Y_J`v~ z>MXZ+rqB1-QmN?vyVp2T`EFm?`@}hA>*v)ZKg{oz=eLu*QxnzyNNwfHiuvwaW4*qe zdVa#nGXFCO{NZ2wLph|Z>vq)ENq3h7PV3q5 zGltJ7aKnM}W7<#G%l_d1w)~_1q2K%4t_%Gr`*b5(bG z^zg>Cn8`iN6Bw%>zd!0P{AwP5t?Nyi0dZG4VYV zy)ALH*7ZU6>9y_$>*TNKrx?e?y! zVd>qyw=ypsn6+oulJDY1rt6Lwb4T)@-DAn5@Wa*5z<`yZ@=|<_$EE$5zRDgS`8(@w zFV2q2TV2RDJD-1IZocTAjXKhsB9~6jPQBY9siMIhAAJ3^o#Kb|D!@On)&O+GIR5mx(RuRU7VWA)vP74&Qp5h*;-$WlX~Q3e@J_OJbrwxap;fk z(#LD#51R$wzjr%hTa>r6h{5e!UKezxGd?bxd-uXL)`sKEGP(8b|12st?&Hzf-YvHH zBbRU3>%(H5QmuXOL)yYR(>2({OdOwk9|#cLmBMx9;y<}R#XsUo`}zLp?Yv;h&-==J zyZJWtu<8}-OrGs7R+;#=RW_|RX41~oB!AOmf3$uG+?v*(`*45fuC(=we)J#wZa$rJ zO+=PIk5$jCJw2cOS+2e5V+@NKAbbzy?XZP>Ppjs#kEJe zW%uk$a=ZB{bavxO$#V{NO+SiPRJ4bDU~l{CFLw0F>+-77CEHhSPmFHwjB*J7;rFO$ zZ@=j6F#h)FBmRqTn|CX1Z4c9`yD-h~(`~ks$EST-WhrqyROZ?C6)270^(0rO{VTMe z=ZpWb`_aARkI(E!^AB~;wThk_bxd0}*!OBw#=|+$#wNzDCR%ScX(a8?-Y)m7!SX%Z zkK18CG9UX(|FQqk`N*<#t@PnpDN=9eEw2)Oo0+OuGEMWAX`r(5@)HM`ihD|!nIFvW z-lvv*Uvg{P$GuN3+<3iDe*3jITiPF*yhz_YNkUoqU)7A{unGSeYG)*O9oq84|M7gG zKaL+&rytMd$(mMYyM1%3sVv*eYv=vCeRT__UE*XZUXdvxZ_FcmLLz2Pm49n}`t=XX zk1hTv#9JJ+=d#kJ`YTO;=rjBzClXXPoJlLy0PKq_UemF2o z>OVtI{vPSYxBYm}9-G53FX5Dvo64uBCDJ=p#nmNFtW*9L^D%DwV|j*Gv*s;cbM_Ih zk#5#6Ub$Z{7Ve(y+p(f`9TS7g?CrH*!;WzV7{=EAuBqR?xw_ZNp7&ntx`pK(D%Cp# zzdUlkSzjf3>W;?wnV&=~AM_M^KiGaaUZ6tqPw4s|>$3IV_KUxA514n`mrrNyhDK3k zBi8if-g8gG3vDevxE;}U z5Imk){>{J3{)P2_hDjGMu>Ze|bL1Z-(Vz`Hj>>i6xikm29LkaS#*gB5#s958_&0mm z0{;J323tfttW$Y)tG)f7Y{l}pORB$Zzs+76A9MTU*65TC2j2B=Z47Q>c+kXO7qazC8z$U+`jKWHa^nL5Bl5p?oVK8#pBR@ zAKtc}xi0ufJ#)E7l$%`Kh27n9B8=x4j@I&}PYOTaWV~8q%iS&eUrl_TSa{_l?=jAo z_y5WKy4Lk$_py5dTYpFwKG-kw$9&)Zjcwl}FMm1f?lbG#qfeJU-4Dpu?dW^tX?CWa zr>CX-gz1Z_`$x`q-n!qj$M<1=tCZZ#YVqc2tb1k$@0g}sTxt_nuzg#^#0ISvrgw!q z9!s!XKQnLQmr~J>=MU@O;(x?{tY75s>;rM~m*0Nj)+pJ%`}geMoh}!TSL~d{G0jx* zY0##ewUdpk2=}?P$2|K{<<}PRsJ(YDUe1-f_R2vibH<)F z?>5!x)eQy?Cm0y`_hhWszw%G>hxx&4Qci!|KeA0<@T#hJOR>bPw=O=v-Df0Lnu+%q z9@-cr7gAHV_teQ&?EYQ#=csyjiMPgyw5>9=9efT4JaW@z}+Ify>rY zWl{$7s~!1k)~(ai&0VKFE!&OTNV_d#<`koLhNqrE9PEpY#76m&%iA^$2w8YZkpezia*$j*pjWjO)2F0<){;&HcMR zTXX;1wK;Ev{Ix=MDd~PXwJy+o3e%*U=Pvj%)aHhy?BCS%PMY(ba^JHj)~>=9LLSP; zK6Uv;=(!bGoH!r#U`aA8D#oeaqz1w@2 zH27V$kkw#*r3EfL*SGvL{FCyd|Dk`!uYHXRvi>uqZrJ+Ue!Be42erE&^xl3}akDS7 z^U1%dkJBpW>aePYt;#je)xEiIt=zZJsbOcbtxTePwO?09y)5zH`8`$iGy9vDAGwdo zS^sBfY5ym**ZJ-J#NXdT#9=^X1W={STiXvQ>YiHuLd+2BDLy zvZ}&6AAI!N%Q|m)_KLeM*B(hXKjqi(d@?2Ys#lT4iC0zz61OT&2_6aZbql{=D;=v> z^h`o(hK|dIt5HS0+ir)<4}SMc`|*3Onu?Egt3RxM*mJ9FF5Ak-`Eoy}UF4o__HDt9 z)w5@>?9w*7u<`w^=1F&wm!`h9-=coBmiq|zhkK6??JB+A6CSd8!{4h{Rxdxxw>a14 zLX7gRP61_yds&+%H!#+Yh#kv_FbFGWJ&@oby7fcQ%|DtStsli7=CyiMX=A_8Y;xstXPZlYxo(SDdQH4O z8JnH`_%2kvXBNY+vaX-f-v0Y9>Wb``4}R^dDvW~7T5adpC#C6~eWJzcaLg%YQ)Am5?-ZFi*AJMB zT@SC{y!QHAms0JAj}KO=trR_f>$#viPgQ3_WC!!lIQL0rQ*NKMnRkWpSE6gB{c-J? zZ~t*synA=ey(#01uIt4sQ%e(bo(Q-rbp3grFX#CnbldfRg3fDRlvkOzs_(tN;Of&I z0{1+NMG7MC+>VYt@mB5h^v^sUi)d~!N@4tCn`a4k8>qo_hIL}qC#ou-w z2|O&fC_yZV;a~W~C%sF}KKZL}WvH7G%DMi{+I6{a-svfKJ$ke0u=I}bDU04EbooWJ zvdl?mp7rDUx49q1);`wNKC++xk72ED>-<)e=()u)J6q4>KU>1D+S-wLB2%{JCHr>) zovTd3YeMl}tAa(;hWTDHk3o^`O|P9$K6Xg%kK!>F2N6aywFgt8~ZP z+=bFhriF7#@rR`;Fn(RV^+BD`zWqPWf4CmA;iK!b*43H6?(W&P(SKo#w~3nNqg$sH zraHUpr0yzx;Sqc^?(dvG-qnx(Gc?KZT`yHPy1TdQpz*x*s;f-B*MVD-HUhd8^FQm7cBm6+_8s~%u9||guTK`r* zD*r|HKf}q47tH@57x)aC=Ha^JV|McY8CtdzJQ_3AKWu5s09)|kQaOL-ZhAI31y{xA)xM|M=z-Z+!Be-M2Gu?;oqWz9lejo3ZK9q(_T8<{L$4On;i(*Cy60 zcGu$8zvbt}?AdI*SHJ!xxAUX_G2cfsY)q~0-iUBal$)Eey|8KHd9C)DPclAFIo+^) zen4>i59`OOAL~16fa)ZH=hx2F01Fm06 zT_61pAF|{B!*{8UFU#u6EZ)y|B3_m4irrG+DJQ4@=EXd-@(E_L%hL4^hNo?PI)i#q?W7ajpgWdUAzIi~W|$DJlkV8*L9_t#x%}D3s&+ z;5YNZe)fzyzSiC^RJ+^5_Vf^@XQN?tp%lnk=W(Q;trVGVsy%G|irm}ldrrDq68HED22SmSyif$9<_U867$vAc~S~u?f`PefXBUbHL zwP}6F)Fzp&v!6wr*Qou646RVUo6W=Gq0@+7z`bz2;RL z7M+XuD)VgL!bQ8z2_G}xH<&-5dIzm4f5!zEc&=ccDFcZfQh7j}2e^UCfGrtz1>HsX}d6w72TU&HkGgx(FVSi=VkE^3Fz` zN?YyQ84LL3e@y+bD_+WTLAIUrRr`n1ANgC?&3o;?C%SY;Z_N`!e~}5(d@r7A=WPo< zpzv*7{o!~Ho5+WEz2b%VrA%)9+q&xZ{nyi#4ypG2x^zvMC(O_#a!=J=rSVb70-10wM z{hqTT`QSf+4{|%z`j=ItWz=0*pD%m*{;gwcR9bItd^%I+yn;i$tE}T!E5WcE=OuiQ}w2o z9FqCF@6e+g(PssJ9-nqIbduT6Kiec3=4HP)rNR7sJ=-7MA1fbrZt2zg{U~PF^mdap zN7;>+75hF_Bt5c7-+k})6b5FaV`~nt6g|yD_y4V_g|4%#W>TYJP_gGG(apIg((IXY^54&rWejIXvR@zvb`jcX?ODexLgE=Um;p zv$xx0Z&!zVKeBI&`nK@#U-w7)ZF}5Ia{Zn=H@h{L&bqV4m-lh3WQ6sK(t=|~Gg$a% zSXdn266hdr@?swIwSRm+iXX}M*WCZ%@yB<)>$lC>OEaHc6PtI9%|p5An%UIu-7+VB zcP158g)gWP{1AHl@cx#6;vZ5U9KAO?S?Uf$5$lnelM?s~RMHr(uO2*&2~eX2wLyVA YSjABP|Jq<1|9}+A!*t*a&p^~o0Ql8rjsO4v diff --git a/docs/images/tpch.png b/docs/images/tpch.png new file mode 100644 index 0000000000000000000000000000000000000000..41cba63a582b53d36094f169dc96a4f55595bca3 GIT binary patch literal 81771 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 %F57JLPU3}60tnuetb)ruS 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 literal 0 HcmV?d00001 diff --git a/docs/sidebars.json b/docs/sidebars.json index eb3ce2ba7f..297940c885 100644 --- a/docs/sidebars.json +++ b/docs/sidebars.json @@ -1068,6 +1068,14 @@ "faq/data-faq", "faq/sql-faq" ] + }, + { + "type": "category", + "label": "Benchmark", + "items": [ + "benchmark/ssb", + "benchmark/tpch" + ] } ] } diff --git a/docs/zh-CN/docs/benchmark/ssb.md b/docs/zh-CN/docs/benchmark/ssb.md index 701de4aa59..b775d75690 100644 --- a/docs/zh-CN/docs/benchmark/ssb.md +++ b/docs/zh-CN/docs/benchmark/ssb.md @@ -1,6 +1,6 @@ --- { - "title": "Star-Schema-Benchmark 测试", + "title": "Star-Schema-Benchmark", "language": "zh-CN" } --- @@ -28,15 +28,21 @@ under the License. [Star Schema Benchmark(SSB)](https://www.cs.umb.edu/~poneil/StarSchemaB.PDF) 是一个轻量级的数仓场景下的性能测试集。SSB 基于 [TPC-H](http://www.tpc.org/tpch/) 提供了一个简化版的星型模型数据集,主要用于测试在星型模型下,多表关联查询的性能表现。另外,业界内通常也会将 SSB 打平为宽表模型(以下简称:SSB flat),来测试查询引擎的性能,参考[Clickhouse](https://clickhouse.com/docs/zh/getting-started/example-datasets/star-schema)。 -本文档主要介绍 Doris 在 SSB 测试集上的性能表现。 +本文档主要介绍Apache Doris 在 SSB 100G 测试集上的性能表现。 > 注 1:包括 SSB 在内的标准测试集通常和实际业务场景差距较大,并且部分测试会针对测试集进行参数调优。所以标准测试集的测试结果仅能反映数据库在特定场景下的性能表现。建议用户使用实际业务数据进行进一步的测试。 > > 注 2:本文档涉及的操作都在 Ubuntu Server 20.04 环境进行,CentOS 7 也可测试。 -在 SSB 标准测试数据集上的 13 个查询上,我们对即将发布的 Doris 1.1 版本和 Doris 0.15.0 RC04 版本进行了对别测试,整体性能提升了 2-3 倍。 +在 SSB 标准测试数据集上的 13 个查询上,我们基于 Apache Doris 1.2.0-rc01, Apache Doris 1.1.3 及 Apache Doris 0.15.0 RC04 版本进行了对别测试。 -![ssb_v11_v015_compare](/images/ssb_v11_v015_compare.png) +在 SSB FlAT 宽表上, Apache Doris 1.2.0-rc01上相对 Apache Doris 1.1.3 整体性能提升了将近4倍,相对于 Apache Doris 0.15.0 RC04 ,性能提升了将近10倍 。 + +![ssb_v11_v015_compare](/images/ssb_flat.png) + +在标准的 SSB 测试SQL上, Apache Doris 1.2.0-rc01 上相对 Apache Doris 1.1.3 整体性能提升了将近2倍,相对于 Apache Doris 0.15.0 RC04 ,性能提升了将近 31 倍 。 + +![ssb_12_11_015](/images/ssb.png) ## 1. 硬件环境 @@ -51,128 +57,146 @@ under the License. - Doris 部署 3BE 1FE; - 内核版本:Linux version 5.4.0-96-generic (buildd@lgw01-amd64-051) -- 操作系统版本:Ubuntu Server 20.04 LTS 64 位 -- Doris 软件版本:Apache Doris 1.1 、Apache Doris 0.15.0 RC04 +- 操作系统版本:Ubuntu Server 20.04 LTS 64位 +- Doris 软件版本: Apache Doris 1.2.0-rc01、Apache Doris 1.1.3 及 Apache Doris 0.15.0 RC04 - JDK:openjdk version "11.0.14" 2022-01-18 ## 3. 测试数据量 | SSB表名 | 行数 | 备注 | | :------------- | :--------- | :--------------- | -| lineorder | 600,037,902 | 商品订单明细表表 | -| customer | 3,000,000 | 客户信息表 | -| part | 1,400,000 | 零件信息表 | +| lineorder | 600,037,902 | 商品订单明细表表 | +| customer | 3,000,000 | 客户信息表 | +| part | 1,400,000 | 零件信息表 | | supplier | 200,000 | 供应商信息表 | -| date | 2,556 | 日期表 | -| lineorder_flat | 600,037,902 | 数据展平后的宽表 | +| date | 2,556 | 日期表 | +| lineorder_flat | 600,037,902 | 数据展平后的宽表 | -## 4. 测试结果 +## 4. SSB 宽表测试结果 -这里我们使用即将发布的 Doris-1.1 版本和 Doris-0.15.0 RC04 版本进行对比测试,测试结果如下: +这里我们使用 Apache Doris 1.2.0-rc01、 Apache Doris 1.1.3 及 Apache Doris 0.15.0 RC04 版本进行对比测试,测试结果如下: -| Query | Doris-1.1(ms) | Doris-0.15.0 RC04(ms) | -| ----- | ------------- | --------------------- | -| Q1.1 | 90 | 250 | -| Q1.2 | 10 | 30 | -| Q1.3 | 70 | 120 | -| Q2.1 | 360 | 900 | -| Q2.2 | 340 | 1020 | -| Q2.3 | 260 | 770 | -| Q3.1 | 550 | 1710 | -| Q3.2 | 290 | 670 | -| Q3.3 | 240 | 550 | -| Q3.4 | 20 | 30 | -| Q4.1 | 480 | 1250 | -| Q4.2 | 240 | 400 | -| Q4.3 | 200 | 330 | + +| Query | Apache Doris 1.2.0-rc01(ms) | Apache Doris 1.1.3(ms) | Apache Doris 0.15.0 RC04(ms) | +| ----- | ------------- | ------------- | ----------------- | +| Q1.1 | 20 | 90 | 250 | +| Q1.2 | 10 | 10 | 30 | +| Q1.3 | 30 | 70 | 120 | +| Q2.1 | 90 | 360 | 900 | +| Q2.2 | 90 | 340 | 1020 | +| Q2.3 | 60 | 260 | 770 | +| Q3.1 | 160 | 550 | 1710 | +| Q3.2 | 80 | 290 | 670 | +| Q3.3 | 90 | 240 | 550 | +| Q3.4 | 20 | 20 | 30 | +| Q4.1 | 140 | 480 | 1250 | +| Q4.2 | 50 | 240 | 400 | +| Q4.3 | 30 | 200 | 330 | +| 合计 | 880 | 3150 | 8030 | **结果说明** - 测试结果对应的数据集为 scale 100, 约 6 亿条。 - 测试环境配置为用户常用配置,云服务器 4 台,16 核 64G SSD,1 FE 3 BE 部署。 - 选用用户常见配置测试以降低用户选型评估成本,但整个测试过程中不会消耗如此多的硬件资源。 -- 测试结果为 3 次执行取平均值。并且数据经过充分的 compaction(如果在刚导入数据后立刻测试,则查询延迟可能高于本测试结果,compaction 的速度正在持续优化中,未来会显著降低)。 -## 5. 环境准备 +## 5. 标准 SSB 测试结果 -请先参照 [官方文档](../install/install-deploy.md) 进行 Doris 的安装部署,以获得一个正常运行中的 Doris 集群(至少包含 1 FE 1 BE,推荐 1 FE 3 BE)。 +这里我们使用 Apache Doris 1.2.0-rc01、Apache Doris 1.1.3 及 Apache Doris 0.15.0 RC04 版本进行对比测试,测试结果如下: -可修改 BE 的配置文件 be.conf 添加以下配置项,重启 BE,以获得更好的查询性能。 +| Query | Apache Doris 1.2.0-rc01(ms) | Apache Doris 1.1.3 (ms) | Apache Doris 0.15.0 RC04(ms) | +| ----- | ------- | ---------------------- | ------------------------------- | +| Q1.1 | 40 | 18 | 350 | +| Q1.2 | 30 | 100 | 80 | +| Q1.3 | 20 | 70 | 80 | +| Q2.1 | 350 | 940 | 20680 | +| Q2.2 | 320 | 750 | 18250 | +| Q2.3 | 300 | 720 | 14760 | +| Q3.1 | 650 | 2150 | 22190 | +| Q3.2 | 260 | 510 | 8360 | +| Q3.3 | 220 | 450 | 6200 | +| Q3.4 | 60 | 70 | 160 | +| Q4.1 | 840 | 1480 | 24320 | +| Q4.2 | 460 | 560 | 6310 | +| Q4.3 | 610 | 660 | 10170 | +| 合计 | 4160 | 8478 | 131910 | -```shell -enable_storage_vectorization=true -enable_low_cardinality_optimize=true -``` +**结果说明** -以下文档中涉及的脚本都存放在 Doris 代码库的 `tools/ssb-tools/` 下。 +- 测试结果对应的数据集为scale 100, 约6亿条。 +- 测试环境配置为用户常用配置,云服务器4台,16核 64G SSD,1 FE 3 BE 部署。 +- 选用用户常见配置测试以降低用户选型评估成本,但整个测试过程中不会消耗如此多的硬件资源。 -> **注意:** -> -> 上面这两个参数在 0.15.0 RC04 版本里没有这两个参数,不需要配置。 -## 6. 数据准备 +## 6. 环境准备 -### 6.1 下载安装 SSB 数据生成工具。 +请先参照 [官方文档](../install/install-deploy.md) 进行 Apache Doris 的安装部署,以获得一个正常运行中的 Doris 集群(至少包含 1 FE 1 BE,推荐 1 FE 3 BE)。 + +以下文档中涉及的脚本都存放在 Apache Doris 代码库:[ssb-tools](https://github.com/apache/doris/tree/master/tools/ssb-tools) + +## 7. 数据准备 + +### 7.1 下载安装 SSB 数据生成工具。 执行以下脚本下载并编译 [ssb-dbgen](https://github.com/electrum/ssb-dbgen.git) 工具。 ```shell -bash bin/build-ssb-dbgen.sh +sh build-ssb-dbgen.sh ``` -安装成功后,将在 `bin/ssb-dbgen/` 目录下生成 `dbgen` 二进制文件。 +安装成功后,将在 `ssb-dbgen/` 目录下生成 `dbgen` 二进制文件。 -### 6.2 生成 SSB 测试集 +### 7.2 生成 SSB 测试集 执行以下脚本生成 SSB 数据集: ```shell -bash bin/gen-ssb-data.sh +sh gen-ssb-data.sh -s 100 -c 100 ``` -> 注 1:通过 `bash bin/gen-ssb-data.sh -h` 查看脚本帮助,默认 scale factor 为 100(简称 sf100),默认生成 10 个数据文件,即 `bash bin/gen-ssb-data.sh -s 100 -c 10`,耗时数分钟。 +> 注1:通过 `sh gen-ssb-data.sh -h` 查看脚本帮助。 > -> 注 2:数据会以 `.tbl` 为后缀生成在 `bin/ssb-data/` 目录下。文件总大小约 60GB。生成时间可能在数分钟到 1 小时不等,生成完成后会列出生成文件的信息。 +> 注2:数据会以 `.tbl` 为后缀生成在 `ssb-data/` 目录下。文件总大小约60GB。生成时间可能在数分钟到1小时不等。 > -> 注 3:`-s 100` 表示测试集大小系数为 100,`-c 10` 表示并发 10 个线程生成 lineorder 表的数据。`-c` 参数也决定了最终 lineorder 表的文件数量。参数越大,文件数越多,每个文件越小。测试 sf100 用默认参数即可,测试 sf1000 用 `-s 1000 -c 100` 。 +> 注3:`-s 100` 表示测试集大小系数为 100,`-c 100` 表示并发100个线程生成 lineorder 表的数据。`-c` 参数也决定了最终 lineorder 表的文件数量。参数越大,文件数越多,每个文件越小。 在 `-s 100` 参数下,生成的数据集大小为: | Table | Rows | Size | File Number | | --------- | ---------------- | ---- | ----------- | -| lineorder | 6亿(600037902) | 60GB | 10 | +| lineorder | 6亿(600037902) | 60GB | 100 | | customer | 300万(3000000) | 277M | 1 | | part | 140万(1400000) | 116M | 1 | | supplier | 20万(200000) | 17M | 1 | -| dates | 2556 | 228K | 1 | +| date | 2556 | 228K | 1 | -### 6.3 建表 +### 7.3 建表 -#### 6.3.1 准备 `conf/doris-cluster.conf` 文件。 +#### 7.3.1 准备 `doris-cluster.conf` 文件。 -在调用导入脚本前,需要将 FE 的 ip 端口等信息写在 `conf/doris-cluster.conf` 文件中。 +在调用导入脚本前,需要将 FE 的 ip 端口等信息写在 `doris-cluster.conf` 文件中。 -文件内容包括 FE 的 ip,HTTP 端口,用户名,密码(默认为空)以及待导入数据的 DB 名称: +文件位置和 `load-ssb-dimension-data.sh` 平级。 + +文件内容包括 FE 的 ip,HTTP 端口,用户名,密码以及待导入数据的 DB 名称: ```shell -export FE_HOST="127.0.0.1" +export FE_HOST="xxx" export FE_HTTP_PORT="8030" export FE_QUERY_PORT="9030" export USER="root" -export PASSWORD="" +export PASSWORD='xxx' export DB="ssb" ``` -#### 6.3.2 执行以下脚本生成创建 SSB 表: +#### 7.3.2 执行以下脚本生成创建 SSB 表: ```shell -bash bin/create-ssb-tables.sh +sh create-ssb-tables.sh ``` +或者复制 [create-ssb-tables.sql](https://github.com/apache/incubator-doris/tree/master/tools/ssb-tools/ddl/create-ssb-tables.sql) 和 [create-ssb-flat-table.sql](https://github.com/apache/incubator-doris/tree/master/tools/ssb-tools/ddl/create-ssb-flat-table.sql) 中的建表语句,在 MySQL 客户端中执行。 -或者复制 [create-ssb-tables.sql](https://github.com/apache/doris/tree/master/tools/ssb-tools/ddl/create-ssb-tables.sql) 中的建表语句,在 Doris 中执行。 -复制 [create-ssb-flat-table.sql](https://github.com/apache/doris/tree/master/tools/ssb-tools/ddl/create-ssb-flat-table.sql) 中的建表语句,在 Doris 中执行。 - -下面是 `lineorder_flat` 表建表语句。在上面的 `bin/create-ssb-table.sh` 脚本中创建"lineorder_flat"表,并进行了默认分桶数(48 个桶)。您可以删除该表,根据您的集群规模节点配置对这个分桶数进行调整,这样可以获取到更好的一个测试效果。 +下面是 `lineorder_flat` 表建表语句。在上面的 `create-ssb-flat-table.sh` 脚本中创建 `lineorder_flat` 表,并进行了默认分桶数(48个桶)。您可以删除该表,根据您的集群规模节点配置对这个分桶数进行调整,这样可以获取到更好的一个测试效果。 ```sql CREATE TABLE `lineorder_flat` ( @@ -234,27 +258,31 @@ PROPERTIES ( ); ``` -### 6.4 导入数据 +### 7.4 导入数据 + +我们使用以下命令完成 SSB 测试集所有数据导入及 SSB FLAT 宽表数据合成并导入到表里。 -下面的脚本根据 `conf/doris-cluster.conf` 中的参数连接 Doirs 进行导入,单线程导入数据量较小的 4 张维度表(customer, part, supplier and date),并发导入 1 张事实表(lineorder),以及采用 'INSERT INTO ... SELECT ... ' 的方式导入宽表(lineorder_flat)。 ```shell -bash bin/load-ssb-data.sh +sh bin/load-ssb-data.sh -c 10 ``` -> 注 1:通过 `bash bin/load-ssb-data.sh -h` 查看脚本帮助, 默认 5 线程并发导入 lineorder,即 `-c 5` 。如果开启更多线程,可以加快导入速度,但会增加额外的内存开销。 -> -> 注 2:为获得更快的导入速度,你可以在 be.conf 中添加 `flush_thread_num_per_store=5` 后重启 BE。该配置表示每个数据目录的写盘线程数,默认为 2。较大的数据可以提升写数据吞吐,但可能会增加 IO Util。(参考值:1 块机械磁盘,在默认为 2 的情况下,导入过程中的 IO Util 约为 12%,设置为 5 时,IO Util 约为 26%。如果是 SSD 盘,则几乎为 0)。 -> -> 注 3:导入 customer, part, supplier, date 及 lineorder 表耗时 389s,打平到 lineorder_flat 耗时 740s. +`-c 5` 表示启动 10 个并发线程导入(默认为 5)。在单 BE 节点情况下,由 `sh gen-ssb-data.sh -s 100 -c 100` 生成的 lineorder 数据,同时会在最后生成ssb-flat表的数据,如果开启更多线程,可以加快导入速度,但会增加额外的内存开销。 -### 6.5 检查导入数据 +> 注: +> +> 1. 为获得更快的导入速度,你可以在 be.conf 中添加 `flush_thread_num_per_store=5` 后重启BE。该配置表示每个数据目录的写盘线程数,默认为2。较大的数据可以提升写数据吞吐,但可能会增加 IO Util。(参考值:1块机械磁盘,在默认为2的情况下,导入过程中的 IO Util 约为12%,设置为5时,IO Util 约为26%。如果是 SSD 盘,则几乎为 0)。 +> +> 2. flat 表数据采用 'INSERT INTO ... SELECT ... ' 的方式导入。 + + +### 7.5 检查导入数据 ```sql select count(*) from part; select count(*) from customer; select count(*) from supplier; -select count(*) from dates; +select count(*) from date; select count(*) from lineorder; select count(*) from lineorder_flat; ``` @@ -268,19 +296,17 @@ select count(*) from lineorder_flat; | customer | 300万(3000000) | 277 MB | 138.247 MB | | part | 140万(1400000) | 116 MB | 12.759 MB | | supplier | 20万(200000) | 17 MB | 9.143 MB | -| dates | 2556 | 228 KB | 34.276 KB | +| date | 2556 | 228 KB | 34.276 KB | -### 6.6 查询测试 +### 7.6 查询测试 -#### 6.6.1 测试脚本 +SSB-FlAT 查询语句 :[ssb-flat-queries](https://github.com/apache/doris/tree/master/tools/ssb-tools/ssb-flat-queries) -下面脚本根据 `conf/doris-cluster.conf` 中的参数连接 Doris,执行查询前会先打印出各表的数据行数。 -```shell -bash bin/run-ssb-flat-queries.sh -``` +标准 SSB 查询语句 :[ssb-queries](https://github.com/apache/doris/tree/master/tools/ssb-tools/ssb-queries) + +#### 7.6.1 SSB FLAT 测试 SQL -#### 6.6.2 测试 SQL ```sql --Q1.1 @@ -366,3 +392,222 @@ WHERE S_NATION = 'UNITED STATES' AND LO_ORDERDATE >= 19970101 AND LO_ORDERDATE < GROUP BY YEAR, S_CITY, P_BRAND ORDER BY YEAR ASC, S_CITY ASC, P_BRAND ASC; ``` + + + +#### **7.6.2 SSB 标准测试 SQL** + +```sql +--Q1.1 +SELECT SUM(lo_extendedprice * lo_discount) AS REVENUE +FROM lineorder, dates +WHERE + lo_orderdate = d_datekey + AND d_year = 1993 + AND lo_discount BETWEEN 1 AND 3 + AND lo_quantity < 25; +--Q1.2 +SELECT SUM(lo_extendedprice * lo_discount) AS REVENUE +FROM lineorder, dates +WHERE + lo_orderdate = d_datekey + AND d_yearmonth = 'Jan1994' + AND lo_discount BETWEEN 4 AND 6 + AND lo_quantity BETWEEN 26 AND 35; + +--Q1.3 +SELECT + SUM(lo_extendedprice * lo_discount) AS REVENUE +FROM lineorder, dates +WHERE + lo_orderdate = d_datekey + AND d_weeknuminyear = 6 + AND d_year = 1994 + AND lo_discount BETWEEN 5 AND 7 + AND lo_quantity BETWEEN 26 AND 35; + +--Q2.1 +SELECT SUM(lo_revenue), d_year, p_brand +FROM lineorder, dates, part, supplier +WHERE + lo_orderdate = d_datekey + AND lo_partkey = p_partkey + AND lo_suppkey = s_suppkey + AND p_category = 'MFGR#12' + AND s_region = 'AMERICA' +GROUP BY d_year, p_brand +ORDER BY p_brand; + +--Q2.2 +SELECT SUM(lo_revenue), d_year, p_brand +FROM lineorder, dates, part, supplier +WHERE + lo_orderdate = d_datekey + AND lo_partkey = p_partkey + AND lo_suppkey = s_suppkey + AND p_brand BETWEEN 'MFGR#2221' AND 'MFGR#2228' + AND s_region = 'ASIA' +GROUP BY d_year, p_brand +ORDER BY d_year, p_brand; + +--Q2.3 +SELECT SUM(lo_revenue), d_year, p_brand +FROM lineorder, dates, part, supplier +WHERE + lo_orderdate = d_datekey + AND lo_partkey = p_partkey + AND lo_suppkey = s_suppkey + AND p_brand = 'MFGR#2239' + AND s_region = 'EUROPE' +GROUP BY d_year, p_brand +ORDER BY d_year, p_brand; + +--Q3.1 +SELECT + c_nation, + s_nation, + d_year, + SUM(lo_revenue) AS REVENUE +FROM customer, lineorder, supplier, dates +WHERE + lo_custkey = c_custkey + AND lo_suppkey = s_suppkey + AND lo_orderdate = d_datekey + AND c_region = 'ASIA' + AND s_region = 'ASIA' + AND d_year >= 1992 + AND d_year <= 1997 +GROUP BY c_nation, s_nation, d_year +ORDER BY d_year ASC, REVENUE DESC; + +--Q3.2 +SELECT + c_city, + s_city, + d_year, + SUM(lo_revenue) AS REVENUE +FROM customer, lineorder, supplier, dates +WHERE + lo_custkey = c_custkey + AND lo_suppkey = s_suppkey + AND lo_orderdate = d_datekey + AND c_nation = 'UNITED STATES' + AND s_nation = 'UNITED STATES' + AND d_year >= 1992 + AND d_year <= 1997 +GROUP BY c_city, s_city, d_year +ORDER BY d_year ASC, REVENUE DESC; + +--Q3.3 +SELECT + c_city, + s_city, + d_year, + SUM(lo_revenue) AS REVENUE +FROM customer, lineorder, supplier, dates +WHERE + lo_custkey = c_custkey + AND lo_suppkey = s_suppkey + AND lo_orderdate = d_datekey + AND ( + c_city = 'UNITED KI1' + OR c_city = 'UNITED KI5' + ) + AND ( + s_city = 'UNITED KI1' + OR s_city = 'UNITED KI5' + ) + AND d_year >= 1992 + AND d_year <= 1997 +GROUP BY c_city, s_city, d_year +ORDER BY d_year ASC, REVENUE DESC; + +--Q3.4 +SELECT + c_city, + s_city, + d_year, + SUM(lo_revenue) AS REVENUE +FROM customer, lineorder, supplier, dates +WHERE + lo_custkey = c_custkey + AND lo_suppkey = s_suppkey + AND lo_orderdate = d_datekey + AND ( + c_city = 'UNITED KI1' + OR c_city = 'UNITED KI5' + ) + AND ( + s_city = 'UNITED KI1' + OR s_city = 'UNITED KI5' + ) + AND d_yearmonth = 'Dec1997' +GROUP BY c_city, s_city, d_year +ORDER BY d_year ASC, REVENUE DESC; + +--Q4.1 +SELECT /*+SET_VAR(parallel_fragment_exec_instance_num=4, enable_vectorized_engine=true, batch_size=4096, enable_cost_based_join_reorder=true, enable_projection=true) */ + d_year, + c_nation, + SUM(lo_revenue - lo_supplycost) AS PROFIT +FROM dates, customer, supplier, part, lineorder +WHERE + lo_custkey = c_custkey + AND lo_suppkey = s_suppkey + AND lo_partkey = p_partkey + AND lo_orderdate = d_datekey + AND c_region = 'AMERICA' + AND s_region = 'AMERICA' + AND ( + p_mfgr = 'MFGR#1' + OR p_mfgr = 'MFGR#2' + ) +GROUP BY d_year, c_nation +ORDER BY d_year, c_nation; + +--Q4.2 +SELECT /*+SET_VAR(parallel_fragment_exec_instance_num=2, enable_vectorized_engine=true, batch_size=4096, enable_cost_based_join_reorder=true, enable_projection=true) */ + d_year, + s_nation, + p_category, + SUM(lo_revenue - lo_supplycost) AS PROFIT +FROM dates, customer, supplier, part, lineorder +WHERE + lo_custkey = c_custkey + AND lo_suppkey = s_suppkey + AND lo_partkey = p_partkey + AND lo_orderdate = d_datekey + AND c_region = 'AMERICA' + AND s_region = 'AMERICA' + AND ( + d_year = 1997 + OR d_year = 1998 + ) + AND ( + p_mfgr = 'MFGR#1' + OR p_mfgr = 'MFGR#2' + ) +GROUP BY d_year, s_nation, p_category +ORDER BY d_year, s_nation, p_category; + +--Q4.3 +SELECT /*+SET_VAR(parallel_fragment_exec_instance_num=2, enable_vectorized_engine=true, batch_size=4096, enable_cost_based_join_reorder=true, enable_projection=true) */ + d_year, + s_city, + p_brand, + SUM(lo_revenue - lo_supplycost) AS PROFIT +FROM dates, customer, supplier, part, lineorder +WHERE + lo_custkey = c_custkey + AND lo_suppkey = s_suppkey + AND lo_partkey = p_partkey + AND lo_orderdate = d_datekey + AND s_nation = 'UNITED STATES' + AND ( + d_year = 1997 + OR d_year = 1998 + ) + AND p_category = 'MFGR#14' +GROUP BY d_year, s_city, p_brand +ORDER BY d_year, s_city, p_brand; +``` diff --git a/docs/zh-CN/docs/benchmark/tpch.md b/docs/zh-CN/docs/benchmark/tpch.md index 66499eb4a7..7f9d12f855 100644 --- a/docs/zh-CN/docs/benchmark/tpch.md +++ b/docs/zh-CN/docs/benchmark/tpch.md @@ -1,6 +1,6 @@ --- { - "title": "TPC-H benchmark", + "title": "TPC-H Benchmark", "language": "zh-CN" } --- @@ -24,19 +24,19 @@ specific language governing permissions and limitations under the License. --> -# TPC-H benchmark +# TPC-H Benchmark TPC-H是一个决策支持基准(Decision Support Benchmark),它由一套面向业务的特别查询和并发数据修改组成。查询和填充数据库的数据具有广泛的行业相关性。这个基准测试演示了检查大量数据、执行高度复杂的查询并回答关键业务问题的决策支持系统。TPC-H报告的性能指标称为TPC-H每小时复合查询性能指标(QphH@Size),反映了系统处理查询能力的多个方面。这些方面包括执行查询时所选择的数据库大小,由单个流提交查询时的查询处理能力,以及由多个并发用户提交查询时的查询吞吐量。 -本文档主要介绍 Doris 在 TPC-H 测试集上的性能表现。 +本文档主要介绍 Doris 在 TPC-H 100G 测试集上的性能表现。 > 注1:包括 TPC-H 在内的标准测试集通常和实际业务场景差距较大,并且部分测试会针对测试集进行参数调优。所以标准测试集的测试结果仅能反映数据库在特定场景下的性能表现。建议用户使用实际业务数据进行进一步的测试。 > > 注2:本文档涉及的操作都在 CentOS 7.x 上进行测试。 -在 TPC-H 标准测试数据集上的 22 个查询上,我们对即将发布的 Doris 1.1 版本和 Doris 0.15.0 RC04 版本进行了对别测试,整体性能提升了 3-4 倍。个别场景下达到十几倍的提升。 +在 TPC-H 标准测试数据集上的 22 个查询上,我们基于 Apache Doris 1.2.0-rc01, Apache Doris 1.1.3 及 Apache Doris 0.15.0 RC04 版本进行了对别测试, Apache Doris 1.2.0-rc01上相对 Apache Doris 1.1.3 整体性能提升了将近 3 倍,相对于 Apache Doris 0.15.0 RC04 ,性能提升了将近 11 倍 。 -![image-20220614114351241](/images/image-20220614114351241.png) +![image-20220614114351241](/images/tpch.png) ## 1. 硬件环境 @@ -53,12 +53,12 @@ TPC-H是一个决策支持基准(Decision Support Benchmark),它由一套 - Doris部署 3BE 1FE; - 内核版本:Linux version 5.4.0-96-generic (buildd@lgw01-amd64-051) - 操作系统版本:CentOS 7.8 -- Doris 软件版本:Apache Doris 1.1 、Apache Doris 0.15.0 RC04 +- Doris 软件版本: Apache Doris 1.2.0-rc01、 Apache Doris 1.1.3 、 Apache Doris 0.15.0 RC04 - JDK:openjdk version "11.0.14" 2022-01-18 ## 3. 测试数据量 -整个测试模拟生成100G的数据分别导入到 Doris 0.15.0 RC04 和 Doris 1.1 版本进行测试,下面是表的相关说明及数据量。 +整个测试模拟生成 TPCH 100G 的数据分别导入到 Apache Doris 1.2.0-rc01, Apache Doris 1.1.3 及 Apache Doris 0.15.0 RC04 版本进行测试,下面是表的相关说明及数据量。 | TPC-H表名 | 行数 | 导入后大小 | 备注 | | :-------- | :----- | ---------- | :----------- | @@ -73,11 +73,11 @@ TPC-H是一个决策支持基准(Decision Support Benchmark),它由一套 ## 4. 测试SQL -TPCH 22个测试查询语句 : [TPCH-Query-SQL](https://github.com/apache/doris/tree/master/tools/tpch-tools/queries) +TPCH 22 个测试查询语句 : [TPCH-Query-SQL](https://github.com/apache/incubator-doris/tree/master/tools/tpch-tools/queries) **注意:** -以上SQL中的以下四个参数在0.15.0 RC04中不存在,在0.15.0 RC04中执行的时候,去掉: +以上 SQL 中的以下四个参数在 Apache Doris 0.15.0 RC04 中不存在,在执行的时候,去掉: ``` 1. enable_vectorized_engine=true, @@ -86,45 +86,42 @@ TPCH 22个测试查询语句 : [TPCH-Query-SQL](https://github.com/apache/dori 4. enable_projection=true ``` - - ## 5. 测试结果 -这里我们使用即将发布的 Doris-1.1版本和 Doris-0.15.0 RC04 版本进行对比测试,测试结果如下: +这里我们使用 Apache Doris 1.2.0-rc01, Apache Doris 1.1.3 及 Apache Doris 0.15.0 RC04 版本进行对比测试,测试结果如下: -| Query | Doris-1.1(s) | 0.15.0 RC04(s) | -| --------- | ------------ | -------------- | -| Q1 | 3.75 | 28.63 | -| Q2 | 4.22 | 7.88 | -| Q3 | 2.64 | 9.39 | -| Q4 | 1.5 | 9.3 | -| Q5 | 2.15 | 4.11 | -| Q6 | 0.19 | 0.43 | -| Q7 | 1.04 | 1.61 | -| Q8 | 1.75 | 50.35 | -| Q9 | 7.94 | 16.34 | -| Q10 | 1.41 | 5.21 | -| Q11 | 0.35 | 1.72 | -| Q12 | 0.57 | 5.39 | -| Q13 | 8.15 | 20.88 | -| Q14 | 0.3 | | -| Q15 | 0.66 | 1.86 | -| Q16 | 0.79 | 1.32 | -| Q17 | 1.51 | 26.67 | -| Q18 | 3.364 | 11.77 | -| Q19 | 0.829 | 1.71 | -| Q20 | 2.77 | 5.2 | -| Q21 | 4.47 | 10.34 | -| Q22 | 0.9 | 3.22 | -| **total** | **51.253** | **223.33** | +| Query | Apache Doris 1.2.0-rc01 (s) | Apache Doris 1.1.3 (s) | Apache Doris 0.15.0 RC04 (s) | +| -------- | --------------------------- | ---------------------- | ---------------------------- | +| Q1 | 2.12 | 3.75 | 28.63 | +| Q2 | 0.20 | 4.22 | 7.88 | +| Q3 | 0.62 | 2.64 | 9.39 | +| Q4 | 0.61 | 1.5 | 9.3 | +| Q5 | 1.05 | 2.15 | 4.11 | +| Q6 | 0.08 | 0.19 | 0.43 | +| Q7 | 0.58 | 1.04 | 1.61 | +| Q8 | 0.72 | 1.75 | 50.35 | +| Q9 | 3.61 | 7.94 | 16.34 | +| Q10 | 1.26 | 1.41 | 5.21 | +| Q11 | 0.15 | 0.35 | 1.72 | +| Q12 | 0.21 | 0.57 | 5.39 | +| Q13 | 2.62 | 8.15 | 20.88 | +| Q14 | 0.16 | 0.3 | | +| Q15 | 0.30 | 0.66 | 1.86 | +| Q16 | 0.38 | 0.79 | 1.32 | +| Q17 | 0.65 | 1.51 | 26.67 | +| Q18 | 2.28 | 3.364 | 11.77 | +| Q19 | 0.20 | 0.829 | 1.71 | +| Q20 | 0.21 | 2.77 | 5.2 | +| Q21 | 1.17 | 4.47 | 10.34 | +| Q22 | 0.46 | 0.9 | 3.22 | +| **合计** | **19.64** | **51.253** | **223.33** | **结果说明** - 测试结果对应的数据集为scale 100, 约6亿条。 - 测试环境配置为用户常用配置,云服务器4台,16核 64G SSD,1 FE 3 BE 部署。 - 选用用户常见配置测试以降低用户选型评估成本,但整个测试过程中不会消耗如此多的硬件资源。 -- 测试结果为3次执行取平均值。并且数据经过充分的 compaction(如果在刚导入数据后立刻测试,则查询延迟可能高于本测试结果,compaction的速度正在持续优化中,未来会显著降低)。 -- 0.15 RC04 在 TPC-H 测试中 Q14 执行失败,无法完成查询。 +- Apache Doris 0.15 RC04 在 TPC-H 测试中 Q14 执行失败,无法完成查询。 ## 6. 环境准备 @@ -134,10 +131,10 @@ TPCH 22个测试查询语句 : [TPCH-Query-SQL](https://github.com/apache/dori ### 7.1 下载安装 TPC-H 数据生成工具 -执行以下脚本下载并编译 [tpch-tools](https://github.com/apache/doris/tree/master/tools/tpch-tools) 工具。 +执行以下脚本下载并编译 [tpch-tools](https://github.com/apache/incubator-doris/tree/master/tools/tpch-tools) 工具。 ```shell -sh bin/build-tpch-dbgen.sh +sh build-tpch-dbgen.sh ``` 安装成功后,将在 `TPC-H_Tools_v3.0.0/` 目录下生成 `dbgen` 二进制文件。 @@ -147,12 +144,12 @@ sh bin/build-tpch-dbgen.sh 执行以下脚本生成 TPC-H 数据集: ```shell -sh bin/gen-tpch-data.sh +sh gen-tpch-data.sh ``` -> 注1:通过 `sh bin/gen-tpch-data.sh -h` 查看脚本帮助。 +> 注1:通过 `sh gen-tpch-data.sh -h` 查看脚本帮助。 > -> 注2:数据会以 `.tbl` 为后缀生成在 `bin/tpch-data/` 目录下。文件总大小约100GB。生成时间可能在数分钟到1小时不等。 +> 注2:数据会以 `.tbl` 为后缀生成在 `tpch-data/` 目录下。文件总大小约100GB。生成时间可能在数分钟到1小时不等。 > > 注3:默认生成 100G 的标准测试数据集 @@ -160,7 +157,9 @@ sh bin/gen-tpch-data.sh #### 7.3.1 准备 `doris-cluster.conf` 文件 -在调用导入脚本前,需要将 FE 的 ip 端口等信息写在 `conf/doris-cluster.conf` 文件中。 +在调用导入脚本前,需要将 FE 的 ip 端口等信息写在 `doris-cluster.conf` 文件中。 + +文件位置和 `load-tpch-data.sh` 平级。 文件内容包括 FE 的 ip,HTTP 端口,用户名,密码以及待导入数据的 DB 名称: @@ -176,15 +175,15 @@ export USER='root' # Doris password export PASSWORD='' # The database where TPC-H tables located -export DB='tpch' +export DB='tpch1' ``` #### 7.3.2 执行以下脚本生成创建 TPC-H 表 ```shell -sh bin/create-tpch-tables.sh +sh create-tpch-tables.sh ``` -或者复制 [create-tpch-tables.sql](https://github.com/apache/doris/blob/master/tools/tpch-tools/ddl/create-tpch-tables.sql) 中的建表语句,在 Doris 中执行。 +或者复制 [create-tpch-tables.sql](https://github.com/apache/incubator-doris/blob/master/tools/tpch-tools/create-tpch-tables.sql) 中的建表语句,在 Doris 中执行。 ### 7.4 导入数据 @@ -192,12 +191,12 @@ sh bin/create-tpch-tables.sh 通过下面的命令执行数据导入: ```shell -sh bin/load-tpch-data.sh +sh ./load-tpch-data.sh ``` ### 7.5 检查导入数据 -执行下面的 SQL 语句检查导入的数据量上 上面的数据量是一致。 +执行下面的 SQL 语句检查导入的数据与上面的数据量是一致。 ```sql select count(*) from lineitem; @@ -213,10 +212,12 @@ select count(*) from revenue0; ### 7.6 查询测试 +## 7.6.1 执行查询脚本 + 执行上面的测试 SQL 或者 执行下面的命令 ``` -sh bin/run-tpch-queries.sh +./run-tpch-queries.sh ``` >注意: @@ -224,3 +225,655 @@ sh bin/run-tpch-queries.sh >1. 目前Doris的查询优化器和统计信息功能还不完善,所以我们在TPC-H中重写了一些查询以适应Doris的执行框架,但不影响结果的正确性 > >2. Doris 新的查询优化器将在后续的版本中发布 +>3. 执行查询之前设置 `set mem_exec_limit=8G` + +## 7.6.2 单个 SQL 执行 + +```sql +--Q1 +select /*+SET_VAR(exec_mem_limit=8589934592, parallel_fragment_exec_instance_num=8, enable_vectorized_engine=true, batch_size=4096, disable_join_reorder=false, enable_cost_based_join_reorder=false, enable_projection=false) */ + l_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 +from + lineitem +where + l_shipdate <= date '1998-12-01' - interval '90' day +group by + l_returnflag, + l_linestatus +order by + l_returnflag, + l_linestatus; + +--Q2 +select /*+SET_VAR(exec_mem_limit=8589934592, parallel_fragment_exec_instance_num=1, enable_vectorized_engine=true, batch_size=4096, disable_join_reorder=true, enable_cost_based_join_reorder=false, enable_projection=true) */ + s_acctbal, + s_name, + n_name, + p_partkey, + p_mfgr, + s_address, + s_phone, + s_comment +from + partsupp join + ( + select + ps_partkey as a_partkey, + min(ps_supplycost) as a_min + from + partsupp, + part, + supplier, + nation, + region + where + p_partkey = ps_partkey + and s_suppkey = ps_suppkey + and s_nationkey = n_nationkey + and n_regionkey = r_regionkey + and r_name = 'EUROPE' + and p_size = 15 + and p_type like '%BRASS' + group by a_partkey + ) A on ps_partkey = a_partkey and ps_supplycost=a_min , + part, + supplier, + nation, + region +where + p_partkey = ps_partkey + and s_suppkey = ps_suppkey + and p_size = 15 + and p_type like '%BRASS' + and s_nationkey = n_nationkey + and n_regionkey = r_regionkey + and r_name = 'EUROPE' + +order by + s_acctbal desc, + n_name, + s_name, + p_partkey +limit 100; + +--Q3 +select /*+SET_VAR(exec_mem_limit=8589934592, parallel_fragment_exec_instance_num=8, enable_vectorized_engine=true, batch_size=4096, disable_join_reorder=true, enable_cost_based_join_reorder=false, enable_projection=true, runtime_filter_wait_time_ms=10000) */ + l_orderkey, + sum(l_extendedprice * (1 - l_discount)) as revenue, + o_orderdate, + o_shippriority +from + ( + select l_orderkey, l_extendedprice, l_discount, o_orderdate, o_shippriority, o_custkey from + lineitem join orders + where l_orderkey = o_orderkey + and o_orderdate < date '1995-03-15' + and l_shipdate > date '1995-03-15' + ) t1 join customer c + on c.c_custkey = t1.o_custkey + where c_mktsegment = 'BUILDING' +group by + l_orderkey, + o_orderdate, + o_shippriority +order by + revenue desc, + o_orderdate +limit 10; + +--Q4 +select /*+SET_VAR(exec_mem_limit=8589934592, parallel_fragment_exec_instance_num=4, enable_vectorized_engine=true, batch_size=4096, disable_join_reorder=true, enable_cost_based_join_reorder=false, enable_projection=true) */ + o_orderpriority, + count(*) as order_count +from + ( + select + * + from + lineitem + where l_commitdate < l_receiptdate + ) t1 + right semi join orders + on t1.l_orderkey = o_orderkey +where + o_orderdate >= date '1993-07-01' + and o_orderdate < date '1993-07-01' + interval '3' month +group by + o_orderpriority +order by + o_orderpriority; + +--Q5 +select /*+SET_VAR(exec_mem_limit=8589934592, parallel_fragment_exec_instance_num=8, enable_vectorized_engine=true, batch_size=4096, disable_join_reorder=false, enable_cost_based_join_reorder=false, enable_projection=true) */ + n_name, + sum(l_extendedprice * (1 - l_discount)) as revenue +from + customer, + orders, + lineitem, + supplier, + nation, + region +where + c_custkey = o_custkey + and l_orderkey = o_orderkey + and l_suppkey = s_suppkey + and c_nationkey = s_nationkey + and s_nationkey = n_nationkey + and n_regionkey = r_regionkey + and r_name = 'ASIA' + and o_orderdate >= date '1994-01-01' + and o_orderdate < date '1994-01-01' + interval '1' year +group by + n_name +order by + revenue desc; + +--Q6 +select /*+SET_VAR(exec_mem_limit=8589934592, parallel_fragment_exec_instance_num=1, enable_vectorized_engine=true, batch_size=4096, disable_join_reorder=false, enable_cost_based_join_reorder=false, enable_projection=true) */ + sum(l_extendedprice * l_discount) as revenue +from + lineitem +where + l_shipdate >= date '1994-01-01' + and l_shipdate < date '1994-01-01' + interval '1' year + and l_discount between .06 - 0.01 and .06 + 0.01 + and l_quantity < 24; + +--Q7 +select /*+SET_VAR(exec_mem_limit=458589934592, parallel_fragment_exec_instance_num=2, enable_vectorized_engine=true, batch_size=4096, disable_join_reorder=false, enable_cost_based_join_reorder=false, enable_projection=true) */ + supp_nation, + cust_nation, + l_year, + sum(volume) as revenue +from + ( + select + n1.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 volume + from + supplier, + lineitem, + orders, + customer, + nation n1, + nation n2 + where + s_suppkey = l_suppkey + and o_orderkey = l_orderkey + and c_custkey = o_custkey + and s_nationkey = n1.n_nationkey + and c_nationkey = n2.n_nationkey + and ( + (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 by + supp_nation, + cust_nation, + l_year +order by + supp_nation, + cust_nation, + l_year; + +--Q8 + +select /*+SET_VAR(exec_mem_limit=8589934592, parallel_fragment_exec_instance_num=8, enable_vectorized_engine=true, batch_size=4096, disable_join_reorder=true, enable_cost_based_join_reorder=false, enable_projection=true) */ + o_year, + sum(case + when nation = 'BRAZIL' then volume + else 0 + end) / sum(volume) as mkt_share +from + ( + select + extract(year from o_orderdate) as o_year, + l_extendedprice * (1 - l_discount) as volume, + n2.n_name as nation + from + lineitem, + orders, + customer, + supplier, + part, + nation n1, + nation n2, + region + where + p_partkey = l_partkey + and s_suppkey = l_suppkey + and l_orderkey = o_orderkey + and o_custkey = c_custkey + and c_nationkey = n1.n_nationkey + and n1.n_regionkey = r_regionkey + and r_name = 'AMERICA' + and s_nationkey = n2.n_nationkey + and o_orderdate between date '1995-01-01' and date '1996-12-31' + and p_type = 'ECONOMY ANODIZED STEEL' + ) as all_nations +group by + o_year +order by + o_year; + +--Q9 +select/*+SET_VAR(exec_mem_limit=37179869184, parallel_fragment_exec_instance_num=2, enable_vectorized_engine=true, batch_size=4096, disable_join_reorder=false, enable_cost_based_join_reorder=false, enable_projection=true, enable_remove_no_conjuncts_runtime_filter_policy=true, runtime_filter_wait_time_ms=100000) */ + nation, + o_year, + sum(amount) as sum_profit +from + ( + select + n_name as nation, + extract(year from o_orderdate) as o_year, + l_extendedprice * (1 - l_discount) - ps_supplycost * l_quantity as amount + from + lineitem join orders on o_orderkey = l_orderkey + join[shuffle] part on p_partkey = l_partkey + join[shuffle] partsupp on ps_partkey = l_partkey + join[shuffle] supplier on s_suppkey = l_suppkey + join[broadcast] nation on s_nationkey = n_nationkey + where + ps_suppkey = l_suppkey and + p_name like '%green%' + ) as profit +group by + nation, + o_year +order by + nation, + o_year desc; + +--Q10 + +select /*+SET_VAR(exec_mem_limit=8589934592, parallel_fragment_exec_instance_num=4, enable_vectorized_engine=true, batch_size=4096, disable_join_reorder=true, enable_cost_based_join_reorder=false, enable_projection=true) */ + c_custkey, + c_name, + sum(t1.l_extendedprice * (1 - t1.l_discount)) as revenue, + c_acctbal, + n_name, + c_address, + c_phone, + c_comment +from + customer, + ( + select o_custkey,l_extendedprice,l_discount from lineitem, orders + where l_orderkey = o_orderkey + and o_orderdate >= date '1993-10-01' + and o_orderdate < date '1993-10-01' + interval '3' month + and l_returnflag = 'R' + ) t1, + nation +where + c_custkey = t1.o_custkey + and c_nationkey = n_nationkey +group by + c_custkey, + c_name, + c_acctbal, + c_phone, + n_name, + c_address, + c_comment +order by + revenue desc +limit 20; + +--Q11 +select /*+SET_VAR(exec_mem_limit=8589934592, parallel_fragment_exec_instance_num=2, enable_vectorized_engine=true, batch_size=4096, disable_join_reorder=false, enable_cost_based_join_reorder=true, enable_projection=true) */ + ps_partkey, + sum(ps_supplycost * ps_availqty) as value +from + partsupp, + ( + select s_suppkey + from supplier, nation + where s_nationkey = n_nationkey and n_name = 'GERMANY' + ) B +where + ps_suppkey = B.s_suppkey +group by + ps_partkey having + sum(ps_supplycost * ps_availqty) > ( + select + sum(ps_supplycost * ps_availqty) * 0.000002 + from + partsupp, + (select s_suppkey + from supplier, nation + where s_nationkey = n_nationkey and n_name = 'GERMANY' + ) A + where + ps_suppkey = A.s_suppkey + ) +order by + value desc; + +--Q12 + +select /*+SET_VAR(exec_mem_limit=8589934592, parallel_fragment_exec_instance_num=2, enable_vectorized_engine=true, batch_size=4096, disable_join_reorder=false, enable_cost_based_join_reorder=true, enable_projection=true) */ + l_shipmode, + sum(case + when o_orderpriority = '1-URGENT' + or o_orderpriority = '2-HIGH' + then 1 + else 0 + end) as high_line_count, + sum(case + when o_orderpriority <> '1-URGENT' + and o_orderpriority <> '2-HIGH' + then 1 + else 0 + end) as low_line_count +from + orders, + lineitem +where + o_orderkey = l_orderkey + and l_shipmode in ('MAIL', 'SHIP') + and l_commitdate < l_receiptdate + and l_shipdate < l_commitdate + and l_receiptdate >= date '1994-01-01' + and l_receiptdate < date '1994-01-01' + interval '1' year +group by + l_shipmode +order by + l_shipmode; + +--Q13 +select /*+SET_VAR(exec_mem_limit=45899345920, parallel_fragment_exec_instance_num=16, enable_vectorized_engine=true, batch_size=4096, disable_join_reorder=true, enable_cost_based_join_reorder=true, enable_projection=true) */ + c_count, + count(*) as custdist +from + ( + select + c_custkey, + count(o_orderkey) as c_count + from + orders right outer join customer on + c_custkey = o_custkey + and o_comment not like '%special%requests%' + group by + c_custkey + ) as c_orders +group by + c_count +order by + custdist desc, + c_count desc; + +--Q14 + +select /*+SET_VAR(exec_mem_limit=8589934592, parallel_fragment_exec_instance_num=8, enable_vectorized_engine=true, batch_size=4096, disable_join_reorder=true, enable_cost_based_join_reorder=true, enable_projection=true, runtime_filter_mode=OFF) */ + 100.00 * sum(case + when p_type like 'PROMO%' + then l_extendedprice * (1 - l_discount) + else 0 + end) / sum(l_extendedprice * (1 - l_discount)) as promo_revenue +from + part, + lineitem +where + l_partkey = p_partkey + and l_shipdate >= date '1995-09-01' + and l_shipdate < date '1995-09-01' + interval '1' month; + +--Q15 +select /*+SET_VAR(exec_mem_limit=8589934592, parallel_fragment_exec_instance_num=8, enable_vectorized_engine=true, batch_size=4096, disable_join_reorder=false, enable_cost_based_join_reorder=true, enable_projection=true) */ + s_suppkey, + s_name, + s_address, + s_phone, + total_revenue +from + supplier, + revenue0 +where + s_suppkey = supplier_no + and total_revenue = ( + select + max(total_revenue) + from + revenue0 + ) +order by + s_suppkey; + +--Q16 +select /*+SET_VAR(exec_mem_limit=8589934592, parallel_fragment_exec_instance_num=8, enable_vectorized_engine=true, batch_size=4096, disable_join_reorder=false, enable_cost_based_join_reorder=true, enable_projection=true) */ + p_brand, + p_type, + p_size, + count(distinct ps_suppkey) as supplier_cnt +from + partsupp, + part +where + p_partkey = ps_partkey + and 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 ( + select + s_suppkey + from + supplier + where + s_comment like '%Customer%Complaints%' + ) +group by + p_brand, + p_type, + p_size +order by + supplier_cnt desc, + p_brand, + p_type, + p_size; + +--Q17 +select /*+SET_VAR(exec_mem_limit=8589934592, parallel_fragment_exec_instance_num=1, enable_vectorized_engine=true, batch_size=4096, disable_join_reorder=false, enable_cost_based_join_reorder=true, enable_projection=true) */ + sum(l_extendedprice) / 7.0 as avg_yearly +from + lineitem join [broadcast] + part p1 on p1.p_partkey = l_partkey +where + p1.p_brand = 'Brand#23' + and p1.p_container = 'MED BOX' + and l_quantity < ( + select + 0.2 * avg(l_quantity) + from + lineitem join [broadcast] + part p2 on p2.p_partkey = l_partkey + where + l_partkey = p1.p_partkey + and p2.p_brand = 'Brand#23' + and p2.p_container = 'MED BOX' + ); + +--Q18 + +select /*+SET_VAR(exec_mem_limit=45899345920, parallel_fragment_exec_instance_num=4, enable_vectorized_engine=true, batch_size=4096, disable_join_reorder=true, enable_cost_based_join_reorder=true, enable_projection=true) */ + c_name, + c_custkey, + t3.o_orderkey, + t3.o_orderdate, + t3.o_totalprice, + sum(t3.l_quantity) +from +customer join +( + select * from + lineitem join + ( + select * from + orders left semi join + ( + select + l_orderkey + from + lineitem + group by + l_orderkey having sum(l_quantity) > 300 + ) t1 + on o_orderkey = t1.l_orderkey + ) t2 + on t2.o_orderkey = l_orderkey +) t3 +on c_custkey = t3.o_custkey +group by + c_name, + c_custkey, + t3.o_orderkey, + t3.o_orderdate, + t3.o_totalprice +order by + t3.o_totalprice desc, + t3.o_orderdate +limit 100; + +--Q19 + +select /*+SET_VAR(exec_mem_limit=8589934592, parallel_fragment_exec_instance_num=2, enable_vectorized_engine=true, batch_size=4096, disable_join_reorder=false, enable_cost_based_join_reorder=false, enable_projection=true) */ + sum(l_extendedprice* (1 - l_discount)) as revenue +from + lineitem, + part +where + ( + p_partkey = l_partkey + and p_brand = 'Brand#12' + and p_container in ('SM CASE', 'SM BOX', 'SM PACK', 'SM PKG') + and l_quantity >= 1 and l_quantity <= 1 + 10 + and p_size between 1 and 5 + and l_shipmode in ('AIR', 'AIR REG') + and l_shipinstruct = 'DELIVER IN PERSON' + ) + or + ( + p_partkey = l_partkey + and p_brand = 'Brand#23' + and p_container in ('MED BAG', 'MED BOX', 'MED PKG', 'MED PACK') + and l_quantity >= 10 and l_quantity <= 10 + 10 + and p_size between 1 and 10 + and l_shipmode in ('AIR', 'AIR REG') + and l_shipinstruct = 'DELIVER IN PERSON' + ) + or + ( + p_partkey = l_partkey + and p_brand = 'Brand#34' + and p_container in ('LG CASE', 'LG BOX', 'LG PACK', 'LG PKG') + and l_quantity >= 20 and l_quantity <= 20 + 10 + and p_size between 1 and 15 + and l_shipmode in ('AIR', 'AIR REG') + and l_shipinstruct = 'DELIVER IN PERSON' + ); + +--Q20 +select /*+SET_VAR(exec_mem_limit=8589934592, parallel_fragment_exec_instance_num=2, enable_vectorized_engine=true, batch_size=4096, disable_join_reorder=true, enable_cost_based_join_reorder=true, enable_projection=true, runtime_bloom_filter_size=551943) */ +s_name, s_address from +supplier left semi join +( + select * from + ( + select l_partkey,l_suppkey, 0.5 * sum(l_quantity) as l_q + from lineitem + where l_shipdate >= date '1994-01-01' + and l_shipdate < date '1994-01-01' + interval '1' year + group by l_partkey,l_suppkey + ) t2 join + ( + select ps_partkey, ps_suppkey, ps_availqty + from partsupp left semi join part + on ps_partkey = p_partkey and p_name like 'forest%' + ) t1 + on t2.l_partkey = t1.ps_partkey and t2.l_suppkey = t1.ps_suppkey + and t1.ps_availqty > t2.l_q +) t3 +on s_suppkey = t3.ps_suppkey +join nation +where s_nationkey = n_nationkey + and n_name = 'CANADA' +order by s_name; + +--Q21 +select /*+SET_VAR(exec_mem_limit=8589934592, parallel_fragment_exec_instance_num=4, enable_vectorized_engine=true, batch_size=4096, disable_join_reorder=true, enable_cost_based_join_reorder=true, enable_projection=true) */ +s_name, count(*) as numwait +from + lineitem l2 right semi join + ( + select * from + lineitem l3 right anti join + ( + select * from + orders join lineitem l1 on l1.l_orderkey = o_orderkey and o_orderstatus = 'F' + join + ( + select * from + supplier join nation + where s_nationkey = n_nationkey + and n_name = 'SAUDI ARABIA' + ) t1 + where t1.s_suppkey = l1.l_suppkey and l1.l_receiptdate > l1.l_commitdate + ) t2 + on l3.l_orderkey = t2.l_orderkey and l3.l_suppkey <> t2.l_suppkey and l3.l_receiptdate > l3.l_commitdate + ) t3 + on l2.l_orderkey = t3.l_orderkey and l2.l_suppkey <> t3.l_suppkey + +group by + t3.s_name +order by + numwait desc, + t3.s_name +limit 100; + +--Q21 + +with tmp as (select + avg(c_acctbal) as av + from + customer + where + c_acctbal > 0.00 + and substring(c_phone, 1, 2) in + ('13', '31', '23', '29', '30', '18', '17')) + +select /*+SET_VAR(exec_mem_limit=8589934592, parallel_fragment_exec_instance_num=4,runtime_bloom_filter_size=4194304) */ + cntrycode, + count(*) as numcust, + sum(c_acctbal) as totacctbal +from + ( + select + substring(c_phone, 1, 2) as cntrycode, + c_acctbal + from + orders right anti join customer c on o_custkey = c.c_custkey join tmp on c.c_acctbal > tmp.av + where + substring(c_phone, 1, 2) in + ('13', '31', '23', '29', '30', '18', '17') + ) as custsale +group by + cntrycode +order by + cntrycode; + +``` +